Full Code of newbee-ltd/newbee-mall-cloud for AI

main e2f89906e7bb cached
225 files
769.5 KB
276.1k tokens
756 symbols
1 requests
Download .txt
Showing preview only (978K chars total). Download the full file or copy to clipboard to get everything.
Repository: newbee-ltd/newbee-mall-cloud
Branch: main
Commit: e2f89906e7bb
Files: 225
Total size: 769.5 KB

Directory structure:
gitextract_bb6zddio/

├── .gitignore
├── LICENSE
├── README.md
├── newbee-mall-cloud-common/
│   ├── pom.xml
│   └── src/
│       └── main/
│           └── java/
│               └── ltd/
│                   └── common/
│                       └── cloud/
│                           └── newbee/
│                               ├── dto/
│                               │   ├── PageQueryUtil.java
│                               │   ├── PageResult.java
│                               │   ├── Result.java
│                               │   └── ResultGenerator.java
│                               ├── enums/
│                               │   ├── IndexConfigTypeEnum.java
│                               │   ├── NewBeeMallCategoryLevelEnum.java
│                               │   ├── NewBeeMallOrderStatusEnum.java
│                               │   ├── PayStatusEnum.java
│                               │   ├── PayTypeEnum.java
│                               │   └── ServiceResultEnum.java
│                               ├── exception/
│                               │   └── NewBeeMallException.java
│                               ├── pojo/
│                               │   ├── AdminUserToken.java
│                               │   └── MallUserToken.java
│                               └── util/
│                                   ├── BeanUtil.java
│                                   ├── MD5Util.java
│                                   ├── NewBeeMallUtils.java
│                                   ├── NumberUtil.java
│                                   └── SystemUtil.java
├── newbee-mall-cloud-gateway-admin/
│   ├── pom.xml
│   └── src/
│       └── main/
│           ├── java/
│           │   └── ltd/
│           │       └── gateway/
│           │           └── cloud/
│           │               └── newbee/
│           │                   ├── NewBeeMallCloudAdminGatewayApplication.java
│           │                   ├── config/
│           │                   │   ├── PolymerizeSwaggerProvider.java
│           │                   │   └── RedisConfig.java
│           │                   └── filter/
│           │                       └── ValidTokenGlobalFilter.java
│           └── resources/
│               └── application.properties
├── newbee-mall-cloud-gateway-mall/
│   ├── pom.xml
│   └── src/
│       └── main/
│           ├── java/
│           │   └── ltd/
│           │       └── gateway/
│           │           └── cloud/
│           │               └── newbee/
│           │                   ├── NewBeeMallCloudMallGatewayApplication.java
│           │                   ├── config/
│           │                   │   ├── PolymerizeSwaggerProvider.java
│           │                   │   └── RedisConfig.java
│           │                   └── filter/
│           │                       └── ValidMallUserTokenGlobalFilter.java
│           └── resources/
│               └── application.properties
├── newbee-mall-cloud-goods-service/
│   ├── newbee-mall-cloud-goods-api/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           └── java/
│   │               └── ltd/
│   │                   └── goods/
│   │                       └── cloud/
│   │                           └── newbee/
│   │                               ├── dto/
│   │                               │   ├── NewBeeMallGoodsDTO.java
│   │                               │   ├── StockNumDTO.java
│   │                               │   └── UpdateStockNumDTO.java
│   │                               └── openfeign/
│   │                                   └── NewBeeCloudGoodsServiceFeign.java
│   ├── newbee-mall-cloud-goods-web/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── ltd/
│   │           │       └── goods/
│   │           │           └── cloud/
│   │           │               └── newbee/
│   │           │                   ├── NewBeeMallCloudGoodsServiceApplication.java
│   │           │                   ├── config/
│   │           │                   │   ├── GoodsServiceExceptionHandler.java
│   │           │                   │   ├── GoodsServiceSwagger3Config.java
│   │           │                   │   ├── GoodsServiceWebMvcConfigurer.java
│   │           │                   │   ├── OpenFeignConfiguration.java
│   │           │                   │   ├── SeataProxyConfiguration.java
│   │           │                   │   ├── annotation/
│   │           │                   │   │   ├── TokenToAdminUser.java
│   │           │                   │   │   └── TokenToMallUser.java
│   │           │                   │   └── handler/
│   │           │                   │       ├── TokenToAdminUserMethodArgumentResolver.java
│   │           │                   │       └── TokenToMallUserMethodArgumentResolver.java
│   │           │                   ├── controller/
│   │           │                   │   ├── NewBeeAdminGoodsCategoryController.java
│   │           │                   │   ├── NewBeeAdminGoodsInfoController.java
│   │           │                   │   ├── NewBeeMallGoodsCategoryController.java
│   │           │                   │   ├── NewBeeMallGoodsController.java
│   │           │                   │   ├── param/
│   │           │                   │   │   ├── BatchIdParam.java
│   │           │                   │   │   ├── GoodsAddParam.java
│   │           │                   │   │   ├── GoodsCategoryAddParam.java
│   │           │                   │   │   ├── GoodsCategoryEditParam.java
│   │           │                   │   │   └── GoodsEditParam.java
│   │           │                   │   └── vo/
│   │           │                   │       ├── NewBeeMallGoodsDetailVO.java
│   │           │                   │       ├── NewBeeMallIndexCategoryVO.java
│   │           │                   │       ├── NewBeeMallSearchGoodsVO.java
│   │           │                   │       ├── SecondLevelCategoryVO.java
│   │           │                   │       └── ThirdLevelCategoryVO.java
│   │           │                   ├── dao/
│   │           │                   │   ├── GoodsCategoryMapper.java
│   │           │                   │   └── NewBeeMallGoodsMapper.java
│   │           │                   ├── entity/
│   │           │                   │   ├── GoodsCategory.java
│   │           │                   │   ├── LoginAdminUser.java
│   │           │                   │   ├── NewBeeMallGoods.java
│   │           │                   │   ├── StockNumDTO.java
│   │           │                   │   └── UpdateStockNumDTO.java
│   │           │                   └── service/
│   │           │                       ├── NewBeeMallCategoryService.java
│   │           │                       ├── NewBeeMallGoodsService.java
│   │           │                       └── impl/
│   │           │                           ├── NewBeeMallCategoryServiceImpl.java
│   │           │                           └── NewBeeMallGoodsServiceImpl.java
│   │           └── resources/
│   │               ├── application.properties
│   │               ├── logback.xml
│   │               └── mapper/
│   │                   ├── GoodsCategoryMapper.xml
│   │                   └── NewBeeMallGoodsMapper.xml
│   └── pom.xml
├── newbee-mall-cloud-order-service/
│   ├── newbee-mall-cloud-order-api/
│   │   └── pom.xml
│   ├── newbee-mall-cloud-order-web/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── ltd/
│   │           │       └── order/
│   │           │           └── cloud/
│   │           │               └── newbee/
│   │           │                   ├── NewBeeMallCloudOrderServiceApplication.java
│   │           │                   ├── config/
│   │           │                   │   ├── OpenFeignConfiguration.java
│   │           │                   │   ├── OrderServiceExceptionHandler.java
│   │           │                   │   ├── OrderServiceSwagger3Config.java
│   │           │                   │   ├── OrderServiceWebMvcConfigurer.java
│   │           │                   │   ├── SeataProxyConfiguration.java
│   │           │                   │   ├── annotation/
│   │           │                   │   │   ├── TokenToAdminUser.java
│   │           │                   │   │   └── TokenToMallUser.java
│   │           │                   │   └── handler/
│   │           │                   │       ├── TokenToAdminUserMethodArgumentResolver.java
│   │           │                   │       └── TokenToMallUserMethodArgumentResolver.java
│   │           │                   ├── controller/
│   │           │                   │   ├── NewBeeAdminOrderController.java
│   │           │                   │   ├── NewBeeMallOrderController.java
│   │           │                   │   ├── NewBeeMallUserAddressController.java
│   │           │                   │   ├── param/
│   │           │                   │   │   ├── BatchIdParam.java
│   │           │                   │   │   ├── SaveMallUserAddressParam.java
│   │           │                   │   │   ├── SaveOrderParam.java
│   │           │                   │   │   └── UpdateMallUserAddressParam.java
│   │           │                   │   └── vo/
│   │           │                   │       ├── NewBeeMallOrderDetailVO.java
│   │           │                   │       ├── NewBeeMallOrderItemVO.java
│   │           │                   │       ├── NewBeeMallOrderListVO.java
│   │           │                   │       └── NewBeeMallUserAddressVO.java
│   │           │                   ├── dao/
│   │           │                   │   ├── MallUserAddressMapper.java
│   │           │                   │   ├── NewBeeMallOrderAddressMapper.java
│   │           │                   │   ├── NewBeeMallOrderItemMapper.java
│   │           │                   │   └── NewBeeMallOrderMapper.java
│   │           │                   ├── entity/
│   │           │                   │   ├── LoginAdminUser.java
│   │           │                   │   ├── MallUserAddress.java
│   │           │                   │   ├── NewBeeMallOrder.java
│   │           │                   │   ├── NewBeeMallOrderAddress.java
│   │           │                   │   └── NewBeeMallOrderItem.java
│   │           │                   └── service/
│   │           │                       ├── NewBeeMallOrderService.java
│   │           │                       ├── NewBeeMallUserAddressService.java
│   │           │                       └── impl/
│   │           │                           ├── NewBeeMallOrderServiceImpl.java
│   │           │                           └── NewBeeMallUserAddressServiceImpl.java
│   │           └── resources/
│   │               ├── application.properties
│   │               ├── logback.xml
│   │               └── mapper/
│   │                   ├── MallUserAddressMapper.xml
│   │                   ├── NewBeeMallOrderAddressMapper.xml
│   │                   ├── NewBeeMallOrderItemMapper.xml
│   │                   └── NewBeeMallOrderMapper.xml
│   └── pom.xml
├── newbee-mall-cloud-recommend-service/
│   ├── newbee-mall-cloud-recommend-api/
│   │   └── pom.xml
│   ├── newbee-mall-cloud-recommend-web/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── ltd/
│   │           │       └── recommend/
│   │           │           └── cloud/
│   │           │               └── newbee/
│   │           │                   ├── NewBeeMallCloudRecommendServiceApplication.java
│   │           │                   ├── config/
│   │           │                   │   ├── OpenFeignConfiguration.java
│   │           │                   │   ├── RecommendServiceExceptionHandler.java
│   │           │                   │   ├── RecommendServiceSwagger3Config.java
│   │           │                   │   ├── RecommendServiceWebMvcConfigurer.java
│   │           │                   │   ├── annotation/
│   │           │                   │   │   └── TokenToAdminUser.java
│   │           │                   │   └── handler/
│   │           │                   │       └── TokenToAdminUserMethodArgumentResolver.java
│   │           │                   ├── controller/
│   │           │                   │   ├── NewBeeAdminCarouselController.java
│   │           │                   │   ├── NewBeeAdminIndexConfigController.java
│   │           │                   │   ├── NewBeeMallIndexController.java
│   │           │                   │   ├── param/
│   │           │                   │   │   ├── BatchIdParam.java
│   │           │                   │   │   ├── CarouselAddParam.java
│   │           │                   │   │   ├── CarouselEditParam.java
│   │           │                   │   │   ├── IndexConfigAddParam.java
│   │           │                   │   │   └── IndexConfigEditParam.java
│   │           │                   │   └── vo/
│   │           │                   │       ├── IndexInfoVO.java
│   │           │                   │       ├── NewBeeMallIndexCarouselVO.java
│   │           │                   │       ├── NewBeeMallIndexCategoryVO.java
│   │           │                   │       ├── NewBeeMallIndexConfigGoodsVO.java
│   │           │                   │       ├── SecondLevelCategoryVO.java
│   │           │                   │       └── ThirdLevelCategoryVO.java
│   │           │                   ├── dao/
│   │           │                   │   ├── CarouselMapper.java
│   │           │                   │   └── IndexConfigMapper.java
│   │           │                   ├── entity/
│   │           │                   │   ├── Carousel.java
│   │           │                   │   ├── IndexConfig.java
│   │           │                   │   └── LoginAdminUser.java
│   │           │                   └── service/
│   │           │                       ├── NewBeeMallCarouselService.java
│   │           │                       ├── NewBeeMallIndexConfigService.java
│   │           │                       └── impl/
│   │           │                           ├── NewBeeMallCarouselServiceImpl.java
│   │           │                           └── NewBeeMallIndexConfigServiceImpl.java
│   │           └── resources/
│   │               ├── application.properties
│   │               ├── logback.xml
│   │               └── mapper/
│   │                   ├── CarouselMapper.xml
│   │                   └── IndexConfigMapper.xml
│   └── pom.xml
├── newbee-mall-cloud-shop-cart-service/
│   ├── newbee-mall-cloud-shop-cart-api/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           └── java/
│   │               └── ltd/
│   │                   └── shopcart/
│   │                       └── cloud/
│   │                           └── newbee/
│   │                               ├── dto/
│   │                               │   └── NewBeeMallShoppingCartItemDTO.java
│   │                               └── openfeign/
│   │                                   └── NewBeeCloudShopCartServiceFeign.java
│   ├── newbee-mall-cloud-shop-cart-web/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── ltd/
│   │           │       └── shopcart/
│   │           │           └── cloud/
│   │           │               └── newbee/
│   │           │                   ├── NewBeeMallCloudShopCartServiceApplication.java
│   │           │                   ├── config/
│   │           │                   │   ├── OpenFeignConfiguration.java
│   │           │                   │   ├── SeataProxyConfiguration.java
│   │           │                   │   ├── ShopCartServiceExceptionHandler.java
│   │           │                   │   ├── ShopCartServiceSwagger3Config.java
│   │           │                   │   ├── ShopCartServiceWebMvcConfigurer.java
│   │           │                   │   ├── annotation/
│   │           │                   │   │   └── TokenToMallUser.java
│   │           │                   │   └── handler/
│   │           │                   │       └── TokenToMallUserMethodArgumentResolver.java
│   │           │                   ├── controller/
│   │           │                   │   ├── NewBeeMallShoppingCartController.java
│   │           │                   │   ├── param/
│   │           │                   │   │   ├── SaveCartItemParam.java
│   │           │                   │   │   └── UpdateCartItemParam.java
│   │           │                   │   └── vo/
│   │           │                   │       └── NewBeeMallShoppingCartItemVO.java
│   │           │                   ├── dao/
│   │           │                   │   └── NewBeeMallShoppingCartItemMapper.java
│   │           │                   ├── entity/
│   │           │                   │   └── NewBeeMallShoppingCartItem.java
│   │           │                   └── service/
│   │           │                       ├── NewBeeMallShoppingCartService.java
│   │           │                       └── impl/
│   │           │                           └── NewBeeMallShoppingCartServiceImpl.java
│   │           └── resources/
│   │               ├── application.properties
│   │               ├── logback.xml
│   │               └── mapper/
│   │                   └── NewBeeMallShoppingCartItemMapper.xml
│   └── pom.xml
├── newbee-mall-cloud-user-service/
│   ├── newbee-mall-cloud-user-api/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           └── java/
│   │               └── ltd/
│   │                   └── user/
│   │                       └── cloud/
│   │                           └── newbee/
│   │                               ├── dto/
│   │                               │   └── MallUserDTO.java
│   │                               └── openfeign/
│   │                                   └── NewBeeCloudUserServiceFeign.java
│   ├── newbee-mall-cloud-user-web/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── ltd/
│   │           │       └── user/
│   │           │           └── cloud/
│   │           │               └── newbee/
│   │           │                   ├── NewBeeMallCloudUserServiceApplication.java
│   │           │                   ├── config/
│   │           │                   │   ├── RedisConfig.java
│   │           │                   │   ├── UserServiceExceptionHandler.java
│   │           │                   │   ├── UserServiceWebMvcConfigurer.java
│   │           │                   │   ├── UserSwagger3Config.java
│   │           │                   │   ├── annotation/
│   │           │                   │   │   ├── TokenToAdminUser.java
│   │           │                   │   │   └── TokenToMallUser.java
│   │           │                   │   └── handler/
│   │           │                   │       ├── TokenToAdminUserMethodArgumentResolver.java
│   │           │                   │       └── TokenToMallUserMethodArgumentResolver.java
│   │           │                   ├── controller/
│   │           │                   │   ├── NewBeeMallCloudAdminUserController.java
│   │           │                   │   ├── NewBeeMallCloudPersonalController.java
│   │           │                   │   ├── param/
│   │           │                   │   │   ├── AdminLoginParam.java
│   │           │                   │   │   ├── MallUserLoginParam.java
│   │           │                   │   │   ├── MallUserRegisterParam.java
│   │           │                   │   │   ├── MallUserUpdateParam.java
│   │           │                   │   │   ├── UpdateAdminNameParam.java
│   │           │                   │   │   └── UpdateAdminPasswordParam.java
│   │           │                   │   └── vo/
│   │           │                   │       └── NewBeeMallUserVO.java
│   │           │                   ├── dao/
│   │           │                   │   ├── AdminUserMapper.java
│   │           │                   │   └── MallUserMapper.java
│   │           │                   ├── entity/
│   │           │                   │   ├── AdminUser.java
│   │           │                   │   └── MallUser.java
│   │           │                   └── service/
│   │           │                       ├── AdminUserService.java
│   │           │                       ├── NewBeeMallUserService.java
│   │           │                       └── impl/
│   │           │                           ├── AdminUserServiceImpl.java
│   │           │                           └── NewBeeMallUserServiceImpl.java
│   │           └── resources/
│   │               ├── application.properties
│   │               ├── logback.xml
│   │               └── mapper/
│   │                   ├── AdminUserMapper.xml
│   │                   └── MallUserMapper.xml
│   └── pom.xml
├── pom.xml
└── static-files/
    ├── newbee_mall_cloud_cart_db.sql
    ├── newbee_mall_cloud_goods_db.sql
    ├── newbee_mall_cloud_order_db.sql
    ├── newbee_mall_cloud_recommend_db.sql
    └── newbee_mall_cloud_user_db.sql

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitignore
================================================
/target/
!.mvn/wrapper/maven-wrapper.jar

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr

### NetBeans ###
/nbproject/private/
/build/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/

================================================
FILE: LICENSE
================================================
                    GNU GENERAL PUBLIC LICENSE
                       Version 3, 29 June 2007

 Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

                            Preamble

  The GNU General Public License is a free, copyleft license for
software and other kinds of works.

  The licenses for most software and other practical works are designed
to take away your freedom to share and change the works.  By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users.  We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors.  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.

  To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights.  Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received.  You must make sure that they, too, receive
or can get the source code.  And you must show them these terms so they
know their rights.

  Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.

  For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software.  For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.

  Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so.  This is fundamentally incompatible with the aim of
protecting users' freedom to change the software.  The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable.  Therefore, we
have designed this version of the GPL to prohibit the practice for those
products.  If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.

  Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary.  To prevent this, the GPL assures that
patents cannot be used to render the program non-free.

  The precise terms and conditions for copying, distribution and
modification follow.

                       TERMS AND CONDITIONS

  0. Definitions.

  "This License" refers to version 3 of the GNU General Public License.

  "Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.

  "The Program" refers to any copyrightable work licensed under this
License.  Each licensee is addressed as "you".  "Licensees" and
"recipients" may be individuals or organizations.

  To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy.  The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.

  A "covered work" means either the unmodified Program or a work based
on the Program.

  To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy.  Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.

  To "convey" a work means any kind of propagation that enables other
parties to make or receive copies.  Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.

  An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License.  If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.

  1. Source Code.

  The "source code" for a work means the preferred form of the work
for making modifications to it.  "Object code" means any non-source
form of a work.

  A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.

  The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form.  A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.

  The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities.  However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work.  For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.

  The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.

  The Corresponding Source for a work in source code form is that
same work.

  2. Basic Permissions.

  All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met.  This License explicitly affirms your unlimited
permission to run the unmodified Program.  The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work.  This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.

  You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force.  You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright.  Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.

  Conveying under any other circumstances is permitted solely under
the conditions stated below.  Sublicensing is not allowed; section 10
makes it unnecessary.

  3. Protecting Users' Legal Rights From Anti-Circumvention Law.

  No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.

  When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.

  4. Conveying Verbatim Copies.

  You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.

  You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.

  5. Conveying Modified Source Versions.

  You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:

    a) The work must carry prominent notices stating that you modified
    it, and giving a relevant date.

    b) The work must carry prominent notices stating that it is
    released under this License and any conditions added under section
    7.  This requirement modifies the requirement in section 4 to
    "keep intact all notices".

    c) You must license the entire work, as a whole, under this
    License to anyone who comes into possession of a copy.  This
    License will therefore apply, along with any applicable section 7
    additional terms, to the whole of the work, and all its parts,
    regardless of how they are packaged.  This License gives no
    permission to license the work in any other way, but it does not
    invalidate such permission if you have separately received it.

    d) If the work has interactive user interfaces, each must display
    Appropriate Legal Notices; however, if the Program has interactive
    interfaces that do not display Appropriate Legal Notices, your
    work need not make them do so.

  A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit.  Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.

  6. Conveying Non-Source Forms.

  You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:

    a) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by the
    Corresponding Source fixed on a durable physical medium
    customarily used for software interchange.

    b) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by a
    written offer, valid for at least three years and valid for as
    long as you offer spare parts or customer support for that product
    model, to give anyone who possesses the object code either (1) a
    copy of the Corresponding Source for all the software in the
    product that is covered by this License, on a durable physical
    medium customarily used for software interchange, for a price no
    more than your reasonable cost of physically performing this
    conveying of source, or (2) access to copy the
    Corresponding Source from a network server at no charge.

    c) Convey individual copies of the object code with a copy of the
    written offer to provide the Corresponding Source.  This
    alternative is allowed only occasionally and noncommercially, and
    only if you received the object code with such an offer, in accord
    with subsection 6b.

    d) Convey the object code by offering access from a designated
    place (gratis or for a charge), and offer equivalent access to the
    Corresponding Source in the same way through the same place at no
    further charge.  You need not require recipients to copy the
    Corresponding Source along with the object code.  If the place to
    copy the object code is a network server, the Corresponding Source
    may be on a different server (operated by you or a third party)
    that supports equivalent copying facilities, provided you maintain
    clear directions next to the object code saying where to find the
    Corresponding Source.  Regardless of what server hosts the
    Corresponding Source, you remain obligated to ensure that it is
    available for as long as needed to satisfy these requirements.

    e) Convey the object code using peer-to-peer transmission, provided
    you inform other peers where the object code and Corresponding
    Source of the work are being offered to the general public at no
    charge under subsection 6d.

  A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.

  A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling.  In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage.  For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product.  A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.

  "Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source.  The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.

  If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information.  But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).

  The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed.  Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.

  Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.

  7. Additional Terms.

  "Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law.  If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.

  When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it.  (Additional permissions may be written to require their own
removal in certain cases when you modify the work.)  You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.

  Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:

    a) Disclaiming warranty or limiting liability differently from the
    terms of sections 15 and 16 of this License; or

    b) Requiring preservation of specified reasonable legal notices or
    author attributions in that material or in the Appropriate Legal
    Notices displayed by works containing it; or

    c) Prohibiting misrepresentation of the origin of that material, or
    requiring that modified versions of such material be marked in
    reasonable ways as different from the original version; or

    d) Limiting the use for publicity purposes of names of licensors or
    authors of the material; or

    e) Declining to grant rights under trademark law for use of some
    trade names, trademarks, or service marks; or

    f) Requiring indemnification of licensors and authors of that
    material by anyone who conveys the material (or modified versions of
    it) with contractual assumptions of liability to the recipient, for
    any liability that these contractual assumptions directly impose on
    those licensors and authors.

  All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10.  If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term.  If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.

  If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.

  Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.

  8. Termination.

  You may not propagate or modify a covered work except as expressly
provided under this License.  Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).

  However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.

  Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.

  Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License.  If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.

  9. Acceptance Not Required for Having Copies.

  You are not required to accept this License in order to receive or
run a copy of the Program.  Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance.  However,
nothing other than this License grants you permission to propagate or
modify any covered work.  These actions infringe copyright if you do
not accept this License.  Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.

  10. Automatic Licensing of Downstream Recipients.

  Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License.  You are not responsible
for enforcing compliance by third parties with this License.

  An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations.  If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.

  You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License.  For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.

  11. Patents.

  A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based.  The
work thus licensed is called the contributor's "contributor version".

  A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version.  For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.

  Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.

  In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement).  To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.

  If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients.  "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.

  If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.

  A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License.  You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.

  Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.

  12. No Surrender of Others' Freedom.

  If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all.  For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.

  13. Use with the GNU Affero General Public License.

  Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work.  The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.

  14. Revised Versions of this License.

  The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

  Each version is given a distinguishing version number.  If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation.  If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.

  If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.

  Later license versions may give you additional or different
permissions.  However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.

  15. Disclaimer of Warranty.

  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

  16. Limitation of Liability.

  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.

  17. Interpretation of Sections 15 and 16.

  If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.

                     END OF TERMS AND CONDITIONS

            How to Apply These Terms to Your New Programs

  If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.

  To do so, attach the following notices to the program.  It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

    <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.

Also add information on how to contact you by electronic and paper mail.

  If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:

    <program>  Copyright (C) <year>  <name of author>
    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License.  Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".

  You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<https://www.gnu.org/licenses/>.

  The GNU General Public License does not permit incorporating your program
into proprietary programs.  If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library.  If this is what you want to do, use the GNU Lesser General
Public License instead of this License.  But first, please read
<https://www.gnu.org/licenses/why-not-lgpl.html>.


================================================
FILE: README.md
================================================
![newbee-mall-cloud-alibaba](./static-files/newbee-mall-cloud-alibaba-l.png)

![Build Status](https://img.shields.io/badge/build-passing-green.svg)
![Version 4.0.0](https://img.shields.io/badge/version-4.0.0-yellow.svg)
[![License](https://img.shields.io/badge/license-GPL3.0-blue.svg)](https://github.com/newbee-ltd/newbee-mall-cloud/blob/main/LICENSE)

newbee-mall-cloud 项目是新蜂商城 newbee-mall 项目的微服务版本,一款基于 Spring Cloud Alibaba + Nacos + Sentinel + Seata + Spring Cloud Gateway + OpenFeign + Spring Cloud Seluth + Zipkin + ELK 等技术的大型微服务实战项目。

当前分支的 Spring Boot 版本为 2.6.3,Spring Cloud 版本为 2021.0.1,想要学习和使用其它版本可以直接点击下方的分支名称跳转至对应的仓库分支中。

|                                              分支名称                                              | Spring Boot Version | Spring Cloud Version | Spring Cloud Alibaba Version |
|:----------------------------------------------------------------------------------------------:|:----------------:|:----------------:|:----------------:|
|                    [main](https://github.com/newbee-ltd/newbee-mall-cloud)                     | 2.6.3               | 2021.0.1            | 2021.0.1.0                   |
|       [2022.x](https://github.com/newbee-ltd/newbee-mall-cloud/tree/spring-cloud-2022.x)       | 3.0.2               | 2022.0.0            | 2022.0.0.0                        |

2019 年开源了第一个单体版本,由最初新蜂商城单体项目,逐步过渡到前后端分离和微服务架构的项目,到现在已经“开枝散叶”,成长为一系列的项目集合,下图为新蜂商城项目由 2019 年至 2023 年的开源历程。由基础项目慢慢优化,不断地增加技术栈,让用户学习到越来越多知识点的同时,对开源作者的技术提升也是一个很大的帮助。

![newbee-mall-course-2023](./static-files/newbee-mall-course-2023.png)

**坚持不易,如果觉得项目还不错的话可以给项目一个 Star 吧,也是对我自 2019 年开始一直更新这个项目的一种鼓励啦,谢谢各位的支持。**

| 项目名称             | 仓库地址                                                     | 备注                                                         |
| :------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| newbee-mall          | [newbee-mall in GitHub](https://github.com/newbee-ltd/newbee-mall)<br>[newbee-mall in Gitee](https://gitee.com/newbee-ltd/newbee-mall) | 初始版本、Spring Boot、Thymeleaf、MyBatis、MySQL             |
| newbee-mall-plus     | [newbee-mall-plus in GitHub](https://github.com/newbee-ltd/newbee-mall-plus)<br/>[newbee-mall-plus in Gitee](https://gitee.com/newbee-ltd/newbee-mall-plus) | 升级版本、优惠券、秒杀、支付、Spring Boot、Thymeleaf、MyBatis、MySQL、Redis |
| newbee-mall-cloud    | [newbee-mall-cloud in GitHub](https://github.com/newbee-ltd/newbee-mall-cloud)<br/>[newbee-mall-cloud in Gitee](https://gitee.com/newbee-ltd/newbee-mall-cloud) | 微服务版本、分布式事务、Spring Cloud Alibaba、Nacos、Sentinel、OpenFeign、Seata |
| newbee-mall-api      | [newbee-mall-api in GitHub](https://github.com/newbee-ltd/newbee-mall-api)<br/>[newbee-mall-api in Gitee](https://gitee.com/newbee-ltd/newbee-mall-api) | 前后端分离、Spring Boot、MyBatis、Swagger、MySQL             |
| newbee-mall-api-go   | [newbee-mall-api-go in GitHub](https://github.com/newbee-ltd/newbee-mall-api-go)<br/>[newbee-mall-api-go in Gitee](https://gitee.com/newbee-ltd/newbee-mall-api-go) | 前后端分离、Go、Gin、MySQL                                   |
| newbee-mall-vue-app  | [newbee-mall-vue-app in GitHub](https://github.com/newbee-ltd/newbee-mall-vue-app)<br/>[newbee-mall-vue-app in Gitee](https://gitee.com/newbee-ltd/newbee-mall-vue-app) | 前后端分离、Vue2、Vant                                       |
| newbee-mall-vue3-app | [newbee-mall-vue3-app in GitHub](https://github.com/newbee-ltd/newbee-mall-vue3-app)<br/>[newbee-mall-vue3-app in Gitee](https://gitee.com/newbee-ltd/newbee-mall-vue3-app) | 前后端分离、Vue3、Vue-Router4、Pinia、Vant4                  |
| vue3-admin           | [vue3-admin in GitHub](https://github.com/newbee-ltd/vue3-admin)<br/>[vue3-admin in Gitee](https://gitee.com/newbee-ltd/vue3-admin) | 前后端分离、Vue3、Element-Plus、Vue-Router4、Vite            |

## 技术选型

当前分支下的开发框架选择如下所示。

| 开发框架             | 版本       |
| :----------------: | :----------------: |
| Spring Boot          | 2.6.3      |
| Spring Cloud         | 2021.0.1   |
| Spring Cloud Alibaba | 2021.0.1.0 |
| MyBatis              | 3.5.9      |
| Swagger              | 3.0.0      |
| Lombok               | 1.18.16    |

当前分支下的微服务组件技术选型如下所示。

|        技术        |            组件实现             |   版本   |  备注  |
| :----------------: | :-----------------------------: |:------:| :----: |
| 服务注册与服务发现 |              Nacos              | 1.4.2  | 已整合 |
|      配置中心      |              Nacos              | 1.4.2  | 已整合 |
|      服务通信      |           Open Feign            | 3.1.1  | 已整合 |
|     负载均衡器     |    Spring Cloud Loadbalancer    | 3.1.1  | 已整合 |
|      服务网关      |      Spring Cloud Gateway       | 3.1.1  | 已整合 |
|       断路器       |            Sentinel             | 1.8.4  | 已整合 |
|      链路追踪      |   Spring Cloud Sleuth、Zipkin   | 3.1.1  | 已整合 |
|     分布式事务     |              Seata              | 1.4.2  | 已整合 |
|      日志中心      | ElasticSearch、Logstash、Kibana | 7.17.8 | 已整合 |

![technology-selection](./static-files/newbee-mall-cloud-technology-selection.png)

## 架构图简版

![simple-architecture](./static-files/newbee-mall-cloud-architecture.png)

## 开发及部署文档

1. [**Spring Cloud Alibaba 项目实战:点亮微服务技能点!**](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
2. [项目须知和课程约定](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
3. [漫谈微服务架构(一)](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
4. [漫谈微服务架构(二)](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
5. [漫谈微服务架构(三)](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
6. [微服务落地一站式解决方案——Spring Cloud](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
7. [实战基础1-代码运行环境及开发工具介绍](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
8. [实战基础2-Spring Boot 开发介绍及Spring Cloud Alibaba模板项目构建](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
9. [服务通信基础讲解](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
10. [微服务架构中的服务治理](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
11. [Nacos安装与配置](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
12. [Nacos整合之服务注册编码实践](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
13. [Nacos整合之服务发现编码实践](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
13. [(补充章节)谈一谈配置中心](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
13. [(补充章节)整合Nacos配置中心编码实践](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
13. [(补充章节)配置动态刷新及多配置读取编码实践](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
14. [服务通信之负载均衡器](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
15. [负载均衡器的源码分析及自定义负载均衡算法](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
16. [服务治理与服务通信总结](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
17. [OpenFeign介绍与整合](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
18. [OpenFeign参数传递编码实践](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
19. [服务网关之Spring Cloud Gateway](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
20. [整合Spring Cloud Gateway编码实践](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
21. [服务网关Spring Cloud Gateway之Predicate(断言)](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
22. [服务网关Spring Cloud Gateway之Filter(过滤器)](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
23. [微服务最终实战项目的启动和运行注意事项](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
24. [最终实战项目的功能介绍与功能演示](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
25. [分布式事务问题演示](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
26. [分布式事务解决方案及Seata搭建](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
27. [整合Seata编码实践](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
28. [Seata的运行流程分析](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
29. [服务容错之限流与熔断](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
30. [服务容错之Sentinel限流配置实践](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
31. [服务容错之Sentinel降级熔断配置实践](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
32. [链路追踪之Sleuth+Zipkin整合](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
33. [从零到一搭建微服务项目编码实战(一)](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
34. [从零到一搭建微服务项目编码实战(二)](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
35. [从零到一搭建微服务项目编码实战(三)](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
36. [从零到一搭建微服务项目编码实战(四)](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
37. [从零到一搭建微服务项目编码实战(五)](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
38. [从零到一搭建微服务项目编码实战(六)](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
39. [从零到一搭建微服务项目编码实战(七)](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
40. [从零到一搭建微服务项目编码实战(八)](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
41. [从零到一搭建微服务项目编码实战(九)](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
42. [从零到一搭建微服务项目编码实战(十)](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
43. [从零到一搭建微服务项目编码实战(十一)](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
44. [从零到一搭建微服务项目编码实战(十二)](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
45. [从零到一搭建微服务项目编码实战(十三)](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
46. [从零到一搭建微服务项目编码实战(十四)](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
47. [从零到一搭建微服务项目编码实战(十五)](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
49. [(补充章节)Spring Cloud Gateway聚合Swagger接口](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
50. [(补充章节)微服务架构实战项目中整合Seata](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
51. [(补充章节)微服务架构实战项目打包及部署](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
52. [(补充章节)微服务架构实战项目中整合Sentinel](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
53. [(补充章节)微服务架构实战项目中整合Seluth、Zipkin](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
54. [(补充章节)链路追踪之ELK日志中心搭建](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
55. [(补充章节)微服务架构实战项目中整合ELK日志中心](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)
55. [课程总结](https://juejin.cn/book/7085254558678515742?suid=1996368849416216&source=android)

## 联系作者

关注公众号:**程序员十三**,回复"勾搭"进群交流。

![wx-gzh](https://newbee-mall.oss-cn-beijing.aliyuncs.com/wx-gzh/%E7%A8%8B%E5%BA%8F%E5%91%98%E5%8D%81%E4%B8%89-%E5%85%AC%E4%BC%97%E5%8F%B7.png)

> 大家有任何问题或者建议都可以在 [issues](https://github.com/newbee-ltd/newbee-mall-cloud/issues) 中反馈给我,我会慢慢完善这个项目。

- 我的邮箱:2449207463@qq.com
- QQ技术交流群:791509631

> newbee-mall-cloud 在 GitHub 和国内的码云都创建了代码仓库,如果有人访问 GitHub 比较慢的话,建议在 Gitee 上查看该项目,两个仓库会保持同步更新。

- [newbee-mall-cloud in GitHub](https://github.com/newbee-ltd/newbee-mall-cloud)
- [newbee-mall-cloud in Gitee](https://gitee.com/newbee-ltd/newbee-mall-cloud)

## 软件著作权

本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!

## 感谢

- [spring-projects](https://github.com/spring-projects/spring-boot)
- [spring-cloud](https://github.com/spring-cloud)
- [spring-cloud-alibaba](https://github.com/alibaba/spring-cloud-alibaba)
- [alibaba](https://github.com/alibaba)
- [seata](https://github.com/seata/seata)
- [elasticsearch](https://github.com/elastic/elasticsearch)
- [mybatis](https://github.com/mybatis/mybatis-3)
- [projectlombok](https://github.com/projectlombok/lombok)
- [swagger-api](https://github.com/swagger-api)


================================================
FILE: newbee-mall-cloud-common/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!--  @author 程序员十三
      @qq交流群 791509631
      @email 2449207463@qq.com
      @link https://github.com/newbee-ltd -->
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>ltd.newbee.cloud</groupId>
    <artifactId>newbee-mall-cloud-common</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>
    <name>newbee-mall-cloud-common</name>
    <description>公共模块</description>

    <parent>
        <groupId>ltd.newbee.cloud</groupId>
        <artifactId>newbee-mall-cloud</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${lombok.version}</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
        </dependency>

        <dependency>
            <groupId>io.swagger</groupId>
            <artifactId>swagger-annotations</artifactId>
            <version>1.5.20</version>
            <scope>compile</scope>
        </dependency>

    </dependencies>
    <!--  @author 程序员十三
      @qq交流群 791509631
      @email 2449207463@qq.com
      @link https://github.com/newbee-ltd -->
</project>


================================================
FILE: newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/dto/PageQueryUtil.java
================================================
package ltd.common.cloud.newbee.dto;

import java.util.LinkedHashMap;
import java.util.Map;

/**
 * 分页查询参数
 *
 * @author 13
 * @qq交流群 796794009
 * @email 2449207463@qq.com
 * @link https://github.com/newbee-ltd
 */
public class PageQueryUtil extends LinkedHashMap<String, Object> {
    //当前页码
    private int page;
    //每页条数
    private int limit;

    public PageQueryUtil(Map<String, Object> params) {
        this.putAll(params);

        //分页参数
        this.page = Integer.parseInt(params.get("page").toString());
        this.limit = Integer.parseInt(params.get("limit").toString());
        this.put("start", (page - 1) * limit);
        this.put("page", page);
        this.put("limit", limit);
    }


    public int getPage() {
        return page;
    }

    public void setPage(int page) {
        this.page = page;
    }

    public int getLimit() {
        return limit;
    }

    public void setLimit(int limit) {
        this.limit = limit;
    }

    @Override
    public String toString() {
        return "PageUtil{" +
                "page=" + page +
                ", limit=" + limit +
                '}';
    }
}


================================================
FILE: newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/dto/PageResult.java
================================================
package ltd.common.cloud.newbee.dto;

import io.swagger.annotations.ApiModelProperty;

import java.io.Serializable;
import java.util.List;

/**
 * 分页工具类
 *
 * @author 13
 * @qq交流群 796794009
 * @email 2449207463@qq.com
 * @link https://github.com/newbee-ltd
 */
public class PageResult<T> implements Serializable {

    @ApiModelProperty("总记录数")
    private int totalCount;

    @ApiModelProperty("每页记录数")
    private int pageSize;

    @ApiModelProperty("总页数")
    private int totalPage;

    @ApiModelProperty("当前页数")
    private int currPage;

    @ApiModelProperty("列表数据")
    private List<T> list;

    /**
     * 分页
     *
     * @param list       列表数据
     * @param totalCount 总记录数
     * @param pageSize   每页记录数
     * @param currPage   当前页数
     */
    public PageResult(List<T> list, int totalCount, int pageSize, int currPage) {
        this.list = list;
        this.totalCount = totalCount;
        this.pageSize = pageSize;
        this.currPage = currPage;
        this.totalPage = (int) Math.ceil((double) totalCount / pageSize);
    }

    public int getTotalCount() {
        return totalCount;
    }

    public void setTotalCount(int totalCount) {
        this.totalCount = totalCount;
    }

    public int getPageSize() {
        return pageSize;
    }

    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }

    public int getTotalPage() {
        return totalPage;
    }

    public void setTotalPage(int totalPage) {
        this.totalPage = totalPage;
    }

    public int getCurrPage() {
        return currPage;
    }

    public void setCurrPage(int currPage) {
        this.currPage = currPage;
    }

    public List<T> getList() {
        return list;
    }

    public void setList(List<T> list) {
        this.list = list;
    }

}


================================================
FILE: newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/dto/Result.java
================================================
package ltd.common.cloud.newbee.dto;

import io.swagger.annotations.ApiModelProperty;

import java.io.Serializable;

/**
 * @author 13
 * @qq交流群 796794009
 * @email 2449207463@qq.com
 * @link https://github.com/newbee-ltd
 */
public class Result<T> implements Serializable {
    private static final long serialVersionUID = 1L;

    //业务码,比如成功、失败、权限不足等 code,可自行定义
    @ApiModelProperty("返回码")
    private int resultCode;
    //返回信息,后端在进行业务处理后返回给前端一个提示信息,可自行定义
    @ApiModelProperty("返回信息")
    private String message;
    //数据结果,泛型,可以是列表、单个对象、数字、布尔值等
    @ApiModelProperty("返回数据")
    private T data;

    public Result() {
    }

    public Result(int resultCode, String message) {
        this.resultCode = resultCode;
        this.message = message;
    }

    public int getResultCode() {
        return resultCode;
    }

    public void setResultCode(int resultCode) {
        this.resultCode = resultCode;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public T getData() {
        return data;
    }

    public void setData(T data) {
        this.data = data;
    }

    @Override
    public String toString() {
        return "Result{" +
                "resultCode=" + resultCode +
                ", message='" + message + '\'' +
                ", data=" + data +
                '}';
    }
}


================================================
FILE: newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/dto/ResultGenerator.java
================================================
package ltd.common.cloud.newbee.dto;

import org.springframework.util.StringUtils;

/**
 * 响应结果生成工具
 *
 * @author 13
 * @qq交流群 796794009
 * @email 2449207463@qq.com
 * @link https://github.com/newbee-ltd
 */
public class ResultGenerator {
    private static final String DEFAULT_SUCCESS_MESSAGE = "SUCCESS";
    private static final String DEFAULT_FAIL_MESSAGE = "FAIL";
    private static final int RESULT_CODE_SUCCESS = 200;
    private static final int RESULT_CODE_SERVER_ERROR = 500;

    public static Result genSuccessResult() {
        Result result = new Result();
        result.setResultCode(RESULT_CODE_SUCCESS);
        result.setMessage(DEFAULT_SUCCESS_MESSAGE);
        return result;
    }

    public static Result genSuccessResult(String message) {
        Result result = new Result();
        result.setResultCode(RESULT_CODE_SUCCESS);
        result.setMessage(message);
        return result;
    }

    public static Result genSuccessResult(Object data) {
        Result result = new Result();
        result.setResultCode(RESULT_CODE_SUCCESS);
        result.setMessage(DEFAULT_SUCCESS_MESSAGE);
        result.setData(data);
        return result;
    }

    public static Result genFailResult(String message) {
        Result result = new Result();
        result.setResultCode(RESULT_CODE_SERVER_ERROR);
        if (!StringUtils.hasText(message)) {
            result.setMessage(DEFAULT_FAIL_MESSAGE);
        } else {
            result.setMessage(message);
        }
        return result;
    }

    public static Result genErrorResult(int code, String message) {
        Result result = new Result();
        result.setResultCode(code);
        result.setMessage(message);
        return result;
    }
}


================================================
FILE: newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/enums/IndexConfigTypeEnum.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.common.cloud.newbee.enums;

/**
 * @author 13
 * @qq交流群 796794009
 * @email 2449207463@qq.com
 * @link https://github.com/newbee-ltd
 * @apiNote 首页配置项 1-搜索框热搜 2-搜索下拉框热搜 3-(首页)热销商品 4-(首页)新品上线 5-(首页)为你推荐
 */
public enum IndexConfigTypeEnum {

    DEFAULT(0, "DEFAULT"),
    INDEX_SEARCH_HOTS(1, "INDEX_SEARCH_HOTS"),
    INDEX_SEARCH_DOWN_HOTS(2, "INDEX_SEARCH_DOWN_HOTS"),
    INDEX_GOODS_HOT(3, "INDEX_GOODS_HOTS"),
    INDEX_GOODS_NEW(4, "INDEX_GOODS_NEW"),
    INDEX_GOODS_RECOMMOND(5, "INDEX_GOODS_RECOMMOND");

    private int type;

    private String name;

    IndexConfigTypeEnum(int type, String name) {
        this.type = type;
        this.name = name;
    }

    public static IndexConfigTypeEnum getIndexConfigTypeEnumByType(int type) {
        for (IndexConfigTypeEnum indexConfigTypeEnum : IndexConfigTypeEnum.values()) {
            if (indexConfigTypeEnum.getType() == type) {
                return indexConfigTypeEnum;
            }
        }
        return DEFAULT;
    }

    public int getType() {
        return type;
    }

    public void setType(int type) {
        this.type = type;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}


================================================
FILE: newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/enums/NewBeeMallCategoryLevelEnum.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.common.cloud.newbee.enums;

/**
 * @author 13
 * @qq交流群 796794009
 * @email 2449207463@qq.com
 * @link https://github.com/newbee-ltd
 * @apiNote 分类级别
 */
public enum NewBeeMallCategoryLevelEnum {

    DEFAULT(0, "ERROR"),
    LEVEL_ONE(1, "一级分类"),
    LEVEL_TWO(2, "二级分类"),
    LEVEL_THREE(3, "三级分类");

    private int level;

    private String name;

    NewBeeMallCategoryLevelEnum(int level, String name) {
        this.level = level;
        this.name = name;
    }

    public static NewBeeMallCategoryLevelEnum getNewBeeMallOrderStatusEnumByLevel(int level) {
        for (NewBeeMallCategoryLevelEnum newBeeMallCategoryLevelEnum : NewBeeMallCategoryLevelEnum.values()) {
            if (newBeeMallCategoryLevelEnum.getLevel() == level) {
                return newBeeMallCategoryLevelEnum;
            }
        }
        return DEFAULT;
    }

    public int getLevel() {
        return level;
    }

    public void setLevel(int level) {
        this.level = level;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}


================================================
FILE: newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/enums/NewBeeMallOrderStatusEnum.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.common.cloud.newbee.enums;

/**
 * @author 13
 * @qq交流群 796794009
 * @email 2449207463@qq.com
 * @link https://github.com/newbee-ltd
 * @apiNote 订单状态:0.待支付 1.已支付 2.配货完成 3:出库成功 4.交易成功 -1.手动关闭 -2.超时关闭 -3.商家关闭
 */
public enum NewBeeMallOrderStatusEnum {

    DEFAULT(-9, "ERROR"),
    ORDER_PRE_PAY(0, "待支付"),
    ORDER_PAID(1, "已支付"),
    ORDER_PACKAGED(2, "配货完成"),
    ORDER_EXPRESS(3, "出库成功"),
    ORDER_SUCCESS(4, "交易成功"),
    ORDER_CLOSED_BY_MALLUSER(-1, "手动关闭"),
    ORDER_CLOSED_BY_EXPIRED(-2, "超时关闭"),
    ORDER_CLOSED_BY_JUDGE(-3, "商家关闭");

    private int orderStatus;

    private String name;

    NewBeeMallOrderStatusEnum(int orderStatus, String name) {
        this.orderStatus = orderStatus;
        this.name = name;
    }

    public static NewBeeMallOrderStatusEnum getNewBeeMallOrderStatusEnumByStatus(int orderStatus) {
        for (NewBeeMallOrderStatusEnum newBeeMallOrderStatusEnum : NewBeeMallOrderStatusEnum.values()) {
            if (newBeeMallOrderStatusEnum.getOrderStatus() == orderStatus) {
                return newBeeMallOrderStatusEnum;
            }
        }
        return DEFAULT;
    }

    public int getOrderStatus() {
        return orderStatus;
    }

    public void setOrderStatus(int orderStatus) {
        this.orderStatus = orderStatus;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}


================================================
FILE: newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/enums/PayStatusEnum.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.common.cloud.newbee.enums;

/**
 * @author 13
 * @qq交流群 796794009
 * @email 2449207463@qq.com
 * @link https://github.com/newbee-ltd
 * @apiNote 订单状态:0.支付中 1.支付成功 -1.支付失败
 */
public enum PayStatusEnum {

    DEFAULT(-1, "支付失败"),
    PAY_ING(0, "支付中"),
    PAY_SUCCESS(1, "支付成功");

    private int payStatus;

    private String name;

    PayStatusEnum(int payStatus, String name) {
        this.payStatus = payStatus;
        this.name = name;
    }

    public static PayStatusEnum getPayStatusEnumByStatus(int payStatus) {
        for (PayStatusEnum payStatusEnum : PayStatusEnum.values()) {
            if (payStatusEnum.getPayStatus() == payStatus) {
                return payStatusEnum;
            }
        }
        return DEFAULT;
    }

    public int getPayStatus() {
        return payStatus;
    }

    public void setPayStatus(int payStatus) {
        this.payStatus = payStatus;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}


================================================
FILE: newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/enums/PayTypeEnum.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.common.cloud.newbee.enums;

/**
 * @author 13
 * @qq交流群 796794009
 * @email 2449207463@qq.com
 * @link https://github.com/newbee-ltd
 * @apiNote 订单状态:0.无 1.支付宝 2.微信支付
 */
public enum PayTypeEnum {

    DEFAULT(-1, "ERROR"),
    NOT_PAY(0, "无"),
    ALI_PAY(1, "支付宝"),
    WEIXIN_PAY(2, "微信支付");

    private int payType;

    private String name;

    PayTypeEnum(int payType, String name) {
        this.payType = payType;
        this.name = name;
    }

    public static PayTypeEnum getPayTypeEnumByType(int payType) {
        for (PayTypeEnum payTypeEnum : PayTypeEnum.values()) {
            if (payTypeEnum.getPayType() == payType) {
                return payTypeEnum;
            }
        }
        return DEFAULT;
    }

    public int getPayType() {
        return payType;
    }

    public void setPayType(int payType) {
        this.payType = payType;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}


================================================
FILE: newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/enums/ServiceResultEnum.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.common.cloud.newbee.enums;

public enum ServiceResultEnum {
    ERROR("error"),

    SUCCESS("success"),

    DATA_NOT_EXIST("未查询到记录!"),

    PARAM_ERROR("参数错误!"),

    SAME_CATEGORY_EXIST("已存在同级同名的分类!"),

    SAME_LOGIN_NAME_EXIST("用户名已存在!"),

    LOGIN_NAME_NULL("请输入登录名!"),

    LOGIN_NAME_IS_NOT_PHONE("请输入正确的手机号!"),

    LOGIN_PASSWORD_NULL("请输入密码!"),

    LOGIN_VERIFY_CODE_NULL("请输入验证码!"),

    LOGIN_VERIFY_CODE_ERROR("验证码错误!"),

    SAME_INDEX_CONFIG_EXIST("已存在相同的首页配置项!"),

    GOODS_CATEGORY_ERROR("分类数据异常!"),

    SAME_GOODS_EXIST("已存在相同的商品信息!"),

    GOODS_NOT_EXIST("商品不存在!"),

    GOODS_PUT_DOWN("商品已下架!"),

    SHOPPING_CART_ITEM_LIMIT_NUMBER_ERROR("超出单个商品的最大购买数量!"),

    SHOPPING_CART_ITEM_NUMBER_ERROR("商品数量不能小于 1 !"),

    SHOPPING_CART_ITEM_TOTAL_NUMBER_ERROR("超出购物车最大容量!"),

    SHOPPING_CART_ITEM_EXIST_ERROR("已存在!无需重复添加!"),

    LOGIN_ERROR("登录失败!"),

    NOT_LOGIN_ERROR("未登录!"),

    ADMIN_NOT_LOGIN_ERROR("管理员未登录!"),

    TOKEN_EXPIRE_ERROR("无效认证!请重新登录!"),

    ADMIN_TOKEN_EXPIRE_ERROR("管理员登录过期!请重新登录!"),

    USER_NULL_ERROR("无效用户!请重新登录!"),

    LOGIN_USER_LOCKED_ERROR("用户已被禁止登录!"),

    ORDER_NOT_EXIST_ERROR("订单不存在!"),

    ORDER_ITEM_NOT_EXIST_ERROR("订单项不存在!"),

    NULL_ADDRESS_ERROR("地址不能为空!"),

    ORDER_PRICE_ERROR("订单价格异常!"),

    ORDER_ITEM_NULL_ERROR("订单项异常!"),

    ORDER_GENERATE_ERROR("生成订单异常!"),

    SHOPPING_ITEM_ERROR("购物车数据异常!"),

    SHOPPING_ITEM_COUNT_ERROR("库存不足!"),

    ORDER_STATUS_ERROR("订单状态异常!"),

    OPERATE_ERROR("操作失败!"),

    REQUEST_FORBIDEN_ERROR("禁止该操作!"),

    NO_PERMISSION_ERROR("无权限!"),

    DB_ERROR("database error");

    private String result;

    ServiceResultEnum(String result) {
        this.result = result;
    }

    public String getResult() {
        return result;
    }

    public void setResult(String result) {
        this.result = result;
    }
}


================================================
FILE: newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/exception/NewBeeMallException.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.common.cloud.newbee.exception;

public class NewBeeMallException extends RuntimeException {

    public NewBeeMallException() {
    }

    public NewBeeMallException(String message) {
        super(message);
    }

    /**
     * 丢出一个异常
     *
     * @param message
     */
    public static void fail(String message) {
        throw new NewBeeMallException(message);
    }

}


================================================
FILE: newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/pojo/AdminUserToken.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.common.cloud.newbee.pojo;

import lombok.Data;

import java.io.Serializable;

@Data
public class AdminUserToken implements Serializable {
    private Long adminUserId;

    private String token;
}

================================================
FILE: newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/pojo/MallUserToken.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.common.cloud.newbee.pojo;

import lombok.Data;

import java.io.Serializable;

@Data
public class MallUserToken implements Serializable {
    private Long userId;

    private String token;

}

================================================
FILE: newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/util/BeanUtil.java
================================================
package ltd.common.cloud.newbee.util;

import org.springframework.beans.BeanUtils;
import org.springframework.beans.BeanWrapper;
import org.springframework.beans.BeanWrapperImpl;
import org.springframework.beans.PropertyAccessorFactory;

import java.beans.PropertyDescriptor;
import java.lang.reflect.Field;
import java.util.*;

public abstract class BeanUtil {

    public static Object copyProperties(Object source, Object target, String... ignoreProperties) {
        if (source == null) {
            return target;
        }
        BeanUtils.copyProperties(source, target, ignoreProperties);
        return target;
    }

    public static <T> List<T> copyList(List sources, Class<T> clazz) {
        return copyList(sources, clazz, null);
    }

    public static <T> List<T> copyList(List sources, Class<T> clazz, Callback<T> callback) {
        List<T> targetList = new ArrayList<>();
        if (sources != null) {
            try {
                for (Object source : sources) {
                    T target = clazz.newInstance();
                    copyProperties(source, target);
                    if (callback != null) {
                        callback.set(source, target);
                    }
                    targetList.add(target);
                }
            } catch (InstantiationException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        }
        return targetList;
    }

    public static Map<String, Object> toMap(Object bean, String... ignoreProperties) {
        Map<String, Object> map = new LinkedHashMap<>();
        List<String> ignoreList = new ArrayList<>(Arrays.asList(ignoreProperties));
        ignoreList.add("class");
        BeanWrapper beanWrapper = PropertyAccessorFactory.forBeanPropertyAccess(bean);
        for (PropertyDescriptor pd : beanWrapper.getPropertyDescriptors()) {
            if (!ignoreList.contains(pd.getName()) && beanWrapper.isReadableProperty(pd.getName())) {
                Object propertyValue = beanWrapper.getPropertyValue(pd.getName());
                map.put(pd.getName(), propertyValue);
            }
        }
        return map;
    }

    public static <T> T toBean(Map<String, Object> map, Class<T> beanType) {
        BeanWrapper beanWrapper = new BeanWrapperImpl(beanType);
        map.forEach((key, value) -> {
            if (beanWrapper.isWritableProperty(key)) {
                beanWrapper.setPropertyValue(key, value);
            }
        });
        return (T) beanWrapper.getWrappedInstance();
    }

    public static interface Callback<T> {
        void set(Object source, T target);
    }

    //检查Pojo对象是否有null字段
    public static boolean checkPojoNullField(Object o, Class<?> clz) {
        try {
            Field[] fields = clz.getDeclaredFields();
            for (Field field : fields) {
                field.setAccessible(true);
                if (field.get(o) == null) {
                    return false;
                }
            }
            if (clz.getSuperclass() != Object.class) {
                return checkPojoNullField(o, clz.getSuperclass());
            }
            return true;
        } catch (IllegalAccessException e) {
            return false;
        }
    }
}


================================================
FILE: newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/util/MD5Util.java
================================================
package ltd.common.cloud.newbee.util;

import java.security.MessageDigest;

/**
 * @author 13
 * @qq交流群 796794009
 * @email 2449207463@qq.com
 * @link https://github.com/newbee-ltd
 */
public class MD5Util {

    private static String byteArrayToHexString(byte b[]) {
        StringBuffer resultSb = new StringBuffer();
        for (int i = 0; i < b.length; i++)
            resultSb.append(byteToHexString(b[i]));

        return resultSb.toString();
    }

    private static String byteToHexString(byte b) {
        int n = b;
        if (n < 0)
            n += 256;
        int d1 = n / 16;
        int d2 = n % 16;
        return hexDigits[d1] + hexDigits[d2];
    }

    public static String MD5Encode(String origin, String charsetname) {
        String resultString = null;
        try {
            resultString = new String(origin);
            MessageDigest md = MessageDigest.getInstance("MD5");
            if (charsetname == null || "".equals(charsetname))
                resultString = byteArrayToHexString(md.digest(resultString
                        .getBytes()));
            else
                resultString = byteArrayToHexString(md.digest(resultString
                        .getBytes(charsetname)));
        } catch (Exception exception) {
        }
        return resultString;
    }

    private static final String hexDigits[] = {"0", "1", "2", "3", "4", "5",
            "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"};
}


================================================
FILE: newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/util/NewBeeMallUtils.java
================================================
package ltd.common.cloud.newbee.util;

import org.springframework.util.StringUtils;

import java.net.URI;

/**
 * @author 13
 */
public class NewBeeMallUtils {

    public static URI getHost(URI uri) {
        URI effectiveURI = null;
        try {
            effectiveURI = new URI(uri.getScheme(), uri.getUserInfo(), uri.getHost(), uri.getPort(), null, null, null);
        } catch (Throwable var4) {
            effectiveURI = null;
        }
        return effectiveURI;
    }

    public static String cleanString(String value) {
        if (!StringUtils.hasText(value)) {
            return "";
        }
        value = value.toLowerCase();
        value = value.replaceAll("<", "& lt;").replaceAll(">", "& gt;");
        value = value.replaceAll("\\(", "& #40;").replaceAll("\\)", "& #41;");
        value = value.replaceAll("'", "& #39;");
        value = value.replaceAll("onload", "0nl0ad");
        value = value.replaceAll("xml", "xm1");
        value = value.replaceAll("window", "wind0w");
        value = value.replaceAll("click", "cl1ck");
        value = value.replaceAll("var", "v0r");
        value = value.replaceAll("let", "1et");
        value = value.replaceAll("function", "functi0n");
        value = value.replaceAll("return", "retu1n");
        value = value.replaceAll("$", "");
        value = value.replaceAll("document", "d0cument");
        value = value.replaceAll("const", "c0nst");
        value = value.replaceAll("eval\\((.*)\\)", "");
        value = value.replaceAll("[\\\"\\\'][\\s]*javascript:(.*)[\\\"\\\']", "\"\"");
        value = value.replaceAll("script", "scr1pt");
        value = value.replaceAll("insert", "1nsert");
        value = value.replaceAll("drop", "dr0p");
        value = value.replaceAll("create", "cre0ate");
        value = value.replaceAll("update", "upd0ate");
        value = value.replaceAll("alter", "a1ter");
        value = value.replaceAll("from", "fr0m");
        value = value.replaceAll("where", "wh1re");
        value = value.replaceAll("database", "data1base");
        value = value.replaceAll("table", "tab1e");
        value = value.replaceAll("tb", "tb0");
        return value;
    }
}


================================================
FILE: newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/util/NumberUtil.java
================================================
package ltd.common.cloud.newbee.util;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @author 13
 * @qq交流群 796794009
 * @email 2449207463@qq.com
 * @link https://github.com/newbee-ltd
 */
public class NumberUtil {

    private NumberUtil() {
    }


    /**
     * 判断是否为11位电话号码
     *
     * @param phone
     * @return
     */
    public static boolean isPhone(String phone) {
        Pattern pattern = Pattern.compile("^((13[0-9])|(14[5,7])|(15[^4,\\D])|(17[0-8])|(18[0-9]))\\d{8}$");
        Matcher matcher = pattern.matcher(phone);
        return matcher.matches();
    }

    /**
     * 生成指定长度的随机数
     *
     * @param length
     * @return
     */
    public static int genRandomNum(int length) {
        int num = 1;
        double random = Math.random();
        if (random < 0.1) {
            random = random + 0.1;
        }
        for (int i = 0; i < length; i++) {
            num = num * 10;
        }
        return (int) ((random * num));
    }

    /**
     * 生成订单流水号
     *
     * @return
     */
    public static String genOrderNo() {
        StringBuffer buffer = new StringBuffer(String.valueOf(System.currentTimeMillis()));
        int num = genRandomNum(4);
        buffer.append(num);
        return buffer.toString();
    }
}


================================================
FILE: newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/util/SystemUtil.java
================================================
package ltd.common.cloud.newbee.util;

import java.math.BigInteger;
import java.security.MessageDigest;

/**
 * @author 13
 * @qq交流群 796794009
 * @email 2449207463@qq.com
 * @link https://github.com/newbee-ltd
 */
public class SystemUtil {

    private SystemUtil() {
    }


    /**
     * 登录或注册成功后,生成保持用户登录状态会话token值
     *
     * @param src:为用户最新一次登录时的now()+user.id+random(4)
     * @return
     */
    public static String genToken(String src) {
        if (null == src || "".equals(src)) {
            return null;
        }
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            md.update(src.getBytes());
            String result = new BigInteger(1, md.digest()).toString(16);
            if (result.length() == 31) {
                result = result + "-";
            }
            System.out.println(result);
            return result;
        } catch (Exception e) {
            return null;
        }
    }

}


================================================
FILE: newbee-mall-cloud-gateway-admin/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!--  @author 程序员十三
      @qq交流群 791509631
      @email 2449207463@qq.com
      @link https://github.com/newbee-ltd -->
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>ltd.newbee.cloud</groupId>
    <artifactId>newbee-mall-cloud-gateway-admin</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>newbee-mall-cloud-gateway-admin</name>
    <description>网关模块</description>

    <parent>
        <groupId>ltd.newbee.cloud</groupId>
        <artifactId>newbee-mall-cloud</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
        </dependency>

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

        <dependency>
            <groupId>ltd.user.newbee.cloud</groupId>
            <artifactId>newbee-mall-cloud-user-api</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

        <dependency>
            <groupId>ltd.newbee.cloud</groupId>
            <artifactId>newbee-mall-cloud-common</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

    </dependencies>
    <!--  @author 程序员十三
      @qq交流群 791509631
      @email 2449207463@qq.com
      @link https://github.com/newbee-ltd -->
</project>


================================================
FILE: newbee-mall-cloud-gateway-admin/src/main/java/ltd/gateway/cloud/newbee/NewBeeMallCloudAdminGatewayApplication.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.gateway.cloud.newbee;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

/**
 * @author 程序员十三
 * @qq交流群 791509631
 * @email 2449207463@qq.com
 * @link https://github.com/newbee-ltd
 */
@SpringBootApplication
@EnableDiscoveryClient
public class NewBeeMallCloudAdminGatewayApplication {

    public static void main(String[] args) {
        SpringApplication.run(NewBeeMallCloudAdminGatewayApplication.class, args);
    }

}


================================================
FILE: newbee-mall-cloud-gateway-admin/src/main/java/ltd/gateway/cloud/newbee/config/PolymerizeSwaggerProvider.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.gateway.cloud.newbee.config;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.gateway.config.GatewayProperties;
import org.springframework.cloud.gateway.support.NameUtils;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Component;
import springfox.documentation.swagger.web.SwaggerResource;
import springfox.documentation.swagger.web.SwaggerResourcesProvider;

import java.util.ArrayList;
import java.util.List;

/**
 * 在网关层聚合底层微服务的Swagger资源
 *
 * @author 程序员十三
 * @qq交流群 791509631
 * @email 2449207463@qq.com
 * @link https://github.com/newbee-ltd
 */
@Primary
@Component
public class PolymerizeSwaggerProvider implements SwaggerResourcesProvider {

    /**
     * Swagger Doc的URL后缀
     */
    public static final String API_DOCS_URL = "/v3/api-docs";

    @Autowired
    private GatewayProperties gatewayProperties;

    @Override
    public List<SwaggerResource> get() {
        List<SwaggerResource> resources = new ArrayList<>();
        List<String> routes = new ArrayList<>();
        //需要聚合的路由配置
        routes.add("user-service-swagger-route");
        routes.add("goods-service-swagger-route");
        routes.add("recommend-service-swagger-route");
        routes.add("order-service-swagger-route");
        gatewayProperties.getRoutes().stream().filter(routeDefinition -> routes.contains(routeDefinition.getId()))
                .forEach(routeDefinition -> routeDefinition.getPredicates().stream()
                        .filter(predicateDefinition -> ("Path").equalsIgnoreCase(predicateDefinition.getName()))
                        .forEach(predicateDefinition -> resources.add(swaggerResource(routeDefinition.getId(),
                                predicateDefinition.getArgs().get(NameUtils.GENERATED_NAME_PREFIX + "0")
                                        .replace("/**", API_DOCS_URL)))));
        return resources;
    }

    private SwaggerResource swaggerResource(String name, String url) {
        SwaggerResource swaggerResource = new SwaggerResource();
        swaggerResource.setName(name);
        swaggerResource.setLocation(url);
        swaggerResource.setSwaggerVersion("3.0");
        return swaggerResource;
    }
}


================================================
FILE: newbee-mall-cloud-gateway-admin/src/main/java/ltd/gateway/cloud/newbee/config/RedisConfig.java
================================================
package ltd.gateway.cloud.newbee.config;

import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cache.interceptor.KeyGenerator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;

import javax.annotation.Resource;
import java.io.Serializable;
import java.lang.reflect.Method;
import java.util.HashSet;
import java.util.Set;

@Configuration
@EnableCaching
@AutoConfigureAfter(RedisAutoConfiguration.class)
public class RedisConfig extends CachingConfigurerSupport {

    @Resource
    private LettuceConnectionFactory lettuceConnectionFactory;

    public RedisConfig(){}

    @Bean
    public RedisTemplate<String, Serializable> redisCacheTemplate(LettuceConnectionFactory redisConnectionFactory){
        RedisTemplate<String,Serializable> template = new RedisTemplate<String,Serializable>();
        template.setKeySerializer(new StringRedisSerializer());
        template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
        template.setHashKeySerializer(new StringRedisSerializer());
        template.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
        template.setConnectionFactory(redisConnectionFactory);
        return template;
    }

    @Bean
    public CacheManager cacheManager() {
        RedisCacheManager.RedisCacheManagerBuilder builder = RedisCacheManager.RedisCacheManagerBuilder
                .fromConnectionFactory(lettuceConnectionFactory);
        @SuppressWarnings("serial")
        Set<String> cacheNames = new HashSet<String>() {
            {
                add("codeNameCache");
            }
        };
        builder.initialCacheNames(cacheNames);
        return builder.build();
    }

    @Bean
    public KeyGenerator keyGenerator() {
        return new KeyGenerator() {
            @Override
            public Object generate(Object target, Method method, Object... params) {
                StringBuffer stringBuffer = new StringBuffer();
                stringBuffer.append(target.getClass().getName());
                stringBuffer.append(method.getName());
                for (Object obj : params) {
                    stringBuffer.append(obj.toString());
                }
                return stringBuffer.toString();
            }
        };
    }
}



================================================
FILE: newbee-mall-cloud-gateway-admin/src/main/java/ltd/gateway/cloud/newbee/filter/ValidTokenGlobalFilter.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.gateway.cloud.newbee.filter;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import ltd.common.cloud.newbee.dto.Result;
import ltd.common.cloud.newbee.dto.ResultGenerator;
import ltd.common.cloud.newbee.pojo.AdminUserToken;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.core.Ordered;
import org.springframework.core.io.buffer.DataBuffer;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;

import java.nio.charset.StandardCharsets;

/**
 * @author 程序员十三
 * @qq交流群 791509631
 * @email 2449207463@qq.com
 * @link https://github.com/newbee-ltd
 */
@Component
public class ValidTokenGlobalFilter implements GlobalFilter, Ordered {

    @Autowired
    private RedisTemplate redisTemplate;

    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {

        // 登录接口、swagger请求,直接放行
        if (exchange.getRequest().getURI().getPath().equals("/users/admin/login") || exchange.getRequest().getURI().getPath().contains("/swagger/v3/api-docs")) {
            return chain.filter(exchange);
        }

        HttpHeaders headers = exchange.getRequest().getHeaders();

        if (headers == null || headers.isEmpty()) {
            // 返回错误提示
            return wrapErrorResponse(exchange, chain);
        }

        String token = headers.getFirst("token");

        if (!StringUtils.hasText(token)) {
            // 返回错误提示
            return wrapErrorResponse(exchange, chain);
        }
        ValueOperations<String, AdminUserToken> opsForAdminUserToken = redisTemplate.opsForValue();
        AdminUserToken tokenObject = opsForAdminUserToken.get(token);
        if (tokenObject == null) {
            // 返回错误提示
            return wrapErrorResponse(exchange, chain);
        }

        return chain.filter(exchange);
    }

    @Override
    public int getOrder() {
        return Ordered.HIGHEST_PRECEDENCE;
    }

    Mono<Void> wrapErrorResponse(ServerWebExchange exchange, GatewayFilterChain chain) {
        Result result = ResultGenerator.genErrorResult(419, "无权限访问");
        ObjectMapper mapper = new ObjectMapper();
        ObjectNode resultNode = mapper.valueToTree(result);
        byte[] bytes = resultNode.toString().getBytes(StandardCharsets.UTF_8);
        DataBuffer dataBuffer = exchange.getResponse().bufferFactory().wrap(bytes);
        exchange.getResponse().setStatusCode(HttpStatus.OK);
        return exchange.getResponse().writeWith(Flux.just(dataBuffer));
    }

}

================================================
FILE: newbee-mall-cloud-gateway-admin/src/main/resources/application.properties
================================================
server.port=29100
# 服务名称
spring.application.name=newbee-mall-cloud-gateway-admin
# Nacos地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
# Nacos登录用户名(默认为nacos,生产环境一定要修改)
spring.cloud.nacos.username=nacos
# Nacos登录密码(默认为nacos,生产环境一定要修改)
spring.cloud.nacos.password=nacos
# 网关开启服务注册与服务发现
spring.cloud.gateway.discovery.locator.enabled=true
spring.cloud.gateway.discovery.locator.lower-case-service-id=true

# 用户服务的路由配置
spring.cloud.gateway.routes[0].id=user-service-route
spring.cloud.gateway.routes[0].uri=lb://newbee-mall-cloud-user-service
spring.cloud.gateway.routes[0].order=1
spring.cloud.gateway.routes[0].predicates[0]=Path=/users/admin/**

# 商品服务的路由配置-1
spring.cloud.gateway.routes[1].id=categories-admin-service-route
spring.cloud.gateway.routes[1].uri=lb://newbee-mall-cloud-goods-service
spring.cloud.gateway.routes[1].order=1
spring.cloud.gateway.routes[1].predicates[0]=Path=/categories/admin/**

# 商品服务的路由配置-2
spring.cloud.gateway.routes[2].id=goods-admin-service-route
spring.cloud.gateway.routes[2].uri=lb://newbee-mall-cloud-goods-service
spring.cloud.gateway.routes[2].order=1
spring.cloud.gateway.routes[2].predicates[0]=Path=/goods/admin/**

# 推荐服务的路由配置-1
spring.cloud.gateway.routes[3].id=carousels-admin-service-route
spring.cloud.gateway.routes[3].uri=lb://newbee-mall-cloud-recommend-service
spring.cloud.gateway.routes[3].order=1
spring.cloud.gateway.routes[3].predicates[0]=Path=/carousels/admin/**

# 推荐服务的路由配置-2
spring.cloud.gateway.routes[4].id=indexConfigs-admin-service-route
spring.cloud.gateway.routes[4].uri=lb://newbee-mall-cloud-recommend-service
spring.cloud.gateway.routes[4].order=1
spring.cloud.gateway.routes[4].predicates[0]=Path=/indexConfigs/admin/**

# 订单服务的路由配置
spring.cloud.gateway.routes[5].id=order-service-route
spring.cloud.gateway.routes[5].uri=lb://newbee-mall-cloud-order-service
spring.cloud.gateway.routes[5].order=1
spring.cloud.gateway.routes[5].predicates[0]=Path=/orders/admin/**

# 用户服务Swagger的路由配置
spring.cloud.gateway.routes[6].id=user-service-swagger-route
spring.cloud.gateway.routes[6].uri=lb://newbee-mall-cloud-user-service
spring.cloud.gateway.routes[6].order=1
spring.cloud.gateway.routes[6].predicates[0]=Path=/users/swagger/**
spring.cloud.gateway.routes[6].filters[0]=StripPrefix=2

# 商品服务Swagger的路由配置
spring.cloud.gateway.routes[7].id=goods-service-swagger-route
spring.cloud.gateway.routes[7].uri=lb://newbee-mall-cloud-goods-service
spring.cloud.gateway.routes[7].order=1
spring.cloud.gateway.routes[7].predicates[0]=Path=/categories/swagger/**
spring.cloud.gateway.routes[7].filters[0]=StripPrefix=2

# 推荐服务Swagger的路由配置
spring.cloud.gateway.routes[8].id=recommend-service-swagger-route
spring.cloud.gateway.routes[8].uri=lb://newbee-mall-cloud-recommend-service
spring.cloud.gateway.routes[8].order=1
spring.cloud.gateway.routes[8].predicates[0]=Path=/indexConfigs/swagger/**
spring.cloud.gateway.routes[8].filters[0]=StripPrefix=2

# 订单服务Swagger的路由配置
spring.cloud.gateway.routes[9].id=order-service-swagger-route
spring.cloud.gateway.routes[9].uri=lb://newbee-mall-cloud-order-service
spring.cloud.gateway.routes[9].order=1
spring.cloud.gateway.routes[9].predicates[0]=Path=/orders/swagger/**
spring.cloud.gateway.routes[9].filters[0]=StripPrefix=2

##Redis 配置
# Redis数据库索引(默认为0)
spring.redis.database=13
# Redis服务器地址
spring.redis.host=127.0.0.1
# Redis服务器连接端口
spring.redis.port=6379
# Redis服务器连接密码
spring.redis.password=123456789
# 连接池最大连接数(使用负值表示没有限制)
spring.redis.jedis.pool.max-active=8
# 连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.jedis.pool.max-wait=-1
# 连接池中的最大空闲连接
spring.redis.jedis.pool.max-idle=8
# 连接池中的最小空闲连接
spring.redis.jedis.pool.min-idle=0
# 连接超时时间(毫秒)
spring.redis.timeout=5000

================================================
FILE: newbee-mall-cloud-gateway-mall/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!--  @author 程序员十三
      @qq交流群 791509631
      @email 2449207463@qq.com
      @link https://github.com/newbee-ltd -->
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>ltd.newbee.cloud</groupId>
    <artifactId>newbee-mall-cloud-gateway-mall</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>newbee-mall-cloud-gateway-mall</name>
    <description>商城端网关模块</description>

    <parent>
        <groupId>ltd.newbee.cloud</groupId>
        <artifactId>newbee-mall-cloud</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
        </dependency>

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>ltd.user.newbee.cloud</groupId>
            <artifactId>newbee-mall-cloud-user-api</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

        <dependency>
            <groupId>ltd.newbee.cloud</groupId>
            <artifactId>newbee-mall-cloud-common</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

    </dependencies>
    <!--  @author 程序员十三
      @qq交流群 791509631
      @email 2449207463@qq.com
      @link https://github.com/newbee-ltd -->
</project>


================================================
FILE: newbee-mall-cloud-gateway-mall/src/main/java/ltd/gateway/cloud/newbee/NewBeeMallCloudMallGatewayApplication.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.gateway.cloud.newbee;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

/**
 * @author 程序员十三
 * @qq交流群 791509631
 * @email 2449207463@qq.com
 * @link https://github.com/newbee-ltd
 */
@SpringBootApplication
@EnableDiscoveryClient
public class NewBeeMallCloudMallGatewayApplication {

    public static void main(String[] args) {
        SpringApplication.run(NewBeeMallCloudMallGatewayApplication.class, args);
    }

}


================================================
FILE: newbee-mall-cloud-gateway-mall/src/main/java/ltd/gateway/cloud/newbee/config/PolymerizeSwaggerProvider.java
================================================
package ltd.gateway.cloud.newbee.config;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.gateway.config.GatewayProperties;
import org.springframework.cloud.gateway.support.NameUtils;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Component;
import springfox.documentation.swagger.web.SwaggerResource;
import springfox.documentation.swagger.web.SwaggerResourcesProvider;

import java.util.ArrayList;
import java.util.List;

/**
 * 在网关层聚合底层微服务的Swagger资源
 *
 * @author 程序员十三
 * @qq交流群 791509631
 * @email 2449207463@qq.com
 * @link https://github.com/newbee-ltd
 */
@Primary
@Component
public class PolymerizeSwaggerProvider implements SwaggerResourcesProvider {

    /**
     * Swagger Doc的URL后缀
     */
    public static final String API_DOCS_URL = "/v3/api-docs";

    @Autowired
    private GatewayProperties gatewayProperties;

    @Override
    public List<SwaggerResource> get() {
        List<SwaggerResource> resources = new ArrayList<>();
        List<String> routes = new ArrayList<>();
        //需要聚合的路由配置
        routes.add("user-service-swagger-route");
        routes.add("recommend-service-swagger-route");
        routes.add("goods-service-swagger-route");
        routes.add("order-service-swagger-route");
        routes.add("shop-cart-service-swagger-route");
        gatewayProperties.getRoutes().stream().filter(routeDefinition -> routes.contains(routeDefinition.getId()))
                .forEach(routeDefinition -> routeDefinition.getPredicates().stream()
                        .filter(predicateDefinition -> ("Path").equalsIgnoreCase(predicateDefinition.getName()))
                        .forEach(predicateDefinition -> resources.add(swaggerResource(routeDefinition.getId(),
                                predicateDefinition.getArgs().get(NameUtils.GENERATED_NAME_PREFIX + "0")
                                        .replace("/**", API_DOCS_URL)))));
        return resources;
    }

    private SwaggerResource swaggerResource(String name, String url) {
        SwaggerResource swaggerResource = new SwaggerResource();
        swaggerResource.setName(name);
        swaggerResource.setLocation(url);
        swaggerResource.setSwaggerVersion("3.0");
        return swaggerResource;
    }
}


================================================
FILE: newbee-mall-cloud-gateway-mall/src/main/java/ltd/gateway/cloud/newbee/config/RedisConfig.java
================================================
package ltd.gateway.cloud.newbee.config;

import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cache.interceptor.KeyGenerator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;

import javax.annotation.Resource;
import java.io.Serializable;
import java.lang.reflect.Method;
import java.util.HashSet;
import java.util.Set;

@Configuration
@EnableCaching
@AutoConfigureAfter(RedisAutoConfiguration.class)
public class RedisConfig extends CachingConfigurerSupport {

    @Resource
    private LettuceConnectionFactory lettuceConnectionFactory;

    public RedisConfig(){}

    @Bean
    public RedisTemplate<String, Serializable> redisCacheTemplate(LettuceConnectionFactory redisConnectionFactory){
        RedisTemplate<String,Serializable> template = new RedisTemplate<String,Serializable>();
        template.setKeySerializer(new StringRedisSerializer());
        template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
        template.setHashKeySerializer(new StringRedisSerializer());
        template.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
        template.setConnectionFactory(redisConnectionFactory);
        return template;
    }

    @Bean
    public CacheManager cacheManager() {
        RedisCacheManager.RedisCacheManagerBuilder builder = RedisCacheManager.RedisCacheManagerBuilder
                .fromConnectionFactory(lettuceConnectionFactory);
        @SuppressWarnings("serial")
        Set<String> cacheNames = new HashSet<String>() {
            {
                add("codeNameCache");
            }
        };
        builder.initialCacheNames(cacheNames);
        return builder.build();
    }

    @Bean
    public KeyGenerator keyGenerator() {
        return new KeyGenerator() {
            @Override
            public Object generate(Object target, Method method, Object... params) {
                StringBuffer stringBuffer = new StringBuffer();
                stringBuffer.append(target.getClass().getName());
                stringBuffer.append(method.getName());
                for (Object obj : params) {
                    stringBuffer.append(obj.toString());
                }
                return stringBuffer.toString();
            }
        };
    }
}



================================================
FILE: newbee-mall-cloud-gateway-mall/src/main/java/ltd/gateway/cloud/newbee/filter/ValidMallUserTokenGlobalFilter.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.gateway.cloud.newbee.filter;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import ltd.common.cloud.newbee.dto.Result;
import ltd.common.cloud.newbee.dto.ResultGenerator;
import ltd.common.cloud.newbee.pojo.MallUserToken;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.core.Ordered;
import org.springframework.core.io.buffer.DataBuffer;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;

import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;

/**
 * @author 程序员十三
 * @qq交流群 791509631
 * @email 2449207463@qq.com
 * @link https://github.com/newbee-ltd
 */
@Component
public class ValidMallUserTokenGlobalFilter implements GlobalFilter, Ordered {

    @Autowired
    private RedisTemplate redisTemplate;

    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {

        final List<String> ignoreURLs = new ArrayList<>();
        ignoreURLs.add("/users/mall/login");
        ignoreURLs.add("/users/mall/register");
        ignoreURLs.add("/categories/mall/listAll");
        ignoreURLs.add("/mall/index/recommondInfos");
        ignoreURLs.add("/indexConfigs/swagger/v3/api-docs");
        ignoreURLs.add("/carts/swagger/v3/api-docs");
        ignoreURLs.add("/orders/swagger/v3/api-docs");
        ignoreURLs.add("/users/swagger/v3/api-docs");
        ignoreURLs.add("/goods/swagger/v3/api-docs");

        // 登录注册接口,直接放行
        if (ignoreURLs.contains(exchange.getRequest().getURI().getPath())) {
            return chain.filter(exchange);
        }

        HttpHeaders headers = exchange.getRequest().getHeaders();

        if (headers == null || headers.isEmpty()) {
            // 返回错误提示
            return wrapErrorResponse(exchange, chain);
        }

        String token = headers.getFirst("token");

        if (!StringUtils.hasText(token)) {
            // 返回错误提示
            return wrapErrorResponse(exchange, chain);
        }
        ValueOperations<String, MallUserToken> opsForMallUserToken = redisTemplate.opsForValue();
        MallUserToken tokenObject = opsForMallUserToken.get(token);
        if (tokenObject == null) {
            // 返回错误提示
            return wrapErrorResponse(exchange, chain);
        }

        return chain.filter(exchange);
    }

    @Override
    public int getOrder() {
        return Ordered.HIGHEST_PRECEDENCE;
    }

    Mono<Void> wrapErrorResponse(ServerWebExchange exchange, GatewayFilterChain chain) {
        Result result = ResultGenerator.genErrorResult(416, "无权限访问");
        ObjectMapper mapper = new ObjectMapper();
        ObjectNode resultNode = mapper.valueToTree(result);
        byte[] bytes = resultNode.toString().getBytes(StandardCharsets.UTF_8);
        DataBuffer dataBuffer = exchange.getResponse().bufferFactory().wrap(bytes);
        exchange.getResponse().setStatusCode(HttpStatus.OK);
        return exchange.getResponse().writeWith(Flux.just(dataBuffer));
    }

}

================================================
FILE: newbee-mall-cloud-gateway-mall/src/main/resources/application.properties
================================================
server.port=29110

# 服务名称
spring.application.name=newbee-mall-cloud-gateway-mall
# Nacos地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
# Nacos登录用户名(默认为nacos,生产环境一定要修改)
spring.cloud.nacos.username=nacos
# Nacos登录密码(默认为nacos,生产环境一定要修改)
spring.cloud.nacos.password=nacos
# 网关开启服务注册与服务发现
spring.cloud.gateway.discovery.locator.enabled=true
spring.cloud.gateway.discovery.locator.lower-case-service-id=true

# 用户服务的路由配置
spring.cloud.gateway.routes[0].id=user-service-route
spring.cloud.gateway.routes[0].uri=lb://newbee-mall-cloud-user-service
spring.cloud.gateway.routes[0].order=1
spring.cloud.gateway.routes[0].predicates[0]=Path=/users/mall/**

# 首页接口的路由配置
spring.cloud.gateway.routes[1].id=recommend-service-route
spring.cloud.gateway.routes[1].uri=lb://newbee-mall-cloud-recommend-service
spring.cloud.gateway.routes[1].order=1
spring.cloud.gateway.routes[1].predicates[0]=Path=/mall/index/**

# 分类接口的路由配置
spring.cloud.gateway.routes[2].id=goods-service-route
spring.cloud.gateway.routes[2].uri=lb://newbee-mall-cloud-goods-service
spring.cloud.gateway.routes[2].order=1
spring.cloud.gateway.routes[2].predicates[0]=Path=/categories/mall/**

# 商品接口的路由配置
spring.cloud.gateway.routes[3].id=goods-service-route2
spring.cloud.gateway.routes[3].uri=lb://newbee-mall-cloud-goods-service
spring.cloud.gateway.routes[3].order=1
spring.cloud.gateway.routes[3].predicates[0]=Path=/goods/mall/**

# 购物车接口的路由配置
spring.cloud.gateway.routes[4].id=shop-cart-service-route
spring.cloud.gateway.routes[4].uri=lb://newbee-mall-cloud-shop-cart-service
spring.cloud.gateway.routes[4].order=1
spring.cloud.gateway.routes[4].predicates[0]=Path=/shop-cart/**

# 订单接口的路由配置
spring.cloud.gateway.routes[5].id=order-service-route
spring.cloud.gateway.routes[5].uri=lb://newbee-mall-cloud-order-service
spring.cloud.gateway.routes[5].order=1
spring.cloud.gateway.routes[5].predicates[0]=Path=/orders/mall/**

# 收货地址接口的路由配置
spring.cloud.gateway.routes[6].id=order-service-route2
spring.cloud.gateway.routes[6].uri=lb://newbee-mall-cloud-order-service
spring.cloud.gateway.routes[6].order=1
spring.cloud.gateway.routes[6].predicates[0]=Path=/mall/address/**

# 商品服务Swagger的路由配置
spring.cloud.gateway.routes[7].id=goods-service-swagger-route
spring.cloud.gateway.routes[7].uri=lb://newbee-mall-cloud-goods-service
spring.cloud.gateway.routes[7].order=1
spring.cloud.gateway.routes[7].predicates[0]=Path=/goods/swagger/**
spring.cloud.gateway.routes[7].filters[0]=StripPrefix=2

# 推荐服务Swagger的路由配置
spring.cloud.gateway.routes[8].id=recommend-service-swagger-route
spring.cloud.gateway.routes[8].uri=lb://newbee-mall-cloud-recommend-service
spring.cloud.gateway.routes[8].order=1
spring.cloud.gateway.routes[8].predicates[0]=Path=/indexConfigs/swagger/**
spring.cloud.gateway.routes[8].filters[0]=StripPrefix=2

# 订单服务Swagger的路由配置
spring.cloud.gateway.routes[9].id=order-service-swagger-route
spring.cloud.gateway.routes[9].uri=lb://newbee-mall-cloud-order-service
spring.cloud.gateway.routes[9].order=1
spring.cloud.gateway.routes[9].predicates[0]=Path=/orders/swagger/**
spring.cloud.gateway.routes[9].filters[0]=StripPrefix=2

# 用户服务Swagger的路由配置
spring.cloud.gateway.routes[10].id=user-service-swagger-route
spring.cloud.gateway.routes[10].uri=lb://newbee-mall-cloud-user-service
spring.cloud.gateway.routes[10].order=1
spring.cloud.gateway.routes[10].predicates[0]=Path=/users/swagger/**
spring.cloud.gateway.routes[10].filters[0]=StripPrefix=2

# 购物车服务Swagger的路由配置
spring.cloud.gateway.routes[11].id=shop-cart-service-swagger-route
spring.cloud.gateway.routes[11].uri=lb://newbee-mall-cloud-shop-cart-service
spring.cloud.gateway.routes[11].order=1
spring.cloud.gateway.routes[11].predicates[0]=Path=/carts/swagger/**
spring.cloud.gateway.routes[11].filters[0]=StripPrefix=2

##Redis 配置
# Redis数据库索引(默认为0)
spring.redis.database=13
# Redis服务器地址
spring.redis.host=127.0.0.1
# Redis服务器连接端口
spring.redis.port=6379
# Redis服务器连接密码
spring.redis.password=123456789
# 连接池最大连接数(使用负值表示没有限制)
spring.redis.jedis.pool.max-active=8
# 连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.jedis.pool.max-wait=-1
# 连接池中的最大空闲连接
spring.redis.jedis.pool.max-idle=8
# 连接池中的最小空闲连接
spring.redis.jedis.pool.min-idle=0
# 连接超时时间(毫秒)
spring.redis.timeout=5000

================================================
FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-api/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!--  @author 程序员十三
      @qq交流群 791509631
      @email 2449207463@qq.com
      @link https://github.com/newbee-ltd -->
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>ltd.goods.newbee.cloud</groupId>
    <artifactId>newbee-mall-cloud-goods-api</artifactId>
    <packaging>jar</packaging>
    <version>0.0.1-SNAPSHOT</version>
    <name>newbee-mall-cloud-goods-api</name>
    <description>商品服务openfeign</description>

    <parent>
        <groupId>ltd.newbee.cloud</groupId>
        <artifactId>newbee-mall-cloud-goods-service</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

        <dependency>
            <groupId>ltd.newbee.cloud</groupId>
            <artifactId>newbee-mall-cloud-common</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

    </dependencies>
    <!--  @author 程序员十三
      @qq交流群 791509631
      @email 2449207463@qq.com
      @link https://github.com/newbee-ltd -->
</project>


================================================
FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-api/src/main/java/ltd/goods/cloud/newbee/dto/NewBeeMallGoodsDTO.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.goods.cloud.newbee.dto;

public class NewBeeMallGoodsDTO {
    private Long goodsId;

    private String goodsName;

    private String goodsIntro;

    private Long goodsCategoryId;

    private String goodsCoverImg;

    private String goodsCarousel;

    private Integer originalPrice;

    private Integer sellingPrice;

    private Integer stockNum;

    private String tag;

    private Byte goodsSellStatus;

    public Long getGoodsId() {
        return goodsId;
    }

    public void setGoodsId(Long goodsId) {
        this.goodsId = goodsId;
    }

    public String getGoodsName() {
        return goodsName;
    }

    public void setGoodsName(String goodsName) {
        this.goodsName = goodsName;
    }

    public String getGoodsIntro() {
        return goodsIntro;
    }

    public void setGoodsIntro(String goodsIntro) {
        this.goodsIntro = goodsIntro;
    }

    public Long getGoodsCategoryId() {
        return goodsCategoryId;
    }

    public void setGoodsCategoryId(Long goodsCategoryId) {
        this.goodsCategoryId = goodsCategoryId;
    }

    public String getGoodsCoverImg() {
        return goodsCoverImg;
    }

    public void setGoodsCoverImg(String goodsCoverImg) {
        this.goodsCoverImg = goodsCoverImg;
    }

    public String getGoodsCarousel() {
        return goodsCarousel;
    }

    public void setGoodsCarousel(String goodsCarousel) {
        this.goodsCarousel = goodsCarousel;
    }

    public Integer getOriginalPrice() {
        return originalPrice;
    }

    public void setOriginalPrice(Integer originalPrice) {
        this.originalPrice = originalPrice;
    }

    public Integer getSellingPrice() {
        return sellingPrice;
    }

    public void setSellingPrice(Integer sellingPrice) {
        this.sellingPrice = sellingPrice;
    }

    public Integer getStockNum() {
        return stockNum;
    }

    public void setStockNum(Integer stockNum) {
        this.stockNum = stockNum;
    }

    public String getTag() {
        return tag;
    }

    public void setTag(String tag) {
        this.tag = tag;
    }

    public Byte getGoodsSellStatus() {
        return goodsSellStatus;
    }

    public void setGoodsSellStatus(Byte goodsSellStatus) {
        this.goodsSellStatus = goodsSellStatus;
    }
}

================================================
FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-api/src/main/java/ltd/goods/cloud/newbee/dto/StockNumDTO.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.goods.cloud.newbee.dto;

public class StockNumDTO {
    private Long goodsId;

    private Integer goodsCount;

    public Long getGoodsId() {
        return goodsId;
    }

    public void setGoodsId(Long goodsId) {
        this.goodsId = goodsId;
    }

    public Integer getGoodsCount() {
        return goodsCount;
    }

    public void setGoodsCount(Integer goodsCount) {
        this.goodsCount = goodsCount;
    }
}


================================================
FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-api/src/main/java/ltd/goods/cloud/newbee/dto/UpdateStockNumDTO.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.goods.cloud.newbee.dto;

import java.util.List;

public class UpdateStockNumDTO {

    private List<StockNumDTO> stockNumDTOS;

    public List<StockNumDTO> getStockNumDTOS() {
        return stockNumDTOS;
    }

    public void setStockNumDTOS(List<StockNumDTO> stockNumDTOS) {
        this.stockNumDTOS = stockNumDTOS;
    }
}


================================================
FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-api/src/main/java/ltd/goods/cloud/newbee/openfeign/NewBeeCloudGoodsServiceFeign.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.goods.cloud.newbee.openfeign;

import ltd.common.cloud.newbee.dto.Result;
import ltd.goods.cloud.newbee.dto.NewBeeMallGoodsDTO;
import ltd.goods.cloud.newbee.dto.UpdateStockNumDTO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

@FeignClient(value = "newbee-mall-cloud-goods-service", path = "/goods")
public interface NewBeeCloudGoodsServiceFeign {

    @GetMapping(value = "/admin/goodsDetail")
    Result<NewBeeMallGoodsDTO> getGoodsDetail(@RequestParam(value = "goodsId") Long goodsId);

    @GetMapping(value = "/admin/listByGoodsIds")
    Result<List<NewBeeMallGoodsDTO>> listByGoodsIds(@RequestParam(value = "goodsIds") List<Long> goodsIds);

    @PutMapping(value = "/admin/updateStock")
    Result<Boolean> updateStock(@RequestBody UpdateStockNumDTO updateStockNumDTO);
}


================================================
FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!--  @author 程序员十三
      @qq交流群 791509631
      @email 2449207463@qq.com
      @link https://github.com/newbee-ltd -->
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>ltd.goods.newbee.cloud</groupId>
    <artifactId>newbee-mall-cloud-goods-web</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>newbee-mall-cloud-goods-web</name>
    <description>商品服务</description>

    <parent>
        <groupId>ltd.newbee.cloud</groupId>
        <artifactId>newbee-mall-cloud-goods-service</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
        </dependency>

        <!-- Seata 依赖包 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-seata</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${lombok.version}</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
        </dependency>

        <!-- Sleuth依赖项 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-sleuth</artifactId>
        </dependency>
        <!--Zipkin 依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-sleuth-zipkin</artifactId>
        </dependency>

        <dependency>
            <groupId>net.logstash.logback</groupId>
            <artifactId>logstash-logback-encoder</artifactId>
            <version>${logstash-logback-encoder.version}</version>
        </dependency>

        <dependency>
            <groupId>ltd.newbee.cloud</groupId>
            <artifactId>newbee-mall-cloud-common</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
        </dependency>

        <dependency>
            <groupId>ltd.user.newbee.cloud</groupId>
            <artifactId>newbee-mall-cloud-user-api</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

    </dependencies>
    <!--  @author 程序员十三
      @qq交流群 791509631
      @email 2449207463@qq.com
      @link https://github.com/newbee-ltd -->
</project>


================================================
FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/NewBeeMallCloudGoodsServiceApplication.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.goods.cloud.newbee;

import ltd.user.cloud.newbee.openfeign.NewBeeCloudUserServiceFeign;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;

/**
 * @author 程序员十三
 * @qq交流群 791509631
 * @email 2449207463@qq.com
 * @link https://github.com/newbee-ltd
 */
@SpringBootApplication
@EnableDiscoveryClient
@MapperScan("ltd.goods.cloud.newbee.dao")
@EnableFeignClients(basePackageClasses = {NewBeeCloudUserServiceFeign.class})
public class NewBeeMallCloudGoodsServiceApplication {

    public static void main(String[] args) {
        System.setProperty("nacos.logging.default.config.enabled","false");
        SpringApplication.run(NewBeeMallCloudGoodsServiceApplication.class, args);
    }

}


================================================
FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/config/GoodsServiceExceptionHandler.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.goods.cloud.newbee.config;

import ltd.common.cloud.newbee.enums.ServiceResultEnum;
import ltd.common.cloud.newbee.dto.Result;
import ltd.common.cloud.newbee.exception.NewBeeMallException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.validation.BindException;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import javax.servlet.http.HttpServletRequest;
import java.util.Objects;

/**
 * 全局异常处理
 */
@RestControllerAdvice
public class GoodsServiceExceptionHandler {

    private static final Logger log = LoggerFactory.getLogger(GoodsServiceExceptionHandler.class);

    @ExceptionHandler(BindException.class)
    public Object bindException(BindException e) {
        log.error("GoodsServiceExceptionHandler:",e);
        Result result = new Result();
        result.setResultCode(510);
        BindingResult bindingResult = e.getBindingResult();
        result.setMessage(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
        return result;
    }

    @ExceptionHandler(MethodArgumentNotValidException.class)
    public Object bindException(MethodArgumentNotValidException e) {
        log.error("GoodsServiceExceptionHandler:",e);
        Result result = new Result();
        result.setResultCode(510);
        BindingResult bindingResult = e.getBindingResult();
        result.setMessage(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
        return result;
    }

    @ExceptionHandler(Exception.class)
    public Object handleException(Exception e, HttpServletRequest req) {
        log.error("GoodsServiceExceptionHandler:",e);
        Result result = new Result();
        result.setResultCode(500);
        //区分是否为自定义异常
        if (e instanceof NewBeeMallException) {
            result.setMessage(e.getMessage());
            if (e.getMessage().equals(ServiceResultEnum.ADMIN_NOT_LOGIN_ERROR.getResult()) || e.getMessage().equals(ServiceResultEnum.ADMIN_TOKEN_EXPIRE_ERROR.getResult())) {
                result.setResultCode(419);
            }
            if (e.getMessage().equals(ServiceResultEnum.NOT_LOGIN_ERROR.getResult()) || e.getMessage().equals(ServiceResultEnum.TOKEN_EXPIRE_ERROR.getResult())) {
                result.setResultCode(416);
            }
        } else {
            e.printStackTrace();
            result.setMessage("未知异常,请查看控制台日志并检查配置文件。");
        }
        return result;

    }
}


================================================
FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/config/GoodsServiceSwagger3Config.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.goods.cloud.newbee.config;

import ltd.common.cloud.newbee.pojo.MallUserToken;
import ltd.common.cloud.newbee.pojo.AdminUserToken;
import ltd.goods.cloud.newbee.entity.LoginAdminUser;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.builders.RequestParameterBuilder;
import springfox.documentation.oas.annotations.EnableOpenApi;
import springfox.documentation.schema.ScalarType;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.ParameterType;
import springfox.documentation.service.RequestParameter;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;

import java.util.ArrayList;
import java.util.List;

@Configuration
@EnableOpenApi
public class GoodsServiceSwagger3Config{

    @Bean
    public Docket api() {
        return new Docket(DocumentationType.OAS_30)
                .apiInfo(apiInfo())
                .ignoredParameterTypes(AdminUserToken.class, LoginAdminUser.class, MallUserToken.class)
                .select()
                .apis(RequestHandlerSelectors.basePackage("ltd.goods.cloud.newbee.controller"))
                .paths(PathSelectors.any())
                .build()
                .globalRequestParameters(getGlobalRequestParameters());
    }

    //生成全局通用参数
    private List<RequestParameter> getGlobalRequestParameters() {
        List<RequestParameter> parameters = new ArrayList<>();
        parameters.add(new RequestParameterBuilder()
                .name("token")
                .description("登录认证token")
                .required(false) // 非必传
                .in(ParameterType.HEADER) //请求头中的参数,其它类型可以点进ParameterType类中查看
                .query(q -> q.model(m -> m.scalarModel(ScalarType.STRING)))
                .build());
        return parameters;
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("newbee-mall-cloud-goods-service接口文档")
                .description("swagger接口文档")
                .version("2.0")
                .build();
    }
}

================================================
FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/config/GoodsServiceWebMvcConfigurer.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.goods.cloud.newbee.config;

import com.alibaba.cloud.seata.web.SeataHandlerInterceptor;
import com.alibaba.cloud.sentinel.SentinelProperties;
import com.alibaba.csp.sentinel.adapter.spring.webmvc.SentinelWebInterceptor;
import ltd.goods.cloud.newbee.config.handler.TokenToAdminUserMethodArgumentResolver;
import ltd.goods.cloud.newbee.config.handler.TokenToMallUserMethodArgumentResolver;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Lazy;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;

import java.util.List;
import java.util.Optional;

@Configuration
public class GoodsServiceWebMvcConfigurer extends WebMvcConfigurationSupport {

    private static final Logger log = LoggerFactory.getLogger(GoodsServiceWebMvcConfigurer.class);

    @Autowired
    private SentinelProperties sentinelProperties;
    @Autowired
    private Optional<SentinelWebInterceptor> sentinelWebInterceptorOptional;

    @Autowired
    @Lazy
    private TokenToAdminUserMethodArgumentResolver tokenToAdminUserMethodArgumentResolver;

    @Autowired
    @Lazy
    private TokenToMallUserMethodArgumentResolver tokenToMallUserMethodArgumentResolver;

    /**
     * @param argumentResolvers
     * @tip @TokenToAdminUser 注解处理方法
     */
    public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
        argumentResolvers.add(tokenToAdminUserMethodArgumentResolver);
        argumentResolvers.add(tokenToMallUserMethodArgumentResolver);
    }

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.
                addResourceHandler("/swagger-ui/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/")
                .resourceChain(false);
    }

    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new SeataHandlerInterceptor()).addPathPatterns("/**");
        if (this.sentinelWebInterceptorOptional.isPresent()) {
            SentinelProperties.Filter filterConfig = this.sentinelProperties.getFilter();
            registry.addInterceptor((HandlerInterceptor) this.sentinelWebInterceptorOptional.get()).order(filterConfig.getOrder()).addPathPatterns(filterConfig.getUrlPatterns());
            log.info("[Sentinel Starter] register SentinelWebInterceptor with urlPatterns: {}.", filterConfig.getUrlPatterns());
        }
    }

}

================================================
FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/config/OpenFeignConfiguration.java
================================================
package ltd.goods.cloud.newbee.config;

import feign.Logger;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class OpenFeignConfiguration {
    @Bean
    public Logger.Level openFeignLogLevel() {
        // 设置OpenFeign日志级别
        return Logger.Level.FULL;
    }
}


================================================
FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/config/SeataProxyConfiguration.java
================================================
package ltd.goods.cloud.newbee.config;

import com.alibaba.druid.pool.DruidDataSource;
import io.seata.rm.datasource.DataSourceProxy;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;

import javax.annotation.PostConstruct;
import javax.sql.DataSource;

@Configuration
public class SeataProxyConfiguration {

    //创建Druid数据源
    @Bean
    @ConfigurationProperties(prefix = "spring.datasource")
    public DruidDataSource druidDataSource() {
        return new DruidDataSource();
    }

    //创建DataSource数据源代理
    @Bean("dataSource")
    @Primary
    public DataSource dataSourceDelegation(DruidDataSource druidDataSource) {
        return new DataSourceProxy(druidDataSource);
    }

    /*
     * 解决druid 日志报错:discard long time none received connection:xxx
     * */
    @PostConstruct
    public void setProperties(){
        System.setProperty("druid.mysql.usePingMethod","false");
    }
}



================================================
FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/config/annotation/TokenToAdminUser.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.goods.cloud.newbee.config.annotation;

import java.lang.annotation.*;

@Target({ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface TokenToAdminUser {

    /**
     * 当前用户在request中的名字
     *
     * @return
     */
    String value() default "adminUser";

}


================================================
FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/config/annotation/TokenToMallUser.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.goods.cloud.newbee.config.annotation;

import java.lang.annotation.*;

@Target({ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface TokenToMallUser {

    /**
     * 当前用户在request中的名字
     *
     * @return
     */
    String value() default "user";

}


================================================
FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/config/handler/TokenToAdminUserMethodArgumentResolver.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.goods.cloud.newbee.config.handler;

import ltd.common.cloud.newbee.enums.ServiceResultEnum;
import ltd.common.cloud.newbee.dto.Result;
import ltd.common.cloud.newbee.exception.NewBeeMallException;
import ltd.goods.cloud.newbee.config.annotation.TokenToAdminUser;
import ltd.goods.cloud.newbee.entity.LoginAdminUser;
import ltd.user.cloud.newbee.openfeign.NewBeeCloudUserServiceFeign;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.MethodParameter;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.support.WebDataBinderFactory;
import org.springframework.web.context.request.NativeWebRequest;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.method.support.ModelAndViewContainer;

import java.util.LinkedHashMap;

@Component
public class TokenToAdminUserMethodArgumentResolver implements HandlerMethodArgumentResolver {

    @Autowired
    private NewBeeCloudUserServiceFeign newBeeCloudUserService;

    public TokenToAdminUserMethodArgumentResolver() {
    }

    public boolean supportsParameter(MethodParameter parameter) {
        if (parameter.hasParameterAnnotation(TokenToAdminUser.class)) {
            return true;
        }
        return false;
    }

    public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) {
        if (parameter.getParameterAnnotation(TokenToAdminUser.class) instanceof TokenToAdminUser) {
            String token = webRequest.getHeader("token");
            if (null != token && !"".equals(token) && token.length() == 32) {
                // 通过用户中心获取用户信息
                Result result = newBeeCloudUserService.getAdminUserByToken(token);

                if (result == null || result.getResultCode() != 200 || result.getData() == null) {
                    NewBeeMallException.fail(ServiceResultEnum.ADMIN_NOT_LOGIN_ERROR.getResult());
                }

                LinkedHashMap resultData = (LinkedHashMap) result.getData();

                // 将返回的字段封装到LoginAdminUser对象中
                LoginAdminUser loginAdminUser = new LoginAdminUser();
                loginAdminUser.setAdminUserId(Long.valueOf(resultData.get("adminUserId").toString()));
                loginAdminUser.setLoginUserName((String) resultData.get("loginUserName"));
                loginAdminUser.setNickName((String) resultData.get("nickName"));
                loginAdminUser.setLocked(Byte.valueOf(resultData.get("locked").toString()));
                return loginAdminUser;
            } else {
                NewBeeMallException.fail(ServiceResultEnum.ADMIN_NOT_LOGIN_ERROR.getResult());
            }
        }
        return null;
    }

}


================================================
FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/config/handler/TokenToMallUserMethodArgumentResolver.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.goods.cloud.newbee.config.handler;

import ltd.common.cloud.newbee.enums.ServiceResultEnum;
import ltd.common.cloud.newbee.dto.Result;
import ltd.common.cloud.newbee.exception.NewBeeMallException;
import ltd.common.cloud.newbee.pojo.MallUserToken;
import ltd.goods.cloud.newbee.config.annotation.TokenToMallUser;
import ltd.user.cloud.newbee.dto.MallUserDTO;
import ltd.user.cloud.newbee.openfeign.NewBeeCloudUserServiceFeign;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.MethodParameter;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.support.WebDataBinderFactory;
import org.springframework.web.context.request.NativeWebRequest;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.method.support.ModelAndViewContainer;

@Component
public class TokenToMallUserMethodArgumentResolver implements HandlerMethodArgumentResolver {

    @Autowired
    private NewBeeCloudUserServiceFeign newBeeCloudUserService;

    public TokenToMallUserMethodArgumentResolver() {
    }

    public boolean supportsParameter(MethodParameter parameter) {
        if (parameter.hasParameterAnnotation(TokenToMallUser.class)) {
            return true;
        }
        return false;
    }

    public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) {
        if (parameter.getParameterAnnotation(TokenToMallUser.class) instanceof TokenToMallUser) {
            String token = webRequest.getHeader("token");
            if (null != token && !"".equals(token) && token.length() == 32) {
                Result<MallUserDTO> result = newBeeCloudUserService.getMallUserByToken(token);
                if (result == null || result.getResultCode() != 200 || result.getData() == null) {
                    NewBeeMallException.fail(ServiceResultEnum.TOKEN_EXPIRE_ERROR.getResult());
                }
                MallUserToken mallUserToken = new MallUserToken();
                mallUserToken.setToken(token);
                mallUserToken.setUserId(result.getData().getUserId());
                return mallUserToken;
            } else {
                NewBeeMallException.fail(ServiceResultEnum.NOT_LOGIN_ERROR.getResult());
            }
        }
        return null;
    }

}


================================================
FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/controller/NewBeeAdminGoodsCategoryController.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.goods.cloud.newbee.controller;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import ltd.common.cloud.newbee.enums.NewBeeMallCategoryLevelEnum;
import ltd.common.cloud.newbee.enums.ServiceResultEnum;
import ltd.common.cloud.newbee.dto.PageQueryUtil;
import ltd.common.cloud.newbee.dto.Result;
import ltd.common.cloud.newbee.dto.ResultGenerator;
import ltd.common.cloud.newbee.util.BeanUtil;
import ltd.goods.cloud.newbee.config.annotation.TokenToAdminUser;
import ltd.goods.cloud.newbee.controller.param.BatchIdParam;
import ltd.goods.cloud.newbee.controller.param.GoodsCategoryAddParam;
import ltd.goods.cloud.newbee.controller.param.GoodsCategoryEditParam;
import ltd.goods.cloud.newbee.entity.GoodsCategory;
import ltd.goods.cloud.newbee.entity.LoginAdminUser;
import ltd.goods.cloud.newbee.service.NewBeeMallCategoryService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import javax.validation.Valid;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author 13
 * @qq交流群 796794009
 * @email 2449207463@qq.com
 * @link https://github.com/newbee-ltd
 */
@RestController
@Api(value = "v1", tags = "后台管理系统分类模块接口")
@RequestMapping("/categories/admin")
public class NewBeeAdminGoodsCategoryController {

    private static final Logger logger = LoggerFactory.getLogger(NewBeeAdminGoodsCategoryController.class);

    @Resource
    private NewBeeMallCategoryService newBeeMallCategoryService;

    /**
     * 列表
     */
    @RequestMapping(value = "/list", method = RequestMethod.GET)
    @ApiOperation(value = "商品分类列表", notes = "根据级别和上级分类id查询")
    public Result list(@RequestParam(required = false) @ApiParam(value = "页码") Integer pageNumber,
                       @RequestParam(required = false) @ApiParam(value = "每页条数") Integer pageSize,
                       @RequestParam(required = false) @ApiParam(value = "分类级别") Integer categoryLevel,
                       @RequestParam(required = false) @ApiParam(value = "上级分类的id") Long parentId, @TokenToAdminUser LoginAdminUser adminUser) {
        logger.info("adminUser:{}", adminUser.toString());
        if (pageNumber == null || pageNumber < 1 || pageSize == null || pageSize < 10 || categoryLevel == null || categoryLevel < 0 || categoryLevel > 3 || parentId == null || parentId < 0) {
            return ResultGenerator.genFailResult("分页参数异常!");
        }
        Map params = new HashMap(8);
        params.put("page", pageNumber);
        params.put("limit", pageSize);
        params.put("categoryLevel", categoryLevel);
        params.put("parentId", parentId);
        PageQueryUtil pageUtil = new PageQueryUtil(params);
        return ResultGenerator.genSuccessResult(newBeeMallCategoryService.getCategorisPage(pageUtil));
    }

    /**
     * 列表
     */
    @RequestMapping(value = "/list4Select", method = RequestMethod.GET)
    @ApiOperation(value = "商品分类列表", notes = "用于三级分类联动效果制作")
    public Result listForSelect(@RequestParam("categoryId") Long categoryId, @TokenToAdminUser LoginAdminUser adminUser) {
        logger.info("adminUser:{}", adminUser.toString());
        if (categoryId == null || categoryId < 1) {
            return ResultGenerator.genFailResult("缺少参数!");
        }
        GoodsCategory category = newBeeMallCategoryService.getGoodsCategoryById(categoryId);
        //既不是一级分类也不是二级分类则为不返回数据
        if (category == null || category.getCategoryLevel() == NewBeeMallCategoryLevelEnum.LEVEL_THREE.getLevel()) {
            return ResultGenerator.genFailResult("参数异常!");
        }
        Map categoryResult = new HashMap(4);
        if (category.getCategoryLevel() == NewBeeMallCategoryLevelEnum.LEVEL_ONE.getLevel()) {
            //如果是一级分类则返回当前一级分类下的所有二级分类,以及二级分类列表中第一条数据下的所有三级分类列表
            //查询一级分类列表中第一个实体的所有二级分类
            List<GoodsCategory> secondLevelCategories = newBeeMallCategoryService.selectByLevelAndParentIdsAndNumber(Collections.singletonList(categoryId), NewBeeMallCategoryLevelEnum.LEVEL_TWO.getLevel());
            if (!CollectionUtils.isEmpty(secondLevelCategories)) {
                //查询二级分类列表中第一个实体的所有三级分类
                List<GoodsCategory> thirdLevelCategories = newBeeMallCategoryService.selectByLevelAndParentIdsAndNumber(Collections.singletonList(secondLevelCategories.get(0).getCategoryId()), NewBeeMallCategoryLevelEnum.LEVEL_THREE.getLevel());
                categoryResult.put("secondLevelCategories", secondLevelCategories);
                categoryResult.put("thirdLevelCategories", thirdLevelCategories);
            }
        }
        if (category.getCategoryLevel() == NewBeeMallCategoryLevelEnum.LEVEL_TWO.getLevel()) {
            //如果是二级分类则返回当前分类下的所有三级分类列表
            List<GoodsCategory> thirdLevelCategories = newBeeMallCategoryService.selectByLevelAndParentIdsAndNumber(Collections.singletonList(categoryId), NewBeeMallCategoryLevelEnum.LEVEL_THREE.getLevel());
            categoryResult.put("thirdLevelCategories", thirdLevelCategories);
        }
        return ResultGenerator.genSuccessResult(categoryResult);
    }

    /**
     * 添加
     */
    @RequestMapping(value = "/add", method = RequestMethod.POST)
    @ApiOperation(value = "新增分类", notes = "新增分类")
    public Result save(@RequestBody @Valid GoodsCategoryAddParam goodsCategoryAddParam, @TokenToAdminUser LoginAdminUser adminUser) {
        logger.info("adminUser:{}", adminUser.toString());
        GoodsCategory goodsCategory = new GoodsCategory();
        BeanUtil.copyProperties(goodsCategoryAddParam, goodsCategory);
        String result = newBeeMallCategoryService.saveCategory(goodsCategory);
        if (ServiceResultEnum.SUCCESS.getResult().equals(result)) {
            return ResultGenerator.genSuccessResult();
        } else {
            return ResultGenerator.genFailResult(result);
        }
    }


    /**
     * 修改
     */
    @RequestMapping(value = "/update", method = RequestMethod.PUT)
    @ApiOperation(value = "修改分类信息", notes = "修改分类信息")
    public Result update(@RequestBody @Valid GoodsCategoryEditParam goodsCategoryEditParam, @TokenToAdminUser LoginAdminUser adminUser) {
        logger.info("adminUser:{}", adminUser.toString());
        GoodsCategory goodsCategory = new GoodsCategory();
        BeanUtil.copyProperties(goodsCategoryEditParam, goodsCategory);
        String result = newBeeMallCategoryService.updateGoodsCategory(goodsCategory);
        if (ServiceResultEnum.SUCCESS.getResult().equals(result)) {
            return ResultGenerator.genSuccessResult();
        } else {
            return ResultGenerator.genFailResult(result);
        }
    }

    /**
     * 详情
     */
    @RequestMapping(value = "/detail/{id}", method = RequestMethod.GET)
    @ApiOperation(value = "获取单条分类信息", notes = "根据id查询")
    public Result info(@PathVariable("id") Long id, @TokenToAdminUser LoginAdminUser adminUser) {
        logger.info("adminUser:{}", adminUser.toString());
        GoodsCategory goodsCategory = newBeeMallCategoryService.getGoodsCategoryById(id);
        if (goodsCategory == null) {
            return ResultGenerator.genFailResult("未查询到数据");
        }
        return ResultGenerator.genSuccessResult(goodsCategory);
    }

    /**
     * 分类删除
     */
    @RequestMapping(value = "/batchDelete", method = RequestMethod.DELETE)
    @ApiOperation(value = "批量删除分类信息", notes = "批量删除分类信息")
    public Result delete(@RequestBody BatchIdParam batchIdParam, @TokenToAdminUser LoginAdminUser adminUser) {
        logger.info("adminUser:{}", adminUser.toString());
        if (batchIdParam == null || batchIdParam.getIds().length < 1) {
            return ResultGenerator.genFailResult("参数异常!");
        }
        if (newBeeMallCategoryService.deleteBatch(batchIdParam.getIds())) {
            return ResultGenerator.genSuccessResult();
        } else {
            return ResultGenerator.genFailResult("删除失败");
        }
    }
}

================================================
FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/controller/NewBeeAdminGoodsInfoController.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.goods.cloud.newbee.controller;

import io.seata.core.context.RootContext;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import ltd.common.cloud.newbee.enums.ServiceResultEnum;
import ltd.common.cloud.newbee.dto.PageQueryUtil;
import ltd.common.cloud.newbee.dto.Result;
import ltd.common.cloud.newbee.dto.ResultGenerator;
import ltd.common.cloud.newbee.util.BeanUtil;
import ltd.goods.cloud.newbee.config.annotation.TokenToAdminUser;
import ltd.goods.cloud.newbee.controller.param.BatchIdParam;
import ltd.goods.cloud.newbee.controller.param.GoodsAddParam;
import ltd.goods.cloud.newbee.controller.param.GoodsEditParam;
import ltd.goods.cloud.newbee.entity.GoodsCategory;
import ltd.goods.cloud.newbee.entity.LoginAdminUser;
import ltd.goods.cloud.newbee.entity.NewBeeMallGoods;
import ltd.goods.cloud.newbee.entity.UpdateStockNumDTO;
import ltd.goods.cloud.newbee.service.NewBeeMallCategoryService;
import ltd.goods.cloud.newbee.service.NewBeeMallGoodsService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import javax.validation.Valid;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author 13
 * @qq交流群 796794009
 * @email 2449207463@qq.com
 * @link https://github.com/newbee-ltd
 */
@RestController
@Api(value = "v1", tags = "后台管理系统商品模块接口")
@RequestMapping("/goods/admin")
public class NewBeeAdminGoodsInfoController {

    private static final Logger logger = LoggerFactory.getLogger(NewBeeAdminGoodsInfoController.class);

    @Resource
    private NewBeeMallGoodsService newBeeMallGoodsService;
    @Resource
    private NewBeeMallCategoryService newBeeMallCategoryService;

    /**
     * 列表
     */
    @RequestMapping(value = "/list", method = RequestMethod.GET)
    @ApiOperation(value = "商品列表", notes = "可根据名称和上架状态筛选")
    public Result list(@RequestParam(required = false) @ApiParam(value = "页码") Integer pageNumber,
                       @RequestParam(required = false) @ApiParam(value = "每页条数") Integer pageSize,
                       @RequestParam(required = false) @ApiParam(value = "商品名称") String goodsName,
                       @RequestParam(required = false) @ApiParam(value = "上架状态 0-上架 1-下架") Integer goodsSellStatus, @TokenToAdminUser LoginAdminUser adminUser) {
        logger.info("adminUser:{}", adminUser.toString());
        if (pageNumber == null || pageNumber < 1 || pageSize == null || pageSize < 10) {
            return ResultGenerator.genFailResult("分页参数异常!");
        }
        Map params = new HashMap(8);
        params.put("page", pageNumber);
        params.put("limit", pageSize);
        if (StringUtils.hasText(goodsName)) {
            params.put("goodsName", goodsName);
        }
        if (goodsSellStatus != null) {
            params.put("goodsSellStatus", goodsSellStatus);
        }
        PageQueryUtil pageUtil = new PageQueryUtil(params);
        return ResultGenerator.genSuccessResult(newBeeMallGoodsService.getNewBeeMallGoodsPage(pageUtil));
    }

    /**
     * 添加
     */
    @RequestMapping(value = "/add", method = RequestMethod.POST)
    @ApiOperation(value = "新增商品信息", notes = "新增商品信息")
    public Result save(@RequestBody @Valid GoodsAddParam goodsAddParam, @TokenToAdminUser LoginAdminUser adminUser) {
        logger.info("adminUser:{}", adminUser.toString());
        NewBeeMallGoods newBeeMallGoods = new NewBeeMallGoods();
        BeanUtil.copyProperties(goodsAddParam, newBeeMallGoods);
        String result = newBeeMallGoodsService.saveNewBeeMallGoods(newBeeMallGoods);
        if (ServiceResultEnum.SUCCESS.getResult().equals(result)) {
            return ResultGenerator.genSuccessResult();
        } else {
            return ResultGenerator.genFailResult(result);
        }
    }


    /**
     * 修改
     */
    @RequestMapping(value = "/update", method = RequestMethod.PUT)
    @ApiOperation(value = "修改商品信息", notes = "修改商品信息")
    public Result update(@RequestBody @Valid GoodsEditParam goodsEditParam, @TokenToAdminUser LoginAdminUser adminUser) {
        logger.info("adminUser:{}", adminUser.toString());
        NewBeeMallGoods newBeeMallGoods = new NewBeeMallGoods();
        BeanUtil.copyProperties(goodsEditParam, newBeeMallGoods);
        String result = newBeeMallGoodsService.updateNewBeeMallGoods(newBeeMallGoods);
        if (ServiceResultEnum.SUCCESS.getResult().equals(result)) {
            return ResultGenerator.genSuccessResult();
        } else {
            return ResultGenerator.genFailResult(result);
        }
    }

    /**
     * 详情
     */
    @GetMapping("/detail/{id}")
    @ApiOperation(value = "获取单条商品信息", notes = "根据id查询")
    public Result info(@PathVariable("id") Long id, @TokenToAdminUser LoginAdminUser adminUser) {
        logger.info("adminUser:{}", adminUser.toString());
        Map goodsInfo = new HashMap(8);
        NewBeeMallGoods goods = newBeeMallGoodsService.getNewBeeMallGoodsById(id);
        if (goods == null) {
            return ResultGenerator.genFailResult(ServiceResultEnum.DATA_NOT_EXIST.getResult());
        }
        goodsInfo.put("goods", goods);
        GoodsCategory thirdCategory;
        GoodsCategory secondCategory;
        GoodsCategory firstCategory;
        thirdCategory = newBeeMallCategoryService.getGoodsCategoryById(goods.getGoodsCategoryId());
        if (thirdCategory != null) {
            goodsInfo.put("thirdCategory", thirdCategory);
            secondCategory = newBeeMallCategoryService.getGoodsCategoryById(thirdCategory.getParentId());
            if (secondCategory != null) {
                goodsInfo.put("secondCategory", secondCategory);
                firstCategory = newBeeMallCategoryService.getGoodsCategoryById(secondCategory.getParentId());
                if (firstCategory != null) {
                    goodsInfo.put("firstCategory", firstCategory);
                }
            }
        }
        return ResultGenerator.genSuccessResult(goodsInfo);
    }

    /**
     * 批量修改销售状态
     */
    @RequestMapping(value = "/updateStatus/{sellStatus}", method = RequestMethod.PUT)
    @ApiOperation(value = "批量修改销售状态", notes = "批量修改销售状态")
    public Result delete(@RequestBody BatchIdParam batchIdParam, @PathVariable("sellStatus") int sellStatus, @TokenToAdminUser LoginAdminUser adminUser) {
        logger.info("adminUser:{}", adminUser.toString());
        if (batchIdParam == null || batchIdParam.getIds().length < 1) {
            return ResultGenerator.genFailResult("参数异常!");
        }
        if (sellStatus != 0 && sellStatus != 1) {
            return ResultGenerator.genFailResult("状态异常!");
        }
        if (newBeeMallGoodsService.batchUpdateSellStatus(batchIdParam.getIds(), sellStatus)) {
            return ResultGenerator.genSuccessResult();
        } else {
            return ResultGenerator.genFailResult("修改失败");
        }
    }

    /**
     * 详情
     */
    @GetMapping("/goodsDetail")
    @ApiOperation(value = "获取单条商品信息", notes = "根据id查询")
    public Result goodsDetail(@RequestParam("goodsId") Long goodsId) {
        NewBeeMallGoods goods = newBeeMallGoodsService.getNewBeeMallGoodsById(goodsId);
        return ResultGenerator.genSuccessResult(goods);
    }

    /**
     * 根据ids查询商品列表
     */
    @GetMapping("/listByGoodsIds")
    @ApiOperation(value = "根据ids查询商品列表", notes = "根据ids查询")
    public Result getNewBeeMallGoodsByIds(@RequestParam("goodsIds") List<Long> goodsIds) {
        List<NewBeeMallGoods> newBeeMallGoods = newBeeMallGoodsService.getNewBeeMallGoodsByIds(goodsIds);
        return ResultGenerator.genSuccessResult(newBeeMallGoods);
    }

    /**
     * 修改库存
     */
    @PutMapping("/updateStock")
    @ApiOperation(value = "修改库存", notes = "")
    public Result updateStock(@RequestBody UpdateStockNumDTO updateStockNumDTO) {
        System.out.println("RootContext.getXID()="+RootContext.getXID());
        return ResultGenerator.genSuccessResult(newBeeMallGoodsService.updateStockNum(updateStockNumDTO.getStockNumDTOS()));
    }

}

================================================
FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/controller/NewBeeMallGoodsCategoryController.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.goods.cloud.newbee.controller;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import ltd.common.cloud.newbee.enums.ServiceResultEnum;
import ltd.common.cloud.newbee.dto.Result;
import ltd.common.cloud.newbee.dto.ResultGenerator;
import ltd.common.cloud.newbee.exception.NewBeeMallException;
import ltd.goods.cloud.newbee.controller.vo.NewBeeMallIndexCategoryVO;
import ltd.goods.cloud.newbee.service.NewBeeMallCategoryService;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.List;

@RestController
@Api(value = "v1", tags = "新蜂商城分类页面接口")
@RequestMapping("/categories/mall")
public class NewBeeMallGoodsCategoryController {

    @Resource
    private NewBeeMallCategoryService newBeeMallCategoryService;

    @GetMapping("/listAll")
    @ApiOperation(value = "获取分类数据", notes = "分类页面使用")
    public Result<List<NewBeeMallIndexCategoryVO>> getCategories() {
        List<NewBeeMallIndexCategoryVO> categories = newBeeMallCategoryService.getCategoriesForIndex();
        if (CollectionUtils.isEmpty(categories)) {
            NewBeeMallException.fail(ServiceResultEnum.DATA_NOT_EXIST.getResult());
        }
        return ResultGenerator.genSuccessResult(categories);
    }
}


================================================
FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/controller/NewBeeMallGoodsController.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.goods.cloud.newbee.controller;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import ltd.common.cloud.newbee.enums.ServiceResultEnum;
import ltd.common.cloud.newbee.dto.PageQueryUtil;
import ltd.common.cloud.newbee.dto.PageResult;
import ltd.common.cloud.newbee.dto.Result;
import ltd.common.cloud.newbee.dto.ResultGenerator;
import ltd.common.cloud.newbee.exception.NewBeeMallException;
import ltd.common.cloud.newbee.pojo.MallUserToken;
import ltd.common.cloud.newbee.util.BeanUtil;
import ltd.goods.cloud.newbee.config.annotation.TokenToMallUser;
import ltd.goods.cloud.newbee.controller.vo.NewBeeMallGoodsDetailVO;
import ltd.goods.cloud.newbee.controller.vo.NewBeeMallSearchGoodsVO;
import ltd.goods.cloud.newbee.entity.NewBeeMallGoods;
import ltd.goods.cloud.newbee.service.NewBeeMallGoodsService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.StringUtils;
import org.springframework.validation.BindException;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@RestController
@Api(value = "v1", tags = "新蜂商城商品相关接口")
@RequestMapping("/goods/mall")
public class NewBeeMallGoodsController {

    private static final Logger logger = LoggerFactory.getLogger(NewBeeMallGoodsController.class);

    @Resource
    private NewBeeMallGoodsService newBeeMallGoodsService;

    @GetMapping("/test1")
    public Result<String> test1() throws BindException {
        throw new BindException(1,"BindException");
    }

    @GetMapping("/test2")
    public Result<String> test2() throws NewBeeMallException {
        NewBeeMallException.fail("NewBeeMallException");
        return ResultGenerator.genSuccessResult("test2");
    }

    @GetMapping("/test3")
    public Result<String> test3() throws Exception {
        int i=1/0;
        return ResultGenerator.genSuccessResult("test2");
    }

    @GetMapping("/search")
    @ApiOperation(value = "商品搜索接口", notes = "根据关键字和分类id进行搜索")
    public Result<PageResult<List<NewBeeMallSearchGoodsVO>>> search(@RequestParam(required = false) @ApiParam(value = "搜索关键字") String keyword,
                                                                    @RequestParam(required = false) @ApiParam(value = "分类id") Long goodsCategoryId,
                                                                    @RequestParam(required = false) @ApiParam(value = "orderBy") String orderBy,
                                                                    @RequestParam(required = false) @ApiParam(value = "页码") Integer pageNumber,
                                                                    @TokenToMallUser MallUserToken loginMallUserToken) {
        
        logger.info("goods search api,keyword={},goodsCategoryId={},orderBy={},pageNumber={},userId={}", keyword, goodsCategoryId, orderBy, pageNumber, loginMallUserToken.getUserId());

        Map params = new HashMap(8);
        //两个搜索参数都为空,直接返回异常
        if (goodsCategoryId == null && !StringUtils.hasText(keyword)) {
            NewBeeMallException.fail("非法的搜索参数");
        }
        if (pageNumber == null || pageNumber < 1) {
            pageNumber = 1;
        }
        params.put("goodsCategoryId", goodsCategoryId);
        params.put("page", pageNumber);
        params.put("limit", 10);
        //对keyword做过滤 去掉空格
        if (StringUtils.hasText(keyword)) {
            params.put("keyword", keyword);
        }
        if (StringUtils.hasText(orderBy)) {
            params.put("orderBy", orderBy);
        }
        //搜索上架状态下的商品
        params.put("goodsSellStatus", 0);
        //封装商品数据
        PageQueryUtil pageUtil = new PageQueryUtil(params);
        return ResultGenerator.genSuccessResult(newBeeMallGoodsService.searchNewBeeMallGoods(pageUtil));
    }

    @GetMapping("/detail/{goodsId}")
    @ApiOperation(value = "商品详情接口", notes = "传参为商品id")
    public Result<NewBeeMallGoodsDetailVO> goodsDetail(@ApiParam(value = "商品id") @PathVariable("goodsId") Long goodsId, @TokenToMallUser MallUserToken loginMallUserToken) {
        logger.info("goods detail api,goodsId={},userId={}", goodsId, loginMallUserToken.getUserId());
        if (goodsId < 1) {
            return ResultGenerator.genFailResult("参数异常");
        }
        NewBeeMallGoods goods = newBeeMallGoodsService.getNewBeeMallGoodsById(goodsId);
        if (0 != goods.getGoodsSellStatus()) {
            NewBeeMallException.fail(ServiceResultEnum.GOODS_PUT_DOWN.getResult());
        }
        NewBeeMallGoodsDetailVO goodsDetailVO = new NewBeeMallGoodsDetailVO();
        BeanUtil.copyProperties(goods, goodsDetailVO);
        goodsDetailVO.setGoodsCarouselList(goods.getGoodsCarousel().split(","));
        return ResultGenerator.genSuccessResult(goodsDetailVO);
    }

}


================================================
FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/controller/param/BatchIdParam.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.goods.cloud.newbee.controller.param;

import lombok.Data;

import java.io.Serializable;

@Data
public class BatchIdParam implements Serializable {
    //id数组
    Long[] ids;
}


================================================
FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/controller/param/GoodsAddParam.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.goods.cloud.newbee.controller.param;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;

@Data
public class GoodsAddParam {

    @ApiModelProperty("商品名称")
    @NotEmpty(message = "商品名称不能为空")
    @Length(max = 128,message = "商品名称内容过长")
    private String goodsName;

    @ApiModelProperty("商品简介")
    @NotEmpty(message = "商品简介不能为空")
    @Length(max = 200,message = "商品简介内容过长")
    private String goodsIntro;

    @ApiModelProperty("分类id")
    @NotNull(message = "分类id不能为空")
    @Min(value = 1, message = "分类id最低为1")
    private Long goodsCategoryId;

    @ApiModelProperty("商品主图")
    @NotEmpty(message = "商品主图不能为空")
    private String goodsCoverImg;

    @ApiModelProperty("originalPrice")
    @NotNull(message = "originalPrice不能为空")
    @Min(value = 1, message = "originalPrice最低为1")
    @Max(value = 1000000, message = "originalPrice最高为1000000")
    private Integer originalPrice;

    @ApiModelProperty("sellingPrice")
    @NotNull(message = "sellingPrice不能为空")
    @Min(value = 1, message = "sellingPrice最低为1")
    @Max(value = 1000000, message = "sellingPrice最高为1000000")
    private Integer sellingPrice;

    @ApiModelProperty("库存")
    @NotNull(message = "库存不能为空")
    @Min(value = 1, message = "库存最低为1")
    @Max(value = 100000, message = "库存最高为100000")
    private Integer stockNum;

    @ApiModelProperty("商品标签")
    @NotEmpty(message = "商品标签不能为空")
    @Length(max = 16,message = "商品标签内容过长")
    private String tag;

    private Byte goodsSellStatus;

    @ApiModelProperty("商品详情")
    @NotEmpty(message = "商品详情不能为空")
    private String goodsDetailContent;
}

================================================
FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/controller/param/GoodsCategoryAddParam.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.goods.cloud.newbee.controller.param;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;

@Data
public class GoodsCategoryAddParam {

    @ApiModelProperty("分类层级")
    @NotNull(message = "categoryLevel不能为空")
    @Min(value = 1, message = "分类级别最低为1")
    @Max(value = 3, message = "分类级别最高为3")
    private Byte categoryLevel;

    @ApiModelProperty("父类id")
    @NotNull(message = "parentId不能为空")
    @Min(value = 0, message = "parentId最低为0")
    private Long parentId;

    @ApiModelProperty("分类名称")
    @NotEmpty(message = "categoryName不能为空")
    @Length(max = 16,message = "分类名称过长")
    private String categoryName;

    @ApiModelProperty("排序值")
    @Min(value = 1, message = "categoryRank最低为1")
    @Max(value = 200, message = "categoryRank最高为200")
    @NotNull(message = "categoryRank不能为空")
    private Integer categoryRank;
}

================================================
FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/controller/param/GoodsCategoryEditParam.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.goods.cloud.newbee.controller.param;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;

@Data
public class GoodsCategoryEditParam {

    @ApiModelProperty("待修改分类id")
    @NotNull(message = "分类id不能为空")
    @Min(value = 1, message = "分类id不能为空")
    private Long categoryId;

    @ApiModelProperty("分类层级")
    @NotNull(message = "categoryLevel不能为空")
    @Min(value = 1, message = "分类级别最低为1")
    @Max(value = 3, message = "分类级别最高为3")
    private Byte categoryLevel;

    @ApiModelProperty("父类id")
    @NotNull(message = "parentId不能为空")
    @Min(value = 0, message = "parentId最低为0")
    private Long parentId;

    @ApiModelProperty("分类名称")
    @NotEmpty(message = "categoryName不能为空")
    @Length(max = 16,message = "分类名称过长")
    private String categoryName;

    @ApiModelProperty("排序值")
    @Min(value = 1, message = "categoryRank最低为1")
    @Max(value = 200, message = "categoryRank最高为200")
    @NotNull(message = "categoryRank不能为空")
    private Integer categoryRank;
}

================================================
FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/controller/param/GoodsEditParam.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.goods.cloud.newbee.controller.param;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;

@Data
public class GoodsEditParam {

    @ApiModelProperty("待修改商品id")
    @NotNull(message = "商品id不能为空")
    @Min(value = 1, message = "商品id不能为空")
    private Long goodsId;

    @ApiModelProperty("商品名称")
    @NotEmpty(message = "商品名称不能为空")
    @Length(max = 128,message = "商品名称内容过长")
    private String goodsName;

    @ApiModelProperty("商品简介")
    @NotEmpty(message = "商品简介不能为空")
    @Length(max = 200,message = "商品简介内容过长")
    private String goodsIntro;

    @ApiModelProperty("分类id")
    @NotNull(message = "分类id不能为空")
    @Min(value = 1, message = "分类id最低为1")
    private Long goodsCategoryId;

    @ApiModelProperty("商品主图")
    @NotEmpty(message = "商品主图不能为空")
    private String goodsCoverImg;

    @ApiModelProperty("originalPrice")
    @NotNull(message = "originalPrice不能为空")
    @Min(value = 1, message = "originalPrice最低为1")
    @Max(value = 1000000, message = "originalPrice最高为1000000")
    private Integer originalPrice;

    @ApiModelProperty("sellingPrice")
    @NotNull(message = "sellingPrice不能为空")
    @Min(value = 1, message = "sellingPrice最低为1")
    @Max(value = 1000000, message = "sellingPrice最高为1000000")
    private Integer sellingPrice;

    @ApiModelProperty("库存")
    @NotNull(message = "库存不能为空")
    @Min(value = 1, message = "库存最低为1")
    @Max(value = 100000, message = "库存最高为100000")
    private Integer stockNum;

    @ApiModelProperty("商品标签")
    @NotEmpty(message = "商品标签不能为空")
    @Length(max = 16,message = "商品标签内容过长")
    private String tag;

    private Byte goodsSellStatus;

    @ApiModelProperty("商品详情")
    @NotEmpty(message = "商品详情不能为空")
    private String goodsDetailContent;
}

================================================
FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/controller/vo/NewBeeMallGoodsDetailVO.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.goods.cloud.newbee.controller.vo;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;

/**
 * 商品详情页VO
 */
@Data
public class NewBeeMallGoodsDetailVO implements Serializable {

    @ApiModelProperty("商品id")
    private Long goodsId;

    @ApiModelProperty("商品名称")
    private String goodsName;

    @ApiModelProperty("商品简介")
    private String goodsIntro;

    @ApiModelProperty("商品图片地址")
    private String goodsCoverImg;

    @ApiModelProperty("商品价格")
    private Integer sellingPrice;

    @ApiModelProperty("商品标签")
    private String tag;

    @ApiModelProperty("商品图片")
    private String[] goodsCarouselList;

    @ApiModelProperty("商品原价")
    private Integer originalPrice;

    @ApiModelProperty("商品详情字段")
    private String goodsDetailContent;
}


================================================
FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/controller/vo/NewBeeMallIndexCategoryVO.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.goods.cloud.newbee.controller.vo;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.List;

/**
 * 首页分类数据VO
 */
@Data
public class NewBeeMallIndexCategoryVO implements Serializable {

    @ApiModelProperty("当前一级分类id")
    private Long categoryId;

    @ApiModelProperty("当前分类级别")
    private Byte categoryLevel;

    @ApiModelProperty("当前一级分类名称")
    private String categoryName;

    @ApiModelProperty("二级分类列表")
    private List<SecondLevelCategoryVO> secondLevelCategoryVOS;
}


================================================
FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/controller/vo/NewBeeMallSearchGoodsVO.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.goods.cloud.newbee.controller.vo;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;

/**
 * 搜索列表页商品VO
 */
@Data
public class NewBeeMallSearchGoodsVO implements Serializable {

    @ApiModelProperty("商品id")
    private Long goodsId;

    @ApiModelProperty("商品名称")
    private String goodsName;

    @ApiModelProperty("商品简介")
    private String goodsIntro;

    @ApiModelProperty("商品图片地址")
    private String goodsCoverImg;

    @ApiModelProperty("商品价格")
    private Integer sellingPrice;

}


================================================
FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/controller/vo/SecondLevelCategoryVO.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.goods.cloud.newbee.controller.vo;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.List;

/**
 * 首页分类数据VO(第二级)
 */
@Data
public class SecondLevelCategoryVO implements Serializable {

    @ApiModelProperty("当前二级分类id")
    private Long categoryId;

    @ApiModelProperty("父级分类id")
    private Long parentId;

    @ApiModelProperty("当前分类级别")
    private Byte categoryLevel;

    @ApiModelProperty("当前二级分类名称")
    private String categoryName;

    @ApiModelProperty("三级分类列表")
    private List<ThirdLevelCategoryVO> thirdLevelCategoryVOS;
}


================================================
FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/controller/vo/ThirdLevelCategoryVO.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.goods.cloud.newbee.controller.vo;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;

/**
 * 首页分类数据VO(第三级)
 */
@Data
public class ThirdLevelCategoryVO implements Serializable {

    @ApiModelProperty("当前三级分类id")
    private Long categoryId;

    @ApiModelProperty("当前分类级别")
    private Byte categoryLevel;

    @ApiModelProperty("当前三级分类名称")
    private String categoryName;
}


================================================
FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/dao/GoodsCategoryMapper.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.goods.cloud.newbee.dao;

import ltd.common.cloud.newbee.dto.PageQueryUtil;
import ltd.goods.cloud.newbee.entity.GoodsCategory;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface GoodsCategoryMapper {
    int deleteByPrimaryKey(Long categoryId);

    int insert(GoodsCategory record);

    int insertSelective(GoodsCategory record);

    GoodsCategory selectByPrimaryKey(Long categoryId);

    GoodsCategory selectByLevelAndName(@Param("categoryLevel") Byte categoryLevel, @Param("categoryName") String categoryName);

    int updateByPrimaryKeySelective(GoodsCategory record);

    int updateByPrimaryKey(GoodsCategory record);

    List<GoodsCategory> findGoodsCategoryList(PageQueryUtil pageUtil);

    int getTotalGoodsCategories(PageQueryUtil pageUtil);

    int deleteBatch(Long[] ids);

    List<GoodsCategory> selectByLevelAndParentIdsAndNumber(@Param("parentIds") List<Long> parentIds, @Param("categoryLevel") int categoryLevel, @Param("number") int number);
}

================================================
FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/dao/NewBeeMallGoodsMapper.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.goods.cloud.newbee.dao;

import ltd.common.cloud.newbee.dto.PageQueryUtil;
import ltd.goods.cloud.newbee.entity.NewBeeMallGoods;
import ltd.goods.cloud.newbee.entity.StockNumDTO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface NewBeeMallGoodsMapper {
    int deleteByPrimaryKey(Long goodsId);

    int insert(NewBeeMallGoods record);

    int insertSelective(NewBeeMallGoods record);

    NewBeeMallGoods selectByPrimaryKey(Long goodsId);

    NewBeeMallGoods selectByCategoryIdAndName(@Param("goodsName") String goodsName, @Param("goodsCategoryId") Long goodsCategoryId);

    int updateByPrimaryKeySelective(NewBeeMallGoods record);

    int updateByPrimaryKeyWithBLOBs(NewBeeMallGoods record);

    int updateByPrimaryKey(NewBeeMallGoods record);

    List<NewBeeMallGoods> findNewBeeMallGoodsList(PageQueryUtil pageUtil);

    int getTotalNewBeeMallGoods(PageQueryUtil pageUtil);

    List<NewBeeMallGoods> selectByPrimaryKeys(List<Long> goodsIds);

    List<NewBeeMallGoods> findNewBeeMallGoodsListBySearch(PageQueryUtil pageUtil);

    int getTotalNewBeeMallGoodsBySearch(PageQueryUtil pageUtil);

    int batchInsert(@Param("newBeeMallGoodsList") List<NewBeeMallGoods> newBeeMallGoodsList);

    int updateStockNum(@Param("stockNumDTOS") List<StockNumDTO> stockNumDTOS);

    int batchUpdateSellStatus(@Param("orderIds")Long[] orderIds,@Param("sellStatus") int sellStatus);

}

================================================
FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/entity/GoodsCategory.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.goods.cloud.newbee.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.util.Date;

@Data
public class GoodsCategory {
    private Long categoryId;

    private Byte categoryLevel;

    private Long parentId;

    private String categoryName;

    private Integer categoryRank;

    private Byte isDeleted;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;

    private Integer createUser;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date updateTime;

    private Integer updateUser;
}

================================================
FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/entity/LoginAdminUser.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.goods.cloud.newbee.entity;

import lombok.Data;

@Data
public class LoginAdminUser {
    private Long adminUserId;

    private String loginUserName;

    private String loginPassword;

    private String nickName;

    private Byte locked;
}

================================================
FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/entity/NewBeeMallGoods.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.goods.cloud.newbee.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.util.Date;

@Data
public class NewBeeMallGoods {
    private Long goodsId;

    private String goodsName;

    private String goodsIntro;

    private Long goodsCategoryId;

    private String goodsCoverImg;

    private String goodsCarousel;

    private Integer originalPrice;

    private Integer sellingPrice;

    private Integer stockNum;

    private String tag;

    private Byte goodsSellStatus;

    private Integer createUser;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;

    private Integer updateUser;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date updateTime;

    private String goodsDetailContent;
}

================================================
FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/entity/StockNumDTO.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.goods.cloud.newbee.entity;

import lombok.Data;

/**
 * 库存修改所需实体
 */

@Data
public class StockNumDTO {
    private Long goodsId;

    private Integer goodsCount;
}


================================================
FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/entity/UpdateStockNumDTO.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.goods.cloud.newbee.entity;

import lombok.Data;
import java.util.List;

@Data
public class UpdateStockNumDTO {

    private List<StockNumDTO> stockNumDTOS;

    public List<StockNumDTO> getStockNumDTOS() {
        return stockNumDTOS;
    }

    public void setStockNumDTOS(List<StockNumDTO> stockNumDTOS) {
        this.stockNumDTOS = stockNumDTOS;
    }
}


================================================
FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/service/NewBeeMallCategoryService.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.goods.cloud.newbee.service;

import ltd.common.cloud.newbee.dto.PageQueryUtil;
import ltd.common.cloud.newbee.dto.PageResult;
import ltd.goods.cloud.newbee.controller.vo.NewBeeMallIndexCategoryVO;
import ltd.goods.cloud.newbee.entity.GoodsCategory;

import java.util.List;

public interface NewBeeMallCategoryService {

    String saveCategory(GoodsCategory goodsCategory);

    String updateGoodsCategory(GoodsCategory goodsCategory);

    GoodsCategory getGoodsCategoryById(Long id);

    Boolean deleteBatch(Long[] ids);

    /**
     * 后台分页
     *
     * @param pageUtil
     * @return
     */
    PageResult getCategorisPage(PageQueryUtil pageUtil);

    /**
     * 根据parentId和level获取分类列表
     *
     * @param parentIds
     * @param categoryLevel
     * @return
     */
    List<GoodsCategory> selectByLevelAndParentIdsAndNumber(List<Long> parentIds, int categoryLevel);

    /**
     * 返回分类数据(首页调用)
     *
     * @return
     */
    List<NewBeeMallIndexCategoryVO> getCategoriesForIndex();

}


================================================
FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/service/NewBeeMallGoodsService.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.goods.cloud.newbee.service;

import ltd.common.cloud.newbee.dto.PageQueryUtil;
import ltd.common.cloud.newbee.dto.PageResult;
import ltd.goods.cloud.newbee.entity.NewBeeMallGoods;
import ltd.goods.cloud.newbee.entity.StockNumDTO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface NewBeeMallGoodsService {
    /**
     * 后台分页
     *
     * @param pageUtil
     * @return
     */
    PageResult getNewBeeMallGoodsPage(PageQueryUtil pageUtil);

    /**
     * 添加商品
     *
     * @param goods
     * @return
     */
    String saveNewBeeMallGoods(NewBeeMallGoods goods);

    /**
     * 批量新增商品数据
     *
     * @param newBeeMallGoodsList
     * @return
     */
    void batchSaveNewBeeMallGoods(List<NewBeeMallGoods> newBeeMallGoodsList);

    /**
     * 修改商品信息
     *
     * @param goods
     * @return
     */
    String updateNewBeeMallGoods(NewBeeMallGoods goods);

    /**
     * 批量修改销售状态(上架下架)
     *
     * @param ids
     * @return
     */
    Boolean batchUpdateSellStatus(Long[] ids, int sellStatus);

    /**
     * 获取商品详情
     *
     * @param id
     * @return
     */
    NewBeeMallGoods getNewBeeMallGoodsById(Long id);

    /**
     * 获取商品数据
     *
     * @param goodsIds
     * @return
     */
    List<NewBeeMallGoods> getNewBeeMallGoodsByIds(List<Long> goodsIds);

    /**
     * 商品搜索
     *
     * @param pageUtil
     * @return
     */
    PageResult searchNewBeeMallGoods(PageQueryUtil pageUtil);

    Boolean updateStockNum(List<StockNumDTO> stockNumDTOS);
}


================================================
FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/service/impl/NewBeeMallCategoryServiceImpl.java
================================================
/**
 * 严肃声明:
 * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!
 * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!
 * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究!
 * Copyright (c) 2022 程序员十三 all rights reserved.
 * 版权所有,侵权必究!
 */
package ltd.goods.cloud.newbee.service.impl;

import ltd.common.cloud.newbee.enums.NewBeeMallCategoryLevelEnum;
import ltd.common.cloud.newbee.enums.ServiceResultEnum;
import ltd.common.cloud.newbee.dto.PageQueryUtil;
import ltd.common.cloud.newbee.dto.PageResult;
import ltd.common.cloud.newbee.util.BeanUtil;
import ltd.goods.cloud.newbee.controller.vo.NewBeeMallIndexCategoryVO;
import ltd.goods.cloud.newbee.controller.vo.SecondLevelCategoryVO;
import ltd.goods.cloud.newbee.controller.vo.ThirdLevelCategoryVO;
import ltd.goods.cloud.newbee.dao.GoodsCategoryMapper;
import ltd.goods.cloud.newbee.entity.GoodsCategory;
import ltd.goods.cloud.newbee.service.NewBeeMallCategoryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;

import java.util.*;
import java.util.stream.Collectors;

import static java.util.stream.Collectors.groupingBy;

@Service
public class NewBeeMallCategoryServiceImpl implements NewBeeMallCategoryService {

    @Autowired
    private GoodsCategoryMapper goodsCategoryMapper;

    @Override
    public String saveCategory(GoodsCategory goodsCategory) {
        GoodsCategory temp = goodsCategoryMapper.selectByLevelAndName(goodsCategory.getCategoryLevel(), goodsCategory.getCategoryName());
        if (temp != null) {
            return ServiceResultEnum.SAME_CATEGORY_EXIST.getResult();
        }
        if (goodsCategoryMapper.insertSelective(goodsCategory) > 0) {
            return ServiceResultEnum.SUCCESS.getResult();
        }
        return ServiceResultEnum.DB_ERROR.getResult();
    }

    @Override
    public String updateGoodsCategory(GoodsCategory goodsCategory) {
        GoodsCategory temp = goodsCategoryMapper.selectByPrimaryKey(goodsCategory.getCategoryId());
        if (temp == null) {
            return ServiceResultEnum.DATA_NOT_EXIST.getResult();
        }
        GoodsCategory temp2 = goodsCategoryMapper.selectByLevelAndName(goodsCategory.getCategoryLevel(), goodsCategory.getCategoryName());
        if (temp2 != null && !temp2.getCategoryId().equals(goodsCategory.getCategoryId())) {
            //同名且不同id 不能继续修改
            return ServiceResultEnum.SAME_CATEGORY_EXIST.getResult();
        }
        goodsCategory.setUpdateTime(new Date());
        if (goodsCategoryMapper.updateByPrimaryKeySelective(goodsCategory) > 0) {
            return ServiceResultEnum.SUCCESS.getResult();
        }
        return ServiceResultEnum.DB_ERROR.getResult();
    }

    @Override
    public GoodsCategory getGoodsCategoryById(Long id) {
        return goodsCategoryMapper.selectByPrimaryKey(id);
    }

    @Override
    public Boolean deleteBatch(Long[] ids) {
        if (ids.length < 1) {
            return false;
        }
        //删除分类数据
        return goodsCategoryMapper.deleteBatch(ids) > 0;
    }

    @Override
    public PageResult getCategorisPage(PageQueryUtil pageUtil) {
        List<GoodsCategory> goodsCategories = goodsCategoryMapper.findGoodsCategoryList(pageUtil);
        int total = goodsCategoryMapper.getTotalGoodsCategories(pageUtil);
        PageResult pageResult = new PageResult(goodsCategories, total, pageUtil.getLimit(), pageUtil.getPage());
        return pageResult;
    }

    @Override
    public List<GoodsCategory> selectByLevelAndParentIdsAndNumber(List<Long> parentIds, int categoryLevel) {
        return goodsCategoryMapper.selectByLevelAndParentIdsAndNumber(parentIds, categoryLevel, 0);//0代表查询所有
    }


    @Override
    public List<NewBeeMallIndexCategoryVO> getCategoriesForIndex() {
        List<NewBeeMallIndexCategoryVO> newBeeMallIndexCategoryVOS = new ArrayList<>();
        //获取一级分类的固定数量的数据
        List<GoodsCategory> firstLevelCategories = goodsCategoryMapper.selectByLevelAndParentIdsAndNumber(Collections.singletonList(0L), NewBeeMallCategoryLevelEnum.LEVEL_ONE.getLevel(), 10);
        if (!CollectionUtils.isEmpty(firstLevelCategories)) {
            List<Long> firstLevelCategoryIds = firstLevelCategories.stream().map(GoodsCategory::getCategoryId).collect(Collectors.toList());
            //获取二级分类的数据
            List<GoodsCategory> secondLevelCategories = goodsCategoryMapper.selectByLevelAndParentIdsAndNumber(firstLevelCategoryIds, NewBeeMallCategoryLevelEnum.LEVEL_TWO.getLevel(), 0);
            if (!CollectionUtils.isEmpty(secondLevelCategories)) {
                List<Long> secondLevelCategoryIds = secondLevelCategories.stream().map(GoodsCategory::getCategoryId).collect(Collectors.toList());
                //获取三级分类的数据
                List<GoodsCategory> thirdLevelCategories = goodsCategoryMapper.selectByLevelAndParentIdsAndNumber(secondLevelCategoryIds, NewBeeMallCategoryLevelEnum.LEVEL_THREE.getLevel(), 0);
                if (!CollectionUtils.isEmpty(thirdLevelCategories)) {
                    //根据 parentId 将 thirdLevelCategories 分组
                    Map<Long, List<GoodsCategory>> thirdLevelCategoryMap = thirdLevelCategories.stream().collect(groupingBy(GoodsCategory::getParentId));
                    List<SecondLevelCategoryVO> secondLevelCategoryVOS = new ArrayList<>();
                    //处理二级分类
                    for (GoodsCategory secondLevelCategory : secondLevelCategories) {
                        SecondLevelCategoryVO secondLevelCategoryVO = new SecondLevelCategoryVO();
                        BeanUtil.copyProperties(secondLevelCategory, secondLevelCategoryVO);
                        //如果该二级分类下有数据则放入 secondLevelCategoryVOS 对象中
                        if (thirdLevelCategoryMap.containsKey(secondLevelCategory.getCategoryId())) {
                            //根据二级分类的id取出thirdLevelCategoryMap分组中的三级分类list
                            List<GoodsCategory> tempGoodsCategories = thirdLevelCateg
Download .txt
gitextract_bb6zddio/

├── .gitignore
├── LICENSE
├── README.md
├── newbee-mall-cloud-common/
│   ├── pom.xml
│   └── src/
│       └── main/
│           └── java/
│               └── ltd/
│                   └── common/
│                       └── cloud/
│                           └── newbee/
│                               ├── dto/
│                               │   ├── PageQueryUtil.java
│                               │   ├── PageResult.java
│                               │   ├── Result.java
│                               │   └── ResultGenerator.java
│                               ├── enums/
│                               │   ├── IndexConfigTypeEnum.java
│                               │   ├── NewBeeMallCategoryLevelEnum.java
│                               │   ├── NewBeeMallOrderStatusEnum.java
│                               │   ├── PayStatusEnum.java
│                               │   ├── PayTypeEnum.java
│                               │   └── ServiceResultEnum.java
│                               ├── exception/
│                               │   └── NewBeeMallException.java
│                               ├── pojo/
│                               │   ├── AdminUserToken.java
│                               │   └── MallUserToken.java
│                               └── util/
│                                   ├── BeanUtil.java
│                                   ├── MD5Util.java
│                                   ├── NewBeeMallUtils.java
│                                   ├── NumberUtil.java
│                                   └── SystemUtil.java
├── newbee-mall-cloud-gateway-admin/
│   ├── pom.xml
│   └── src/
│       └── main/
│           ├── java/
│           │   └── ltd/
│           │       └── gateway/
│           │           └── cloud/
│           │               └── newbee/
│           │                   ├── NewBeeMallCloudAdminGatewayApplication.java
│           │                   ├── config/
│           │                   │   ├── PolymerizeSwaggerProvider.java
│           │                   │   └── RedisConfig.java
│           │                   └── filter/
│           │                       └── ValidTokenGlobalFilter.java
│           └── resources/
│               └── application.properties
├── newbee-mall-cloud-gateway-mall/
│   ├── pom.xml
│   └── src/
│       └── main/
│           ├── java/
│           │   └── ltd/
│           │       └── gateway/
│           │           └── cloud/
│           │               └── newbee/
│           │                   ├── NewBeeMallCloudMallGatewayApplication.java
│           │                   ├── config/
│           │                   │   ├── PolymerizeSwaggerProvider.java
│           │                   │   └── RedisConfig.java
│           │                   └── filter/
│           │                       └── ValidMallUserTokenGlobalFilter.java
│           └── resources/
│               └── application.properties
├── newbee-mall-cloud-goods-service/
│   ├── newbee-mall-cloud-goods-api/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           └── java/
│   │               └── ltd/
│   │                   └── goods/
│   │                       └── cloud/
│   │                           └── newbee/
│   │                               ├── dto/
│   │                               │   ├── NewBeeMallGoodsDTO.java
│   │                               │   ├── StockNumDTO.java
│   │                               │   └── UpdateStockNumDTO.java
│   │                               └── openfeign/
│   │                                   └── NewBeeCloudGoodsServiceFeign.java
│   ├── newbee-mall-cloud-goods-web/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── ltd/
│   │           │       └── goods/
│   │           │           └── cloud/
│   │           │               └── newbee/
│   │           │                   ├── NewBeeMallCloudGoodsServiceApplication.java
│   │           │                   ├── config/
│   │           │                   │   ├── GoodsServiceExceptionHandler.java
│   │           │                   │   ├── GoodsServiceSwagger3Config.java
│   │           │                   │   ├── GoodsServiceWebMvcConfigurer.java
│   │           │                   │   ├── OpenFeignConfiguration.java
│   │           │                   │   ├── SeataProxyConfiguration.java
│   │           │                   │   ├── annotation/
│   │           │                   │   │   ├── TokenToAdminUser.java
│   │           │                   │   │   └── TokenToMallUser.java
│   │           │                   │   └── handler/
│   │           │                   │       ├── TokenToAdminUserMethodArgumentResolver.java
│   │           │                   │       └── TokenToMallUserMethodArgumentResolver.java
│   │           │                   ├── controller/
│   │           │                   │   ├── NewBeeAdminGoodsCategoryController.java
│   │           │                   │   ├── NewBeeAdminGoodsInfoController.java
│   │           │                   │   ├── NewBeeMallGoodsCategoryController.java
│   │           │                   │   ├── NewBeeMallGoodsController.java
│   │           │                   │   ├── param/
│   │           │                   │   │   ├── BatchIdParam.java
│   │           │                   │   │   ├── GoodsAddParam.java
│   │           │                   │   │   ├── GoodsCategoryAddParam.java
│   │           │                   │   │   ├── GoodsCategoryEditParam.java
│   │           │                   │   │   └── GoodsEditParam.java
│   │           │                   │   └── vo/
│   │           │                   │       ├── NewBeeMallGoodsDetailVO.java
│   │           │                   │       ├── NewBeeMallIndexCategoryVO.java
│   │           │                   │       ├── NewBeeMallSearchGoodsVO.java
│   │           │                   │       ├── SecondLevelCategoryVO.java
│   │           │                   │       └── ThirdLevelCategoryVO.java
│   │           │                   ├── dao/
│   │           │                   │   ├── GoodsCategoryMapper.java
│   │           │                   │   └── NewBeeMallGoodsMapper.java
│   │           │                   ├── entity/
│   │           │                   │   ├── GoodsCategory.java
│   │           │                   │   ├── LoginAdminUser.java
│   │           │                   │   ├── NewBeeMallGoods.java
│   │           │                   │   ├── StockNumDTO.java
│   │           │                   │   └── UpdateStockNumDTO.java
│   │           │                   └── service/
│   │           │                       ├── NewBeeMallCategoryService.java
│   │           │                       ├── NewBeeMallGoodsService.java
│   │           │                       └── impl/
│   │           │                           ├── NewBeeMallCategoryServiceImpl.java
│   │           │                           └── NewBeeMallGoodsServiceImpl.java
│   │           └── resources/
│   │               ├── application.properties
│   │               ├── logback.xml
│   │               └── mapper/
│   │                   ├── GoodsCategoryMapper.xml
│   │                   └── NewBeeMallGoodsMapper.xml
│   └── pom.xml
├── newbee-mall-cloud-order-service/
│   ├── newbee-mall-cloud-order-api/
│   │   └── pom.xml
│   ├── newbee-mall-cloud-order-web/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── ltd/
│   │           │       └── order/
│   │           │           └── cloud/
│   │           │               └── newbee/
│   │           │                   ├── NewBeeMallCloudOrderServiceApplication.java
│   │           │                   ├── config/
│   │           │                   │   ├── OpenFeignConfiguration.java
│   │           │                   │   ├── OrderServiceExceptionHandler.java
│   │           │                   │   ├── OrderServiceSwagger3Config.java
│   │           │                   │   ├── OrderServiceWebMvcConfigurer.java
│   │           │                   │   ├── SeataProxyConfiguration.java
│   │           │                   │   ├── annotation/
│   │           │                   │   │   ├── TokenToAdminUser.java
│   │           │                   │   │   └── TokenToMallUser.java
│   │           │                   │   └── handler/
│   │           │                   │       ├── TokenToAdminUserMethodArgumentResolver.java
│   │           │                   │       └── TokenToMallUserMethodArgumentResolver.java
│   │           │                   ├── controller/
│   │           │                   │   ├── NewBeeAdminOrderController.java
│   │           │                   │   ├── NewBeeMallOrderController.java
│   │           │                   │   ├── NewBeeMallUserAddressController.java
│   │           │                   │   ├── param/
│   │           │                   │   │   ├── BatchIdParam.java
│   │           │                   │   │   ├── SaveMallUserAddressParam.java
│   │           │                   │   │   ├── SaveOrderParam.java
│   │           │                   │   │   └── UpdateMallUserAddressParam.java
│   │           │                   │   └── vo/
│   │           │                   │       ├── NewBeeMallOrderDetailVO.java
│   │           │                   │       ├── NewBeeMallOrderItemVO.java
│   │           │                   │       ├── NewBeeMallOrderListVO.java
│   │           │                   │       └── NewBeeMallUserAddressVO.java
│   │           │                   ├── dao/
│   │           │                   │   ├── MallUserAddressMapper.java
│   │           │                   │   ├── NewBeeMallOrderAddressMapper.java
│   │           │                   │   ├── NewBeeMallOrderItemMapper.java
│   │           │                   │   └── NewBeeMallOrderMapper.java
│   │           │                   ├── entity/
│   │           │                   │   ├── LoginAdminUser.java
│   │           │                   │   ├── MallUserAddress.java
│   │           │                   │   ├── NewBeeMallOrder.java
│   │           │                   │   ├── NewBeeMallOrderAddress.java
│   │           │                   │   └── NewBeeMallOrderItem.java
│   │           │                   └── service/
│   │           │                       ├── NewBeeMallOrderService.java
│   │           │                       ├── NewBeeMallUserAddressService.java
│   │           │                       └── impl/
│   │           │                           ├── NewBeeMallOrderServiceImpl.java
│   │           │                           └── NewBeeMallUserAddressServiceImpl.java
│   │           └── resources/
│   │               ├── application.properties
│   │               ├── logback.xml
│   │               └── mapper/
│   │                   ├── MallUserAddressMapper.xml
│   │                   ├── NewBeeMallOrderAddressMapper.xml
│   │                   ├── NewBeeMallOrderItemMapper.xml
│   │                   └── NewBeeMallOrderMapper.xml
│   └── pom.xml
├── newbee-mall-cloud-recommend-service/
│   ├── newbee-mall-cloud-recommend-api/
│   │   └── pom.xml
│   ├── newbee-mall-cloud-recommend-web/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── ltd/
│   │           │       └── recommend/
│   │           │           └── cloud/
│   │           │               └── newbee/
│   │           │                   ├── NewBeeMallCloudRecommendServiceApplication.java
│   │           │                   ├── config/
│   │           │                   │   ├── OpenFeignConfiguration.java
│   │           │                   │   ├── RecommendServiceExceptionHandler.java
│   │           │                   │   ├── RecommendServiceSwagger3Config.java
│   │           │                   │   ├── RecommendServiceWebMvcConfigurer.java
│   │           │                   │   ├── annotation/
│   │           │                   │   │   └── TokenToAdminUser.java
│   │           │                   │   └── handler/
│   │           │                   │       └── TokenToAdminUserMethodArgumentResolver.java
│   │           │                   ├── controller/
│   │           │                   │   ├── NewBeeAdminCarouselController.java
│   │           │                   │   ├── NewBeeAdminIndexConfigController.java
│   │           │                   │   ├── NewBeeMallIndexController.java
│   │           │                   │   ├── param/
│   │           │                   │   │   ├── BatchIdParam.java
│   │           │                   │   │   ├── CarouselAddParam.java
│   │           │                   │   │   ├── CarouselEditParam.java
│   │           │                   │   │   ├── IndexConfigAddParam.java
│   │           │                   │   │   └── IndexConfigEditParam.java
│   │           │                   │   └── vo/
│   │           │                   │       ├── IndexInfoVO.java
│   │           │                   │       ├── NewBeeMallIndexCarouselVO.java
│   │           │                   │       ├── NewBeeMallIndexCategoryVO.java
│   │           │                   │       ├── NewBeeMallIndexConfigGoodsVO.java
│   │           │                   │       ├── SecondLevelCategoryVO.java
│   │           │                   │       └── ThirdLevelCategoryVO.java
│   │           │                   ├── dao/
│   │           │                   │   ├── CarouselMapper.java
│   │           │                   │   └── IndexConfigMapper.java
│   │           │                   ├── entity/
│   │           │                   │   ├── Carousel.java
│   │           │                   │   ├── IndexConfig.java
│   │           │                   │   └── LoginAdminUser.java
│   │           │                   └── service/
│   │           │                       ├── NewBeeMallCarouselService.java
│   │           │                       ├── NewBeeMallIndexConfigService.java
│   │           │                       └── impl/
│   │           │                           ├── NewBeeMallCarouselServiceImpl.java
│   │           │                           └── NewBeeMallIndexConfigServiceImpl.java
│   │           └── resources/
│   │               ├── application.properties
│   │               ├── logback.xml
│   │               └── mapper/
│   │                   ├── CarouselMapper.xml
│   │                   └── IndexConfigMapper.xml
│   └── pom.xml
├── newbee-mall-cloud-shop-cart-service/
│   ├── newbee-mall-cloud-shop-cart-api/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           └── java/
│   │               └── ltd/
│   │                   └── shopcart/
│   │                       └── cloud/
│   │                           └── newbee/
│   │                               ├── dto/
│   │                               │   └── NewBeeMallShoppingCartItemDTO.java
│   │                               └── openfeign/
│   │                                   └── NewBeeCloudShopCartServiceFeign.java
│   ├── newbee-mall-cloud-shop-cart-web/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── ltd/
│   │           │       └── shopcart/
│   │           │           └── cloud/
│   │           │               └── newbee/
│   │           │                   ├── NewBeeMallCloudShopCartServiceApplication.java
│   │           │                   ├── config/
│   │           │                   │   ├── OpenFeignConfiguration.java
│   │           │                   │   ├── SeataProxyConfiguration.java
│   │           │                   │   ├── ShopCartServiceExceptionHandler.java
│   │           │                   │   ├── ShopCartServiceSwagger3Config.java
│   │           │                   │   ├── ShopCartServiceWebMvcConfigurer.java
│   │           │                   │   ├── annotation/
│   │           │                   │   │   └── TokenToMallUser.java
│   │           │                   │   └── handler/
│   │           │                   │       └── TokenToMallUserMethodArgumentResolver.java
│   │           │                   ├── controller/
│   │           │                   │   ├── NewBeeMallShoppingCartController.java
│   │           │                   │   ├── param/
│   │           │                   │   │   ├── SaveCartItemParam.java
│   │           │                   │   │   └── UpdateCartItemParam.java
│   │           │                   │   └── vo/
│   │           │                   │       └── NewBeeMallShoppingCartItemVO.java
│   │           │                   ├── dao/
│   │           │                   │   └── NewBeeMallShoppingCartItemMapper.java
│   │           │                   ├── entity/
│   │           │                   │   └── NewBeeMallShoppingCartItem.java
│   │           │                   └── service/
│   │           │                       ├── NewBeeMallShoppingCartService.java
│   │           │                       └── impl/
│   │           │                           └── NewBeeMallShoppingCartServiceImpl.java
│   │           └── resources/
│   │               ├── application.properties
│   │               ├── logback.xml
│   │               └── mapper/
│   │                   └── NewBeeMallShoppingCartItemMapper.xml
│   └── pom.xml
├── newbee-mall-cloud-user-service/
│   ├── newbee-mall-cloud-user-api/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           └── java/
│   │               └── ltd/
│   │                   └── user/
│   │                       └── cloud/
│   │                           └── newbee/
│   │                               ├── dto/
│   │                               │   └── MallUserDTO.java
│   │                               └── openfeign/
│   │                                   └── NewBeeCloudUserServiceFeign.java
│   ├── newbee-mall-cloud-user-web/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── ltd/
│   │           │       └── user/
│   │           │           └── cloud/
│   │           │               └── newbee/
│   │           │                   ├── NewBeeMallCloudUserServiceApplication.java
│   │           │                   ├── config/
│   │           │                   │   ├── RedisConfig.java
│   │           │                   │   ├── UserServiceExceptionHandler.java
│   │           │                   │   ├── UserServiceWebMvcConfigurer.java
│   │           │                   │   ├── UserSwagger3Config.java
│   │           │                   │   ├── annotation/
│   │           │                   │   │   ├── TokenToAdminUser.java
│   │           │                   │   │   └── TokenToMallUser.java
│   │           │                   │   └── handler/
│   │           │                   │       ├── TokenToAdminUserMethodArgumentResolver.java
│   │           │                   │       └── TokenToMallUserMethodArgumentResolver.java
│   │           │                   ├── controller/
│   │           │                   │   ├── NewBeeMallCloudAdminUserController.java
│   │           │                   │   ├── NewBeeMallCloudPersonalController.java
│   │           │                   │   ├── param/
│   │           │                   │   │   ├── AdminLoginParam.java
│   │           │                   │   │   ├── MallUserLoginParam.java
│   │           │                   │   │   ├── MallUserRegisterParam.java
│   │           │                   │   │   ├── MallUserUpdateParam.java
│   │           │                   │   │   ├── UpdateAdminNameParam.java
│   │           │                   │   │   └── UpdateAdminPasswordParam.java
│   │           │                   │   └── vo/
│   │           │                   │       └── NewBeeMallUserVO.java
│   │           │                   ├── dao/
│   │           │                   │   ├── AdminUserMapper.java
│   │           │                   │   └── MallUserMapper.java
│   │           │                   ├── entity/
│   │           │                   │   ├── AdminUser.java
│   │           │                   │   └── MallUser.java
│   │           │                   └── service/
│   │           │                       ├── AdminUserService.java
│   │           │                       ├── NewBeeMallUserService.java
│   │           │                       └── impl/
│   │           │                           ├── AdminUserServiceImpl.java
│   │           │                           └── NewBeeMallUserServiceImpl.java
│   │           └── resources/
│   │               ├── application.properties
│   │               ├── logback.xml
│   │               └── mapper/
│   │                   ├── AdminUserMapper.xml
│   │                   └── MallUserMapper.xml
│   └── pom.xml
├── pom.xml
└── static-files/
    ├── newbee_mall_cloud_cart_db.sql
    ├── newbee_mall_cloud_goods_db.sql
    ├── newbee_mall_cloud_order_db.sql
    ├── newbee_mall_cloud_recommend_db.sql
    └── newbee_mall_cloud_user_db.sql
Download .txt
SYMBOL INDEX (756 symbols across 172 files)

FILE: newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/dto/PageQueryUtil.java
  class PageQueryUtil (line 14) | public class PageQueryUtil extends LinkedHashMap<String, Object> {
    method PageQueryUtil (line 20) | public PageQueryUtil(Map<String, Object> params) {
    method getPage (line 32) | public int getPage() {
    method setPage (line 36) | public void setPage(int page) {
    method getLimit (line 40) | public int getLimit() {
    method setLimit (line 44) | public void setLimit(int limit) {
    method toString (line 48) | @Override

FILE: newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/dto/PageResult.java
  class PageResult (line 16) | public class PageResult<T> implements Serializable {
    method PageResult (line 41) | public PageResult(List<T> list, int totalCount, int pageSize, int curr...
    method getTotalCount (line 49) | public int getTotalCount() {
    method setTotalCount (line 53) | public void setTotalCount(int totalCount) {
    method getPageSize (line 57) | public int getPageSize() {
    method setPageSize (line 61) | public void setPageSize(int pageSize) {
    method getTotalPage (line 65) | public int getTotalPage() {
    method setTotalPage (line 69) | public void setTotalPage(int totalPage) {
    method getCurrPage (line 73) | public int getCurrPage() {
    method setCurrPage (line 77) | public void setCurrPage(int currPage) {
    method getList (line 81) | public List<T> getList() {
    method setList (line 85) | public void setList(List<T> list) {

FILE: newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/dto/Result.java
  class Result (line 13) | public class Result<T> implements Serializable {
    method Result (line 26) | public Result() {
    method Result (line 29) | public Result(int resultCode, String message) {
    method getResultCode (line 34) | public int getResultCode() {
    method setResultCode (line 38) | public void setResultCode(int resultCode) {
    method getMessage (line 42) | public String getMessage() {
    method setMessage (line 46) | public void setMessage(String message) {
    method getData (line 50) | public T getData() {
    method setData (line 54) | public void setData(T data) {
    method toString (line 58) | @Override

FILE: newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/dto/ResultGenerator.java
  class ResultGenerator (line 13) | public class ResultGenerator {
    method genSuccessResult (line 19) | public static Result genSuccessResult() {
    method genSuccessResult (line 26) | public static Result genSuccessResult(String message) {
    method genSuccessResult (line 33) | public static Result genSuccessResult(Object data) {
    method genFailResult (line 41) | public static Result genFailResult(String message) {
    method genErrorResult (line 52) | public static Result genErrorResult(int code, String message) {

FILE: newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/enums/IndexConfigTypeEnum.java
  type IndexConfigTypeEnum (line 18) | public enum IndexConfigTypeEnum {
    method IndexConfigTypeEnum (line 31) | IndexConfigTypeEnum(int type, String name) {
    method getIndexConfigTypeEnumByType (line 36) | public static IndexConfigTypeEnum getIndexConfigTypeEnumByType(int typ...
    method getType (line 45) | public int getType() {
    method setType (line 49) | public void setType(int type) {
    method getName (line 53) | public String getName() {
    method setName (line 57) | public void setName(String name) {

FILE: newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/enums/NewBeeMallCategoryLevelEnum.java
  type NewBeeMallCategoryLevelEnum (line 18) | public enum NewBeeMallCategoryLevelEnum {
    method NewBeeMallCategoryLevelEnum (line 29) | NewBeeMallCategoryLevelEnum(int level, String name) {
    method getNewBeeMallOrderStatusEnumByLevel (line 34) | public static NewBeeMallCategoryLevelEnum getNewBeeMallOrderStatusEnum...
    method getLevel (line 43) | public int getLevel() {
    method setLevel (line 47) | public void setLevel(int level) {
    method getName (line 51) | public String getName() {
    method setName (line 55) | public void setName(String name) {

FILE: newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/enums/NewBeeMallOrderStatusEnum.java
  type NewBeeMallOrderStatusEnum (line 18) | public enum NewBeeMallOrderStatusEnum {
    method NewBeeMallOrderStatusEnum (line 34) | NewBeeMallOrderStatusEnum(int orderStatus, String name) {
    method getNewBeeMallOrderStatusEnumByStatus (line 39) | public static NewBeeMallOrderStatusEnum getNewBeeMallOrderStatusEnumBy...
    method getOrderStatus (line 48) | public int getOrderStatus() {
    method setOrderStatus (line 52) | public void setOrderStatus(int orderStatus) {
    method getName (line 56) | public String getName() {
    method setName (line 60) | public void setName(String name) {

FILE: newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/enums/PayStatusEnum.java
  type PayStatusEnum (line 18) | public enum PayStatusEnum {
    method PayStatusEnum (line 28) | PayStatusEnum(int payStatus, String name) {
    method getPayStatusEnumByStatus (line 33) | public static PayStatusEnum getPayStatusEnumByStatus(int payStatus) {
    method getPayStatus (line 42) | public int getPayStatus() {
    method setPayStatus (line 46) | public void setPayStatus(int payStatus) {
    method getName (line 50) | public String getName() {
    method setName (line 54) | public void setName(String name) {

FILE: newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/enums/PayTypeEnum.java
  type PayTypeEnum (line 18) | public enum PayTypeEnum {
    method PayTypeEnum (line 29) | PayTypeEnum(int payType, String name) {
    method getPayTypeEnumByType (line 34) | public static PayTypeEnum getPayTypeEnumByType(int payType) {
    method getPayType (line 43) | public int getPayType() {
    method setPayType (line 47) | public void setPayType(int payType) {
    method getName (line 51) | public String getName() {
    method setName (line 55) | public void setName(String name) {

FILE: newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/enums/ServiceResultEnum.java
  type ServiceResultEnum (line 11) | public enum ServiceResultEnum {
    method ServiceResultEnum (line 94) | ServiceResultEnum(String result) {
    method getResult (line 98) | public String getResult() {
    method setResult (line 102) | public void setResult(String result) {

FILE: newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/exception/NewBeeMallException.java
  class NewBeeMallException (line 11) | public class NewBeeMallException extends RuntimeException {
    method NewBeeMallException (line 13) | public NewBeeMallException() {
    method NewBeeMallException (line 16) | public NewBeeMallException(String message) {
    method fail (line 25) | public static void fail(String message) {

FILE: newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/pojo/AdminUserToken.java
  class AdminUserToken (line 15) | @Data

FILE: newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/pojo/MallUserToken.java
  class MallUserToken (line 15) | @Data

FILE: newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/util/BeanUtil.java
  class BeanUtil (line 12) | public abstract class BeanUtil {
    method copyProperties (line 14) | public static Object copyProperties(Object source, Object target, Stri...
    method copyList (line 22) | public static <T> List<T> copyList(List sources, Class<T> clazz) {
    method copyList (line 26) | public static <T> List<T> copyList(List sources, Class<T> clazz, Callb...
    method toMap (line 47) | public static Map<String, Object> toMap(Object bean, String... ignoreP...
    method toBean (line 61) | public static <T> T toBean(Map<String, Object> map, Class<T> beanType) {
    type Callback (line 71) | public static interface Callback<T> {
      method set (line 72) | void set(Object source, T target);
    method checkPojoNullField (line 76) | public static boolean checkPojoNullField(Object o, Class<?> clz) {

FILE: newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/util/MD5Util.java
  class MD5Util (line 11) | public class MD5Util {
    method byteArrayToHexString (line 13) | private static String byteArrayToHexString(byte b[]) {
    method byteToHexString (line 21) | private static String byteToHexString(byte b) {
    method MD5Encode (line 30) | public static String MD5Encode(String origin, String charsetname) {

FILE: newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/util/NewBeeMallUtils.java
  class NewBeeMallUtils (line 10) | public class NewBeeMallUtils {
    method getHost (line 12) | public static URI getHost(URI uri) {
    method cleanString (line 22) | public static String cleanString(String value) {

FILE: newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/util/NumberUtil.java
  class NumberUtil (line 12) | public class NumberUtil {
    method NumberUtil (line 14) | private NumberUtil() {
    method isPhone (line 24) | public static boolean isPhone(String phone) {
    method genRandomNum (line 36) | public static int genRandomNum(int length) {
    method genOrderNo (line 53) | public static String genOrderNo() {

FILE: newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/util/SystemUtil.java
  class SystemUtil (line 12) | public class SystemUtil {
    method SystemUtil (line 14) | private SystemUtil() {
    method genToken (line 24) | public static String genToken(String src) {

FILE: newbee-mall-cloud-gateway-admin/src/main/java/ltd/gateway/cloud/newbee/NewBeeMallCloudAdminGatewayApplication.java
  class NewBeeMallCloudAdminGatewayApplication (line 21) | @SpringBootApplication
    method main (line 25) | public static void main(String[] args) {

FILE: newbee-mall-cloud-gateway-admin/src/main/java/ltd/gateway/cloud/newbee/config/PolymerizeSwaggerProvider.java
  class PolymerizeSwaggerProvider (line 30) | @Primary
    method get (line 42) | @Override
    method swaggerResource (line 60) | private SwaggerResource swaggerResource(String name, String url) {

FILE: newbee-mall-cloud-gateway-admin/src/main/java/ltd/gateway/cloud/newbee/config/RedisConfig.java
  class RedisConfig (line 23) | @Configuration
    method RedisConfig (line 31) | public RedisConfig(){}
    method redisCacheTemplate (line 33) | @Bean
    method cacheManager (line 44) | @Bean
    method keyGenerator (line 58) | @Bean

FILE: newbee-mall-cloud-gateway-admin/src/main/java/ltd/gateway/cloud/newbee/filter/ValidTokenGlobalFilter.java
  class ValidTokenGlobalFilter (line 39) | @Component
    method filter (line 45) | @Override
    method getOrder (line 76) | @Override
    method wrapErrorResponse (line 81) | Mono<Void> wrapErrorResponse(ServerWebExchange exchange, GatewayFilter...

FILE: newbee-mall-cloud-gateway-mall/src/main/java/ltd/gateway/cloud/newbee/NewBeeMallCloudMallGatewayApplication.java
  class NewBeeMallCloudMallGatewayApplication (line 21) | @SpringBootApplication
    method main (line 25) | public static void main(String[] args) {

FILE: newbee-mall-cloud-gateway-mall/src/main/java/ltd/gateway/cloud/newbee/config/PolymerizeSwaggerProvider.java
  class PolymerizeSwaggerProvider (line 22) | @Primary
    method get (line 34) | @Override
    method swaggerResource (line 53) | private SwaggerResource swaggerResource(String name, String url) {

FILE: newbee-mall-cloud-gateway-mall/src/main/java/ltd/gateway/cloud/newbee/config/RedisConfig.java
  class RedisConfig (line 23) | @Configuration
    method RedisConfig (line 31) | public RedisConfig(){}
    method redisCacheTemplate (line 33) | @Bean
    method cacheManager (line 44) | @Bean
    method keyGenerator (line 58) | @Bean

FILE: newbee-mall-cloud-gateway-mall/src/main/java/ltd/gateway/cloud/newbee/filter/ValidMallUserTokenGlobalFilter.java
  class ValidMallUserTokenGlobalFilter (line 41) | @Component
    method filter (line 47) | @Override
    method getOrder (line 89) | @Override
    method wrapErrorResponse (line 94) | Mono<Void> wrapErrorResponse(ServerWebExchange exchange, GatewayFilter...

FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-api/src/main/java/ltd/goods/cloud/newbee/dto/NewBeeMallGoodsDTO.java
  class NewBeeMallGoodsDTO (line 11) | public class NewBeeMallGoodsDTO {
    method getGoodsId (line 34) | public Long getGoodsId() {
    method setGoodsId (line 38) | public void setGoodsId(Long goodsId) {
    method getGoodsName (line 42) | public String getGoodsName() {
    method setGoodsName (line 46) | public void setGoodsName(String goodsName) {
    method getGoodsIntro (line 50) | public String getGoodsIntro() {
    method setGoodsIntro (line 54) | public void setGoodsIntro(String goodsIntro) {
    method getGoodsCategoryId (line 58) | public Long getGoodsCategoryId() {
    method setGoodsCategoryId (line 62) | public void setGoodsCategoryId(Long goodsCategoryId) {
    method getGoodsCoverImg (line 66) | public String getGoodsCoverImg() {
    method setGoodsCoverImg (line 70) | public void setGoodsCoverImg(String goodsCoverImg) {
    method getGoodsCarousel (line 74) | public String getGoodsCarousel() {
    method setGoodsCarousel (line 78) | public void setGoodsCarousel(String goodsCarousel) {
    method getOriginalPrice (line 82) | public Integer getOriginalPrice() {
    method setOriginalPrice (line 86) | public void setOriginalPrice(Integer originalPrice) {
    method getSellingPrice (line 90) | public Integer getSellingPrice() {
    method setSellingPrice (line 94) | public void setSellingPrice(Integer sellingPrice) {
    method getStockNum (line 98) | public Integer getStockNum() {
    method setStockNum (line 102) | public void setStockNum(Integer stockNum) {
    method getTag (line 106) | public String getTag() {
    method setTag (line 110) | public void setTag(String tag) {
    method getGoodsSellStatus (line 114) | public Byte getGoodsSellStatus() {
    method setGoodsSellStatus (line 118) | public void setGoodsSellStatus(Byte goodsSellStatus) {

FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-api/src/main/java/ltd/goods/cloud/newbee/dto/StockNumDTO.java
  class StockNumDTO (line 11) | public class StockNumDTO {
    method getGoodsId (line 16) | public Long getGoodsId() {
    method setGoodsId (line 20) | public void setGoodsId(Long goodsId) {
    method getGoodsCount (line 24) | public Integer getGoodsCount() {
    method setGoodsCount (line 28) | public void setGoodsCount(Integer goodsCount) {

FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-api/src/main/java/ltd/goods/cloud/newbee/dto/UpdateStockNumDTO.java
  class UpdateStockNumDTO (line 13) | public class UpdateStockNumDTO {
    method getStockNumDTOS (line 17) | public List<StockNumDTO> getStockNumDTOS() {
    method setStockNumDTOS (line 21) | public void setStockNumDTOS(List<StockNumDTO> stockNumDTOS) {

FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-api/src/main/java/ltd/goods/cloud/newbee/openfeign/NewBeeCloudGoodsServiceFeign.java
  type NewBeeCloudGoodsServiceFeign (line 22) | @FeignClient(value = "newbee-mall-cloud-goods-service", path = "/goods")
    method getGoodsDetail (line 25) | @GetMapping(value = "/admin/goodsDetail")
    method listByGoodsIds (line 28) | @GetMapping(value = "/admin/listByGoodsIds")
    method updateStock (line 31) | @PutMapping(value = "/admin/updateStock")

FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/NewBeeMallCloudGoodsServiceApplication.java
  class NewBeeMallCloudGoodsServiceApplication (line 24) | @SpringBootApplication
    method main (line 30) | public static void main(String[] args) {

FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/config/GoodsServiceExceptionHandler.java
  class GoodsServiceExceptionHandler (line 28) | @RestControllerAdvice
    method bindException (line 33) | @ExceptionHandler(BindException.class)
    method bindException (line 43) | @ExceptionHandler(MethodArgumentNotValidException.class)
    method handleException (line 53) | @ExceptionHandler(Exception.class)

FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/config/GoodsServiceSwagger3Config.java
  class GoodsServiceSwagger3Config (line 31) | @Configuration
    method api (line 35) | @Bean
    method getGlobalRequestParameters (line 48) | private List<RequestParameter> getGlobalRequestParameters() {
    method apiInfo (line 60) | private ApiInfo apiInfo() {

FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/config/GoodsServiceWebMvcConfigurer.java
  class GoodsServiceWebMvcConfigurer (line 30) | @Configuration
    method addArgumentResolvers (line 52) | public void addArgumentResolvers(List<HandlerMethodArgumentResolver> a...
    method addResourceHandlers (line 57) | @Override
    method addInterceptors (line 65) | public void addInterceptors(InterceptorRegistry registry) {

FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/config/OpenFeignConfiguration.java
  class OpenFeignConfiguration (line 7) | @Configuration
    method openFeignLogLevel (line 9) | @Bean

FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/config/SeataProxyConfiguration.java
  class SeataProxyConfiguration (line 13) | @Configuration
    method druidDataSource (line 17) | @Bean
    method dataSourceDelegation (line 24) | @Bean("dataSource")
    method setProperties (line 33) | @PostConstruct

FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/config/handler/TokenToAdminUserMethodArgumentResolver.java
  class TokenToAdminUserMethodArgumentResolver (line 27) | @Component
    method TokenToAdminUserMethodArgumentResolver (line 33) | public TokenToAdminUserMethodArgumentResolver() {
    method supportsParameter (line 36) | public boolean supportsParameter(MethodParameter parameter) {
    method resolveArgument (line 43) | public Object resolveArgument(MethodParameter parameter, ModelAndViewC...

FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/config/handler/TokenToMallUserMethodArgumentResolver.java
  class TokenToMallUserMethodArgumentResolver (line 26) | @Component
    method TokenToMallUserMethodArgumentResolver (line 32) | public TokenToMallUserMethodArgumentResolver() {
    method supportsParameter (line 35) | public boolean supportsParameter(MethodParameter parameter) {
    method resolveArgument (line 42) | public Object resolveArgument(MethodParameter parameter, ModelAndViewC...

FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/controller/NewBeeAdminGoodsCategoryController.java
  class NewBeeAdminGoodsCategoryController (line 45) | @RestController
    method list (line 58) | @RequestMapping(value = "/list", method = RequestMethod.GET)
    method listForSelect (line 80) | @RequestMapping(value = "/list4Select", method = RequestMethod.GET)
    method save (line 115) | @RequestMapping(value = "/add", method = RequestMethod.POST)
    method update (line 133) | @RequestMapping(value = "/update", method = RequestMethod.PUT)
    method info (line 150) | @RequestMapping(value = "/detail/{id}", method = RequestMethod.GET)
    method delete (line 164) | @RequestMapping(value = "/batchDelete", method = RequestMethod.DELETE)

FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/controller/NewBeeAdminGoodsInfoController.java
  class NewBeeAdminGoodsInfoController (line 47) | @RestController
    method list (line 62) | @RequestMapping(value = "/list", method = RequestMethod.GET)
    method save (line 88) | @RequestMapping(value = "/add", method = RequestMethod.POST)
    method update (line 106) | @RequestMapping(value = "/update", method = RequestMethod.PUT)
    method info (line 123) | @GetMapping("/detail/{id}")
    method delete (line 154) | @RequestMapping(value = "/updateStatus/{sellStatus}", method = Request...
    method goodsDetail (line 174) | @GetMapping("/goodsDetail")
    method getNewBeeMallGoodsByIds (line 184) | @GetMapping("/listByGoodsIds")
    method updateStock (line 194) | @PutMapping("/updateStock")

FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/controller/NewBeeMallGoodsCategoryController.java
  class NewBeeMallGoodsCategoryController (line 27) | @RestController
    method getCategories (line 35) | @GetMapping("/listAll")

FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/controller/NewBeeMallGoodsController.java
  class NewBeeMallGoodsController (line 38) | @RestController
    method test1 (line 48) | @GetMapping("/test1")
    method test2 (line 53) | @GetMapping("/test2")
    method test3 (line 59) | @GetMapping("/test3")
    method search (line 65) | @GetMapping("/search")
    method goodsDetail (line 100) | @GetMapping("/detail/{goodsId}")

FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/controller/param/BatchIdParam.java
  class BatchIdParam (line 15) | @Data

FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/controller/param/GoodsAddParam.java
  class GoodsAddParam (line 20) | @Data

FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/controller/param/GoodsCategoryAddParam.java
  class GoodsCategoryAddParam (line 20) | @Data

FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/controller/param/GoodsCategoryEditParam.java
  class GoodsCategoryEditParam (line 20) | @Data

FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/controller/param/GoodsEditParam.java
  class GoodsEditParam (line 20) | @Data

FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/controller/vo/NewBeeMallGoodsDetailVO.java
  class NewBeeMallGoodsDetailVO (line 19) | @Data

FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/controller/vo/NewBeeMallIndexCategoryVO.java
  class NewBeeMallIndexCategoryVO (line 20) | @Data

FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/controller/vo/NewBeeMallSearchGoodsVO.java
  class NewBeeMallSearchGoodsVO (line 19) | @Data

FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/controller/vo/SecondLevelCategoryVO.java
  class SecondLevelCategoryVO (line 20) | @Data

FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/controller/vo/ThirdLevelCategoryVO.java
  class ThirdLevelCategoryVO (line 19) | @Data

FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/dao/GoodsCategoryMapper.java
  type GoodsCategoryMapper (line 17) | public interface GoodsCategoryMapper {
    method deleteByPrimaryKey (line 18) | int deleteByPrimaryKey(Long categoryId);
    method insert (line 20) | int insert(GoodsCategory record);
    method insertSelective (line 22) | int insertSelective(GoodsCategory record);
    method selectByPrimaryKey (line 24) | GoodsCategory selectByPrimaryKey(Long categoryId);
    method selectByLevelAndName (line 26) | GoodsCategory selectByLevelAndName(@Param("categoryLevel") Byte catego...
    method updateByPrimaryKeySelective (line 28) | int updateByPrimaryKeySelective(GoodsCategory record);
    method updateByPrimaryKey (line 30) | int updateByPrimaryKey(GoodsCategory record);
    method findGoodsCategoryList (line 32) | List<GoodsCategory> findGoodsCategoryList(PageQueryUtil pageUtil);
    method getTotalGoodsCategories (line 34) | int getTotalGoodsCategories(PageQueryUtil pageUtil);
    method deleteBatch (line 36) | int deleteBatch(Long[] ids);
    method selectByLevelAndParentIdsAndNumber (line 38) | List<GoodsCategory> selectByLevelAndParentIdsAndNumber(@Param("parentI...

FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/dao/NewBeeMallGoodsMapper.java
  type NewBeeMallGoodsMapper (line 18) | public interface NewBeeMallGoodsMapper {
    method deleteByPrimaryKey (line 19) | int deleteByPrimaryKey(Long goodsId);
    method insert (line 21) | int insert(NewBeeMallGoods record);
    method insertSelective (line 23) | int insertSelective(NewBeeMallGoods record);
    method selectByPrimaryKey (line 25) | NewBeeMallGoods selectByPrimaryKey(Long goodsId);
    method selectByCategoryIdAndName (line 27) | NewBeeMallGoods selectByCategoryIdAndName(@Param("goodsName") String g...
    method updateByPrimaryKeySelective (line 29) | int updateByPrimaryKeySelective(NewBeeMallGoods record);
    method updateByPrimaryKeyWithBLOBs (line 31) | int updateByPrimaryKeyWithBLOBs(NewBeeMallGoods record);
    method updateByPrimaryKey (line 33) | int updateByPrimaryKey(NewBeeMallGoods record);
    method findNewBeeMallGoodsList (line 35) | List<NewBeeMallGoods> findNewBeeMallGoodsList(PageQueryUtil pageUtil);
    method getTotalNewBeeMallGoods (line 37) | int getTotalNewBeeMallGoods(PageQueryUtil pageUtil);
    method selectByPrimaryKeys (line 39) | List<NewBeeMallGoods> selectByPrimaryKeys(List<Long> goodsIds);
    method findNewBeeMallGoodsListBySearch (line 41) | List<NewBeeMallGoods> findNewBeeMallGoodsListBySearch(PageQueryUtil pa...
    method getTotalNewBeeMallGoodsBySearch (line 43) | int getTotalNewBeeMallGoodsBySearch(PageQueryUtil pageUtil);
    method batchInsert (line 45) | int batchInsert(@Param("newBeeMallGoodsList") List<NewBeeMallGoods> ne...
    method updateStockNum (line 47) | int updateStockNum(@Param("stockNumDTOS") List<StockNumDTO> stockNumDT...
    method batchUpdateSellStatus (line 49) | int batchUpdateSellStatus(@Param("orderIds")Long[] orderIds,@Param("se...

FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/entity/GoodsCategory.java
  class GoodsCategory (line 16) | @Data

FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/entity/LoginAdminUser.java
  class LoginAdminUser (line 13) | @Data

FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/entity/NewBeeMallGoods.java
  class NewBeeMallGoods (line 16) | @Data

FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/entity/StockNumDTO.java
  class StockNumDTO (line 17) | @Data

FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/entity/UpdateStockNumDTO.java
  class UpdateStockNumDTO (line 14) | @Data
    method getStockNumDTOS (line 19) | public List<StockNumDTO> getStockNumDTOS() {
    method setStockNumDTOS (line 23) | public void setStockNumDTOS(List<StockNumDTO> stockNumDTOS) {

FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/service/NewBeeMallCategoryService.java
  type NewBeeMallCategoryService (line 18) | public interface NewBeeMallCategoryService {
    method saveCategory (line 20) | String saveCategory(GoodsCategory goodsCategory);
    method updateGoodsCategory (line 22) | String updateGoodsCategory(GoodsCategory goodsCategory);
    method getGoodsCategoryById (line 24) | GoodsCategory getGoodsCategoryById(Long id);
    method deleteBatch (line 26) | Boolean deleteBatch(Long[] ids);
    method getCategorisPage (line 34) | PageResult getCategorisPage(PageQueryUtil pageUtil);
    method selectByLevelAndParentIdsAndNumber (line 43) | List<GoodsCategory> selectByLevelAndParentIdsAndNumber(List<Long> pare...
    method getCategoriesForIndex (line 50) | List<NewBeeMallIndexCategoryVO> getCategoriesForIndex();

FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/service/NewBeeMallGoodsService.java
  type NewBeeMallGoodsService (line 19) | public interface NewBeeMallGoodsService {
    method getNewBeeMallGoodsPage (line 26) | PageResult getNewBeeMallGoodsPage(PageQueryUtil pageUtil);
    method saveNewBeeMallGoods (line 34) | String saveNewBeeMallGoods(NewBeeMallGoods goods);
    method batchSaveNewBeeMallGoods (line 42) | void batchSaveNewBeeMallGoods(List<NewBeeMallGoods> newBeeMallGoodsList);
    method updateNewBeeMallGoods (line 50) | String updateNewBeeMallGoods(NewBeeMallGoods goods);
    method batchUpdateSellStatus (line 58) | Boolean batchUpdateSellStatus(Long[] ids, int sellStatus);
    method getNewBeeMallGoodsById (line 66) | NewBeeMallGoods getNewBeeMallGoodsById(Long id);
    method getNewBeeMallGoodsByIds (line 74) | List<NewBeeMallGoods> getNewBeeMallGoodsByIds(List<Long> goodsIds);
    method searchNewBeeMallGoods (line 82) | PageResult searchNewBeeMallGoods(PageQueryUtil pageUtil);
    method updateStockNum (line 84) | Boolean updateStockNum(List<StockNumDTO> stockNumDTOS);

FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/service/impl/NewBeeMallCategoryServiceImpl.java
  class NewBeeMallCategoryServiceImpl (line 31) | @Service
    method saveCategory (line 37) | @Override
    method updateGoodsCategory (line 49) | @Override
    method getGoodsCategoryById (line 67) | @Override
    method deleteBatch (line 72) | @Override
    method getCategorisPage (line 81) | @Override
    method selectByLevelAndParentIdsAndNumber (line 89) | @Override
    method getCategoriesForIndex (line 95) | @Override

FILE: newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/service/impl/NewBeeMallGoodsServiceImpl.java
  class NewBeeMallGoodsServiceImpl (line 32) | @Service
    method getNewBeeMallGoodsPage (line 40) | @Override
    method saveNewBeeMallGoods (line 48) | @Override
    method batchSaveNewBeeMallGoods (line 64) | @Override
    method updateNewBeeMallGoods (line 71) | @Override
    method getNewBeeMallGoodsById (line 94) | @Override
    method getNewBeeMallGoodsByIds (line 103) | @Override
    method batchUpdateSellStatus (line 108) | @Override
    method searchNewBeeMallGoods (line 114) | @Override
    method updateStockNum (line 139) | @Override

FILE: newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/NewBeeMallCloudOrderServiceApplication.java
  class NewBeeMallCloudOrderServiceApplication (line 26) | @SpringBootApplication
    method main (line 32) | public static void main(String[] args) {

FILE: newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/config/OpenFeignConfiguration.java
  class OpenFeignConfiguration (line 7) | @Configuration
    method openFeignLogLevel (line 9) | @Bean

FILE: newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/config/OrderServiceExceptionHandler.java
  class OrderServiceExceptionHandler (line 28) | @RestControllerAdvice
    method bindException (line 33) | @ExceptionHandler(BindException.class)
    method bindException (line 43) | @ExceptionHandler(MethodArgumentNotValidException.class)
    method handleException (line 53) | @ExceptionHandler(Exception.class)

FILE: newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/config/OrderServiceSwagger3Config.java
  class OrderServiceSwagger3Config (line 30) | @Configuration
    method api (line 34) | @Bean
    method getGlobalRequestParameters (line 47) | private List<RequestParameter> getGlobalRequestParameters() {
    method apiInfo (line 59) | private ApiInfo apiInfo() {

FILE: newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/config/OrderServiceWebMvcConfigurer.java
  class OrderServiceWebMvcConfigurer (line 29) | @Configuration
    method addArgumentResolvers (line 51) | public void addArgumentResolvers(List<HandlerMethodArgumentResolver> a...
    method addResourceHandlers (line 56) | @Override
    method addInterceptors (line 64) | public void addInterceptors(InterceptorRegistry registry) {

FILE: newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/config/SeataProxyConfiguration.java
  class SeataProxyConfiguration (line 13) | @Configuration
    method druidDataSource (line 17) | @Bean
    method dataSourceDelegation (line 24) | @Bean("dataSource")
    method setProperties (line 33) | @PostConstruct

FILE: newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/config/handler/TokenToAdminUserMethodArgumentResolver.java
  class TokenToAdminUserMethodArgumentResolver (line 28) | @Component
    method TokenToAdminUserMethodArgumentResolver (line 34) | public TokenToAdminUserMethodArgumentResolver() {
    method supportsParameter (line 37) | public boolean supportsParameter(MethodParameter parameter) {
    method resolveArgument (line 44) | public Object resolveArgument(MethodParameter parameter, ModelAndViewC...

FILE: newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/config/handler/TokenToMallUserMethodArgumentResolver.java
  class TokenToMallUserMethodArgumentResolver (line 26) | @Component
    method TokenToMallUserMethodArgumentResolver (line 32) | public TokenToMallUserMethodArgumentResolver() {
    method supportsParameter (line 35) | public boolean supportsParameter(MethodParameter parameter) {
    method resolveArgument (line 42) | public Object resolveArgument(MethodParameter parameter, ModelAndViewC...

FILE: newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/controller/NewBeeAdminOrderController.java
  class NewBeeAdminOrderController (line 38) | @RestController
    method list (line 51) | @RequestMapping(value = "/list", method = RequestMethod.GET)
    method orderDetailPage (line 74) | @GetMapping("/detail/{orderId}")
    method checkDone (line 84) | @RequestMapping(value = "/checkDone", method = RequestMethod.PUT)
    method checkOut (line 102) | @RequestMapping(value = "/checkOut", method = RequestMethod.PUT)
    method closeOrder (line 120) | @RequestMapping(value = "/close", method = RequestMethod.PUT)

FILE: newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/controller/NewBeeMallOrderController.java
  class NewBeeMallOrderController (line 36) | @RestController
    method saveOrder (line 46) | @PostMapping("/saveOrder")
    method orderDetailPage (line 66) | @GetMapping("/order/{orderNo}")
    method orderList (line 72) | @GetMapping("/order")
    method cancelOrder (line 90) | @PutMapping("/order/{orderNo}/cancel")
    method finishOrder (line 101) | @PutMapping("/order/{orderNo}/finish")
    method paySuccess (line 112) | @GetMapping("/paySuccess")

FILE: newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/controller/NewBeeMallUserAddressController.java
  class NewBeeMallUserAddressController (line 29) | @RestController
    method addressList (line 37) | @GetMapping("/address")
    method saveUserAddress (line 43) | @PostMapping("/address")
    method updateMallUserAddress (line 59) | @PutMapping("/address")
    method getMallUserAddress (line 79) | @GetMapping("/address/{addressId}")
    method getDefaultMallUserAddress (line 92) | @GetMapping("/address/default")
    method deleteAddress (line 99) | @DeleteMapping("/address/{addressId}")

FILE: newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/controller/param/BatchIdParam.java
  class BatchIdParam (line 15) | @Data

FILE: newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/controller/param/SaveMallUserAddressParam.java
  class SaveMallUserAddressParam (line 17) | @Data

FILE: newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/controller/param/SaveOrderParam.java
  class SaveOrderParam (line 19) | @Data

FILE: newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/controller/param/UpdateMallUserAddressParam.java
  class UpdateMallUserAddressParam (line 17) | @Data

FILE: newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/controller/vo/NewBeeMallOrderDetailVO.java
  class NewBeeMallOrderDetailVO (line 22) | @Data

FILE: newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/controller/vo/NewBeeMallOrderItemVO.java
  class NewBeeMallOrderItemVO (line 19) | @Data

FILE: newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/controller/vo/NewBeeMallOrderListVO.java
  class NewBeeMallOrderListVO (line 22) | @Data

FILE: newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/controller/vo/NewBeeMallUserAddressVO.java
  class NewBeeMallUserAddressVO (line 17) | @Data

FILE: newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/dao/MallUserAddressMapper.java
  type MallUserAddressMapper (line 15) | public interface MallUserAddressMapper {
    method deleteByPrimaryKey (line 16) | int deleteByPrimaryKey(Long addressId);
    method insert (line 18) | int insert(MallUserAddress record);
    method insertSelective (line 20) | int insertSelective(MallUserAddress record);
    method selectByPrimaryKey (line 22) | MallUserAddress selectByPrimaryKey(Long addressId);
    method getMyDefaultAddress (line 24) | MallUserAddress getMyDefaultAddress(Long userId);
    method findMyAddressList (line 26) | List<MallUserAddress> findMyAddressList(Long userId);
    method updateByPrimaryKeySelective (line 28) | int updateByPrimaryKeySelective(MallUserAddress record);
    method updateByPrimaryKey (line 30) | int updateByPrimaryKey(MallUserAddress record);

FILE: newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/dao/NewBeeMallOrderAddressMapper.java
  type NewBeeMallOrderAddressMapper (line 14) | public interface NewBeeMallOrderAddressMapper {
    method deleteByPrimaryKey (line 15) | int deleteByPrimaryKey(Long orderId);
    method insert (line 17) | int insert(NewBeeMallOrderAddress record);
    method insertSelective (line 19) | int insertSelective(NewBeeMallOrderAddress record);
    method selectByPrimaryKey (line 21) | NewBeeMallOrderAddress selectByPrimaryKey(Long orderId);
    method updateByPrimaryKeySelective (line 23) | int updateByPrimaryKeySelective(NewBeeMallOrderAddress record);
    method updateByPrimaryKey (line 25) | int updateByPrimaryKey(NewBeeMallOrderAddress record);

FILE: newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/dao/NewBeeMallOrderItemMapper.java
  type NewBeeMallOrderItemMapper (line 16) | public interface NewBeeMallOrderItemMapper {
    method deleteByPrimaryKey (line 17) | int deleteByPrimaryKey(Long orderItemId);
    method insert (line 19) | int insert(NewBeeMallOrderItem record);
    method insertSelective (line 21) | int insertSelective(NewBeeMallOrderItem record);
    method selectByPrimaryKey (line 23) | NewBeeMallOrderItem selectByPrimaryKey(Long orderItemId);
    method selectByOrderId (line 31) | List<NewBeeMallOrderItem> selectByOrderId(Long orderId);
    method selectByOrderIds (line 39) | List<NewBeeMallOrderItem> selectByOrderIds(@Param("orderIds") List<Lon...
    method insertBatch (line 47) | int insertBatch(@Param("orderItems") List<NewBeeMallOrderItem> orderIt...
    method updateByPrimaryKeySelective (line 49) | int updateByPrimaryKeySelective(NewBeeMallOrderItem record);
    method updateByPrimaryKey (line 51) | int updateByPrimaryKey(NewBeeMallOrderItem record);

FILE: newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/dao/NewBeeMallOrderMapper.java
  type NewBeeMallOrderMapper (line 17) | public interface NewBeeMallOrderMapper {
    method deleteByPrimaryKey (line 18) | int deleteByPrimaryKey(Long orderId);
    method insert (line 20) | int insert(NewBeeMallOrder record);
    method insertSelective (line 22) | int insertSelective(NewBeeMallOrder record);
    method selectByPrimaryKey (line 24) | NewBeeMallOrder selectByPrimaryKey(Long orderId);
    method selectByOrderNo (line 26) | NewBeeMallOrder selectByOrderNo(String orderNo);
    method updateByPrimaryKeySelective (line 28) | int updateByPrimaryKeySelective(NewBeeMallOrder record);
    method updateByPrimaryKey (line 30) | int updateByPrimaryKey(NewBeeMallOrder record);
    method findNewBeeMallOrderList (line 32) | List<NewBeeMallOrder> findNewBeeMallOrderList(PageQueryUtil pageUtil);
    method getTotalNewBeeMallOrders (line 34) | int getTotalNewBeeMallOrders(PageQueryUtil pageUtil);
    method selectByPrimaryKeys (line 36) | List<NewBeeMallOrder> selectByPrimaryKeys(@Param("orderIds") List<Long...
    method checkOut (line 38) | int checkOut(@Param("orderIds") List<Long> orderIds);
    method closeOrder (line 40) | int closeOrder(@Param("orderIds") List<Long> orderIds, @Param("orderSt...
    method checkDone (line 42) | int checkDone(@Param("orderIds") List<Long> asList);

FILE: newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/entity/LoginAdminUser.java
  class LoginAdminUser (line 13) | @Data

FILE: newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/entity/MallUserAddress.java
  class MallUserAddress (line 15) | @Data

FILE: newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/entity/NewBeeMallOrder.java
  class NewBeeMallOrder (line 16) | @Data

FILE: newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/entity/NewBeeMallOrderAddress.java
  class NewBeeMallOrderAddress (line 13) | @Data

FILE: newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/entity/NewBeeMallOrderItem.java
  class NewBeeMallOrderItem (line 15) | @Data

FILE: newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/service/NewBeeMallOrderService.java
  type NewBeeMallOrderService (line 20) | public interface NewBeeMallOrderService {
    method getOrderDetailByOrderId (line 27) | NewBeeMallOrderDetailVO getOrderDetailByOrderId(Long orderId);
    method getOrderDetailByOrderNo (line 36) | NewBeeMallOrderDetailVO getOrderDetailByOrderNo(String orderNo, Long u...
    method getMyOrders (line 44) | PageResult getMyOrders(PageQueryUtil pageUtil);
    method cancelOrder (line 53) | String cancelOrder(String orderNo, Long userId);
    method finishOrder (line 62) | String finishOrder(String orderNo, Long userId);
    method paySuccess (line 64) | String paySuccess(String orderNo, int payType);
    method saveOrder (line 73) | String saveOrder(Long mallUserId, MallUserAddress address, List<Long> ...
    method getNewBeeMallOrdersPage (line 81) | PageResult getNewBeeMallOrdersPage(PageQueryUtil pageUtil);
    method updateOrderInfo (line 89) | String updateOrderInfo(NewBeeMallOrder newBeeMallOrder);
    method checkDone (line 97) | String checkDone(Long[] ids);
    method checkOut (line 105) | String checkOut(Long[] ids);
    method closeOrder (line 113) | String closeOrder(Long[] ids);
    method getOrderItems (line 115) | List<NewBeeMallOrderItemVO> getOrderItems(Long orderId);

FILE: newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/service/NewBeeMallUserAddressService.java
  type NewBeeMallUserAddressService (line 16) | public interface NewBeeMallUserAddressService {
    method getMyAddresses (line 24) | List<NewBeeMallUserAddressVO> getMyAddresses(Long userId);
    method saveUserAddress (line 32) | Boolean saveUserAddress(MallUserAddress mallUserAddress);
    method updateMallUserAddress (line 40) | Boolean updateMallUserAddress(MallUserAddress mallUserAddress);
    method getMallUserAddressById (line 48) | MallUserAddress getMallUserAddressById(Long addressId);
    method getMyDefaultAddressByUserId (line 56) | MallUserAddress getMyDefaultAddressByUserId(Long userId);
    method deleteById (line 64) | Boolean deleteById(Long addressId);

FILE: newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/service/impl/NewBeeMallOrderServiceImpl.java
  class NewBeeMallOrderServiceImpl (line 51) | @Service
    method getOrderDetailByOrderId (line 69) | @Override
    method getOrderDetailByOrderNo (line 91) | @Override
    method getMyOrders (line 115) | @Override
    method cancelOrder (line 146) | @Override
    method finishOrder (line 170) | @Override
    method paySuccess (line 193) | @Override
    method saveOrder (line 215) | @Override
    method getNewBeeMallOrdersPage (line 329) | @Override
    method updateOrderInfo (line 337) | @Override
    method checkDone (line 353) | @Override
    method checkOut (line 389) | @Override
    method closeOrder (line 425) | @Override
    method getOrderItems (line 463) | @Override

FILE: newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/service/impl/NewBeeMallUserAddressServiceImpl.java
  class NewBeeMallUserAddressServiceImpl (line 25) | @Service
    method getMyAddresses (line 31) | @Override
    method saveUserAddress (line 38) | @Override
    method updateMallUserAddress (line 58) | @Override
    method getMallUserAddressById (line 80) | @Override
    method getMyDefaultAddressByUserId (line 89) | @Override
    method deleteById (line 94) | @Override

FILE: newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/NewBeeMallCloudRecommendServiceApplication.java
  class NewBeeMallCloudRecommendServiceApplication (line 24) | @SpringBootApplication
    method main (line 32) | public static void main(String[] args) {

FILE: newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/config/OpenFeignConfiguration.java
  class OpenFeignConfiguration (line 7) | @Configuration
    method openFeignLogLevel (line 9) | @Bean

FILE: newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/config/RecommendServiceExceptionHandler.java
  class RecommendServiceExceptionHandler (line 28) | @RestControllerAdvice
    method bindException (line 33) | @ExceptionHandler(BindException.class)
    method bindException (line 43) | @ExceptionHandler(MethodArgumentNotValidException.class)
    method handleException (line 53) | @ExceptionHandler(Exception.class)

FILE: newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/config/RecommendServiceSwagger3Config.java
  class RecommendServiceSwagger3Config (line 30) | @Configuration
    method api (line 34) | @Bean
    method getGlobalRequestParameters (line 47) | private List<RequestParameter> getGlobalRequestParameters() {
    method apiInfo (line 59) | private ApiInfo apiInfo() {

FILE: newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/config/RecommendServiceWebMvcConfigurer.java
  class RecommendServiceWebMvcConfigurer (line 28) | @Configuration
    method addArgumentResolvers (line 45) | public void addArgumentResolvers(List<HandlerMethodArgumentResolver> a...
    method addResourceHandlers (line 49) | @Override
    method addInterceptors (line 57) | public void addInterceptors(InterceptorRegistry registry) {

FILE: newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/config/handler/TokenToAdminUserMethodArgumentResolver.java
  class TokenToAdminUserMethodArgumentResolver (line 27) | @Component
    method TokenToAdminUserMethodArgumentResolver (line 33) | public TokenToAdminUserMethodArgumentResolver() {
    method supportsParameter (line 36) | public boolean supportsParameter(MethodParameter parameter) {
    method resolveArgument (line 43) | public Object resolveArgument(MethodParameter parameter, ModelAndViewC...

FILE: newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/controller/NewBeeAdminCarouselController.java
  class NewBeeAdminCarouselController (line 41) | @RestController
    method list (line 54) | @RequestMapping(value = "/list", method = RequestMethod.GET)
    method save (line 72) | @RequestMapping(value = "/add", method = RequestMethod.POST)
    method update (line 90) | @RequestMapping(value = "/update", method = RequestMethod.PUT)
    method info (line 107) | @RequestMapping(value = "/detail/{id}", method = RequestMethod.GET)
    method delete (line 121) | @RequestMapping(value = "/batchDelete", method = RequestMethod.DELETE)

FILE: newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/controller/NewBeeAdminIndexConfigController.java
  class NewBeeAdminIndexConfigController (line 42) | @RestController
    method list (line 55) | @RequestMapping(value = "/list", method = RequestMethod.GET)
    method save (line 79) | @RequestMapping(value = "/add", method = RequestMethod.POST)
    method update (line 97) | @RequestMapping(value = "/update", method = RequestMethod.PUT)
    method info (line 114) | @RequestMapping(value = "/detail/{id}", method = RequestMethod.GET)
    method delete (line 128) | @RequestMapping(value = "/batchDelete", method = RequestMethod.DELETE)

FILE: newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/controller/NewBeeMallIndexController.java
  class NewBeeMallIndexController (line 28) | @RestController
    method indexInfo (line 39) | @GetMapping("/recommondInfos")

FILE: newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/controller/param/BatchIdParam.java
  class BatchIdParam (line 15) | @Data

FILE: newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/controller/param/CarouselAddParam.java
  class CarouselAddParam (line 19) | @Data

FILE: newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/controller/param/CarouselEditParam.java
  class CarouselEditParam (line 19) | @Data

FILE: newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/controller/param/IndexConfigAddParam.java
  class IndexConfigAddParam (line 19) | @Data

FILE: newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/controller/param/IndexConfigEditParam.java
  class IndexConfigEditParam (line 19) | @Data

FILE: newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/controller/vo/IndexInfoVO.java
  class IndexInfoVO (line 17) | @Data

FILE: newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/controller/vo/NewBeeMallIndexCarouselVO.java
  class NewBeeMallIndexCarouselVO (line 19) | @Data

FILE: newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/controller/vo/NewBeeMallIndexCategoryVO.java
  class NewBeeMallIndexCategoryVO (line 20) | @Data

FILE: newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/controller/vo/NewBeeMallIndexConfigGoodsVO.java
  class NewBeeMallIndexConfigGoodsVO (line 19) | @Data

FILE: newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/controller/vo/SecondLevelCategoryVO.java
  class SecondLevelCategoryVO (line 20) | @Data

FILE: newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/controller/vo/ThirdLevelCategoryVO.java
  class ThirdLevelCategoryVO (line 19) | @Data

FILE: newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/dao/CarouselMapper.java
  type CarouselMapper (line 17) | public interface CarouselMapper {
    method deleteByPrimaryKey (line 18) | int deleteByPrimaryKey(Integer carouselId);
    method insert (line 20) | int insert(Carousel record);
    method insertSelective (line 22) | int insertSelective(Carousel record);
    method selectByPrimaryKey (line 24) | Carousel selectByPrimaryKey(Integer carouselId);
    method updateByPrimaryKeySelective (line 26) | int updateByPrimaryKeySelective(Carousel record);
    method updateByPrimaryKey (line 28) | int updateByPrimaryKey(Carousel record);
    method findCarouselList (line 30) | List<Carousel> findCarouselList(PageQueryUtil pageUtil);
    method getTotalCarousels (line 32) | int getTotalCarousels(PageQueryUtil pageUtil);
    method deleteBatch (line 34) | int deleteBatch(Long[] ids);
    method findCarouselsByNum (line 36) | List<Carousel> findCarouselsByNum(@Param("number") int number);

FILE: newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/dao/IndexConfigMapper.java
  type IndexConfigMapper (line 17) | public interface IndexConfigMapper {
    method deleteByPrimaryKey (line 18) | int deleteByPrimaryKey(Long configId);
    method insert (line 20) | int insert(IndexConfig record);
    method insertSelective (line 22) | int insertSelective(IndexConfig record);
    method selectByPrimaryKey (line 24) | IndexConfig selectByPrimaryKey(Long configId);
    method selectByTypeAndGoodsId (line 26) | IndexConfig selectByTypeAndGoodsId(@Param("configType") int configType...
    method updateByPrimaryKeySelective (line 28) | int updateByPrimaryKeySelective(IndexConfig record);
    method updateByPrimaryKey (line 30) | int updateByPrimaryKey(IndexConfig record);
    method findIndexConfigList (line 32) | List<IndexConfig> findIndexConfigList(PageQueryUtil pageUtil);
    method getTotalIndexConfigs (line 34) | int getTotalIndexConfigs(PageQueryUtil pageUtil);
    method deleteBatch (line 36) | int deleteBatch(Long[] ids);
    method findIndexConfigsByTypeAndNum (line 38) | List<IndexConfig> findIndexConfigsByTypeAndNum(@Param("configType") in...

FILE: newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/entity/Carousel.java
  class Carousel (line 16) | @Data

FILE: newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/entity/IndexConfig.java
  class IndexConfig (line 16) | @Data

FILE: newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/entity/LoginAdminUser.java
  class LoginAdminUser (line 13) | @Data

FILE: newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/service/NewBeeMallCarouselService.java
  type NewBeeMallCarouselService (line 18) | public interface NewBeeMallCarouselService {
    method getCarouselPage (line 26) | PageResult getCarouselPage(PageQueryUtil pageUtil);
    method saveCarousel (line 28) | String saveCarousel(Carousel carousel);
    method updateCarousel (line 30) | String updateCarousel(Carousel carousel);
    method getCarouselById (line 32) | Carousel getCarouselById(Integer id);
    method deleteBatch (line 34) | Boolean deleteBatch(Long[] ids);
    method getCarouselsForIndex (line 42) | List<NewBeeMallIndexCarouselVO> getCarouselsForIndex(int number);

FILE: newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/service/NewBeeMallIndexConfigService.java
  type NewBeeMallIndexConfigService (line 18) | public interface NewBeeMallIndexConfigService {
    method getConfigsPage (line 25) | PageResult getConfigsPage(PageQueryUtil pageUtil);
    method saveIndexConfig (line 27) | String saveIndexConfig(IndexConfig indexConfig);
    method updateIndexConfig (line 29) | String updateIndexConfig(IndexConfig indexConfig);
    method getIndexConfigById (line 31) | IndexConfig getIndexConfigById(Long id);
    method deleteBatch (line 33) | Boolean deleteBatch(Long[] ids);
    method getConfigGoodsesForIndex (line 41) | List<NewBeeMallIndexConfigGoodsVO> getConfigGoodsesForIndex(int config...

FILE: newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/service/impl/NewBeeMallCarouselServiceImpl.java
  class NewBeeMallCarouselServiceImpl (line 27) | @Service
    method getCarouselPage (line 34) | @Override
    method saveCarousel (line 42) | @Override
    method updateCarousel (line 50) | @Override
    method getCarouselById (line 66) | @Override
    method deleteBatch (line 71) | @Override
    method getCarouselsForIndex (line 80) | @Override

FILE: newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/service/impl/NewBeeMallIndexConfigServiceImpl.java
  class NewBeeMallIndexConfigServiceImpl (line 31) | @Service
    method getConfigsPage (line 40) | @Override
    method saveIndexConfig (line 48) | @Override
    method updateIndexConfig (line 63) | @Override
    method getIndexConfigById (line 85) | @Override
    method deleteBatch (line 90) | @Override
    method getConfigGoodsesForIndex (line 100) | @Override

FILE: newbee-mall-cloud-shop-cart-service/newbee-mall-cloud-shop-cart-api/src/main/java/ltd/shopcart/cloud/newbee/dto/NewBeeMallShoppingCartItemDTO.java
  class NewBeeMallShoppingCartItemDTO (line 13) | public class NewBeeMallShoppingCartItemDTO implements Serializable {
    method getCartItemId (line 23) | public Long getCartItemId() {
    method setCartItemId (line 27) | public void setCartItemId(Long cartItemId) {
    method getUserId (line 31) | public Long getUserId() {
    method setUserId (line 35) | public void setUserId(Long userId) {
    method getGoodsId (line 39) | public Long getGoodsId() {
    method setGoodsId (line 43) | public void setGoodsId(Long goodsId) {
    method getGoodsCount (line 47) | public Integer getGoodsCount() {
    method setGoodsCount (line 51) | public void setGoodsCount(Integer goodsCount) {

FILE: newbee-mall-cloud-shop-cart-service/newbee-mall-cloud-shop-cart-api/src/main/java/ltd/shopcart/cloud/newbee/openfeign/NewBeeCloudShopCartServiceFeign.java
  type NewBeeCloudShopCartServiceFeign (line 20) | @FeignClient(value = "newbee-mall-cloud-shop-cart-service", path = "/sho...
    method listByCartItemIds (line 23) | @GetMapping(value = "/listByCartItemIds")
    method deleteByCartItemIds (line 26) | @DeleteMapping(value = "/deleteByCartItemIds")

FILE: newbee-mall-cloud-shop-cart-service/newbee-mall-cloud-shop-cart-web/src/main/java/ltd/shopcart/cloud/newbee/NewBeeMallCloudShopCartServiceApplication.java
  class NewBeeMallCloudShopCartServiceApplication (line 25) | @SpringBootApplication
    method main (line 31) | public static void main(String[] args) {

FILE: newbee-mall-cloud-shop-cart-service/newbee-mall-cloud-shop-cart-web/src/main/java/ltd/shopcart/cloud/newbee/config/OpenFeignConfiguration.java
  class OpenFeignConfiguration (line 7) | @Configuration
    method openFeignLogLevel (line 9) | @Bean

FILE: newbee-mall-cloud-shop-cart-service/newbee-mall-cloud-shop-cart-web/src/main/java/ltd/shopcart/cloud/newbee/config/SeataProxyConfiguration.java
  class SeataProxyConfiguration (line 13) | @Configuration
    method druidDataSource (line 17) | @Bean
    method dataSourceDelegation (line 24) | @Bean("dataSource")
    method setProperties (line 33) | @PostConstruct

FILE: newbee-mall-cloud-shop-cart-service/newbee-mall-cloud-shop-cart-web/src/main/java/ltd/shopcart/cloud/newbee/config/ShopCartServiceExceptionHandler.java
  class ShopCartServiceExceptionHandler (line 28) | @RestControllerAdvice
    method bindException (line 33) | @ExceptionHandler(BindException.class)
    method bindException (line 43) | @ExceptionHandler(MethodArgumentNotValidException.class)
    method handleException (line 53) | @ExceptionHandler(Exception.class)

FILE: newbee-mall-cloud-shop-cart-service/newbee-mall-cloud-shop-cart-web/src/main/java/ltd/shopcart/cloud/newbee/config/ShopCartServiceSwagger3Config.java
  class ShopCartServiceSwagger3Config (line 29) | @Configuration
    method api (line 33) | @Bean
    method getGlobalRequestParameters (line 46) | private List<RequestParameter> getGlobalRequestParameters() {
    method apiInfo (line 58) | private ApiInfo apiInfo() {

FILE: newbee-mall-cloud-shop-cart-service/newbee-mall-cloud-shop-cart-web/src/main/java/ltd/shopcart/cloud/newbee/config/ShopCartServiceWebMvcConfigurer.java
  class ShopCartServiceWebMvcConfigurer (line 30) | @Configuration
    method addArgumentResolvers (line 47) | public void addArgumentResolvers(List<HandlerMethodArgumentResolver> a...
    method addResourceHandlers (line 51) | @Override
    method addInterceptors (line 59) | public void addInterceptors(InterceptorRegistry registry) {

FILE: newbee-mall-cloud-shop-cart-service/newbee-mall-cloud-shop-cart-web/src/main/java/ltd/shopcart/cloud/newbee/config/handler/TokenToMallUserMethodArgumentResolver.java
  class TokenToMallUserMethodArgumentResolver (line 26) | @Component
    method TokenToMallUserMethodArgumentResolver (line 32) | public TokenToMallUserMethodArgumentResolver() {
    method supportsParameter (line 35) | public boolean supportsParameter(MethodParameter parameter) {
    method resolveArgument (line 42) | public Object resolveArgument(MethodParameter parameter, ModelAndViewC...

FILE: newbee-mall-cloud-shop-cart-service/newbee-mall-cloud-shop-cart-web/src/main/java/ltd/shopcart/cloud/newbee/controller/NewBeeMallShoppingCartController.java
  class NewBeeMallShoppingCartController (line 38) | @RestController
    method cartItemPageList (line 45) | @GetMapping("/shop-cart/page")
    method cartItemList (line 60) | @GetMapping("/shop-cart")
    method saveNewBeeMallShoppingCartItem (line 66) | @PostMapping("/shop-cart")
    method updateNewBeeMallShoppingCartItem (line 79) | @PutMapping("/shop-cart")
    method updateNewBeeMallShoppingCartItem (line 92) | @DeleteMapping("/shop-cart/{newBeeMallShoppingCartItemId}")
    method toSettle (line 109) | @GetMapping("/shop-cart/settle")
    method cartItemListByIds (line 132) | @GetMapping("/shop-cart/listByCartItemIds")
    method deleteByCartItemIds (line 141) | @DeleteMapping("/shop-cart/deleteByCartItemIds")

FILE: newbee-mall-cloud-shop-cart-service/newbee-mall-cloud-shop-cart-web/src/main/java/ltd/shopcart/cloud/newbee/controller/param/SaveCartItemParam.java
  class SaveCartItemParam (line 19) | @Data

FILE: newbee-mall-cloud-shop-cart-service/newbee-mall-cloud-shop-cart-web/src/main/java/ltd/shopcart/cloud/newbee/controller/param/UpdateCartItemParam.java
  class UpdateCartItemParam (line 19) | @Data

FILE: newbee-mall-cloud-shop-cart-service/newbee-mall-cloud-shop-cart-web/src/main/java/ltd/shopcart/cloud/newbee/controller/vo/NewBeeMallShoppingCartItemVO.java
  class NewBeeMallShoppingCartItemVO (line 19) | @Data

FILE: newbee-mall-cloud-shop-cart-service/newbee-mall-cloud-shop-cart-web/src/main/java/ltd/shopcart/cloud/newbee/dao/NewBeeMallShoppingCartItemMapper.java
  type NewBeeMallShoppingCartItemMapper (line 17) | public interface NewBeeMallShoppingCartItemMapper {
    method deleteByPrimaryKey (line 18) | int deleteByPrimaryKey(Long cartItemId);
    method insert (line 20) | int insert(NewBeeMallShoppingCartItem record);
    method insertSelective (line 22) | int insertSelective(NewBeeMallShoppingCartItem record);
    method selectByPrimaryKey (line 24) | NewBeeMallShoppingCartItem selectByPrimaryKey(Long cartItemId);
    method selectByUserIdAndGoodsId (line 26) | NewBeeMallShoppingCartItem selectByUserIdAndGoodsId(@Param("newBeeMall...
    method selectByUserId (line 28) | List<NewBeeMallShoppingCartItem> selectByUserId(@Param("newBeeMallUser...
    method selectByUserIdAndCartItemIds (line 30) | List<NewBeeMallShoppingCartItem> selectByUserIdAndCartItemIds(@Param("...
    method selectByCartItemIds (line 32) | List<NewBeeMallShoppingCartItem> selectByCartItemIds(@Param("cartItemI...
    method selectCountByUserId (line 34) | int selectCountByUserId(Long newBeeMallUserId);
    method updateByPrimaryKeySelective (line 36) | int updateByPrimaryKeySelective(NewBeeMallShoppingCartItem record);
    method updateByPrimaryKey (line 38) | int updateByPrimaryKey(NewBeeMallShoppingCartItem record);
    method deleteBatch (line 40) | int deleteBatch(List<Long> ids);
    method findMyNewBeeMallCartItems (line 42) | List<NewBeeMallShoppingCartItem> findMyNewBeeMallCartItems(PageQueryUt...
    method getTotalMyNewBeeMallCartItems (line 44) | int getTotalMyNewBeeMallCartItems(PageQueryUtil pageUtil);

FILE: newbee-mall-cloud-shop-cart-service/newbee-mall-cloud-shop-cart-web/src/main/java/ltd/shopcart/cloud/newbee/entity/NewBeeMallShoppingCartItem.java
  class NewBeeMallShoppingCartItem (line 15) | @Data

FILE: newbee-mall-cloud-shop-cart-service/newbee-mall-cloud-shop-cart-web/src/main/java/ltd/shopcart/cloud/newbee/service/NewBeeMallShoppingCartService.java
  type NewBeeMallShoppingCartService (line 20) | public interface NewBeeMallShoppingCartService {
    method saveNewBeeMallCartItem (line 29) | String saveNewBeeMallCartItem(SaveCartItemParam saveCartItemParam, Lon...
    method updateNewBeeMallCartItem (line 38) | String updateNewBeeMallCartItem(UpdateCartItemParam updateCartItemPara...
    method getNewBeeMallCartItemById (line 46) | NewBeeMallShoppingCartItem getNewBeeMallCartItemById(Long newBeeMallSh...
    method deleteById (line 55) | Boolean deleteById(Long shoppingCartItemId, Long userId);
    method getMyShoppingCartItems (line 63) | List<NewBeeMallShoppingCartItemVO> getMyShoppingCartItems(Long newBeeM...
    method getCartItemsForSettle (line 72) | List<NewBeeMallShoppingCartItemVO> getCartItemsForSettle(List<Long> ca...
    method getCartItemsByCartIds (line 81) | List<NewBeeMallShoppingCartItem> getCartItemsByCartIds(List<Long> cart...
    method deleteCartItemsByCartIds (line 89) | int deleteCartItemsByCartIds(List<Long> cartItemIds);
    method getMyShoppingCartItems (line 97) | PageResult getMyShoppingCartItems(PageQueryUtil pageUtil);

FILE: newbee-mall-cloud-shop-cart-service/newbee-mall-cloud-shop-cart-web/src/main/java/ltd/shopcart/cloud/newbee/service/impl/NewBeeMallShoppingCartServiceImpl.java
  class NewBeeMallShoppingCartServiceImpl (line 33) | @Service
    method saveNewBeeMallCartItem (line 42) | @Override
    method updateNewBeeMallCartItem (line 77) | @Override
    method getNewBeeMallCartItemById (line 107) | @Override
    method deleteById (line 116) | @Override
    method getMyShoppingCartItems (line 129) | @Override
    method getCartItemsForSettle (line 136) | @Override
    method getCartItemsByCartIds (line 152) | @Override
    method deleteCartItemsByCartIds (line 157) | @Override
    method getNewBeeMallShoppingCartItemVOS (line 169) | private List<NewBeeMallShoppingCartItemVO> getNewBeeMallShoppingCartIt...
    method getMyShoppingCartItems (line 203) | @Override

FILE: newbee-mall-cloud-user-service/newbee-mall-cloud-user-api/src/main/java/ltd/user/cloud/newbee/dto/MallUserDTO.java
  class MallUserDTO (line 5) | public class MallUserDTO implements Serializable {
    method getUserId (line 14) | public Long getUserId() {
    method setUserId (line 18) | public void setUserId(Long userId) {
    method getNickName (line 22) | public String getNickName() {
    method setNickName (line 26) | public void setNickName(String nickName) {
    method getLoginName (line 30) | public String getLoginName() {
    method setLoginName (line 34) | public void setLoginName(String loginName) {
    method getIntroduceSign (line 38) | public String getIntroduceSign() {
    method setIntroduceSign (line 42) | public void setIntroduceSign(String introduceSign) {

FILE: newbee-mall-cloud-user-service/newbee-mall-cloud-user-api/src/main/java/ltd/user/cloud/newbee/openfeign/NewBeeCloudUserServiceFeign.java
  type NewBeeCloudUserServiceFeign (line 18) | @FeignClient(value = "newbee-mall-cloud-user-service", path = "/users")
    method getAdminUserByToken (line 21) | @GetMapping(value = "/admin/{token}")
    method getMallUserByToken (line 24) | @GetMapping(value = "/mall/getDetailByToken")

FILE: newbee-mall-cloud-user-service/newbee-mall-cloud-user-web/src/main/java/ltd/user/cloud/newbee/NewBeeMallCloudUserServiceApplication.java
  class NewBeeMallCloudUserServiceApplication (line 22) | @SpringBootApplication
    method main (line 27) | public static void main(String[] args) {

FILE: newbee-mall-cloud-user-service/newbee-mall-cloud-user-web/src/main/java/ltd/user/cloud/newbee/config/RedisConfig.java
  class RedisConfig (line 23) | @Configuration
    method RedisConfig (line 31) | public RedisConfig(){}
    method redisCacheTemplate (line 33) | @Bean
    method cacheManager (line 44) | @Bean
    method keyGenerator (line 58) | @Bean

FILE: newbee-mall-cloud-user-service/newbee-mall-cloud-user-web/src/main/java/ltd/user/cloud/newbee/config/UserServiceExceptionHandler.java
  class UserServiceExceptionHandler (line 28) | @RestControllerAdvice
    method bindException (line 33) | @ExceptionHandler(BindException.class)
    method bindException (line 43) | @ExceptionHandler(MethodArgumentNotValidException.class)
    method handleException (line 53) | @ExceptionHandler(Exception.class)

FILE: newbee-mall-cloud-user-service/newbee-mall-cloud-user-web/src/main/java/ltd/user/cloud/newbee/config/UserServiceWebMvcConfigurer.java
  class UserServiceWebMvcConfigurer (line 28) | @Configuration
    method addArgumentResolvers (line 48) | public void addArgumentResolvers(List<HandlerMethodArgumentResolver> a...
    method addResourceHandlers (line 53) | @Override
    method addInterceptors (line 61) | public void addInterceptors(InterceptorRegistry registry) {

FILE: newbee-mall-cloud-user-service/newbee-mall-cloud-user-web/src/main/java/ltd/user/cloud/newbee/config/UserSwagger3Config.java
  class UserSwagger3Config (line 22) | @Configuration
    method api (line 26) | @Bean
    method getGlobalRequestParameters (line 39) | private List<RequestParameter> getGlobalRequestParameters() {
    method apiInfo (line 51) | private ApiInfo apiInfo() {

FILE: newbee-mall-cloud-user-service/newbee-mall-cloud-user-web/src/main/java/ltd/user/cloud/newbee/config/handler/TokenToAdminUserMethodArgumentResolver.java
  class TokenToAdminUserMethodArgumentResolver (line 25) | @Component
    method TokenToAdminUserMethodArgumentResolver (line 31) | public TokenToAdminUserMethodArgumentResolver() {
    method supportsParameter (line 34) | public boolean supportsParameter(MethodParameter parameter) {
    method resolveArgument (line 41) | public Object resolveArgument(MethodParameter parameter, ModelAndViewC...

FILE: newbee-mall-cloud-user-service/newbee-mall-cloud-user-web/src/main/java/ltd/user/cloud/newbee/config/handler/TokenToMallUserMethodArgumentResolver.java
  class TokenToMallUserMethodArgumentResolver (line 31) | @Component
    method TokenToMallUserMethodArgumentResolver (line 39) | public TokenToMallUserMethodArgumentResolver() {
    method supportsParameter (line 42) | public boolean supportsParameter(MethodParameter parameter) {
    method resolveArgument (line 49) | public Object resolveArgument(MethodParameter parameter, ModelAndViewC...
    method getRequestPostBytes (line 73) | public static byte[] getRequestPostBytes(HttpServletRequest request)

FILE: newbee-mall-cloud-user-service/newbee-mall-cloud-user-web/src/main/java/ltd/user/cloud/newbee/controller/NewBeeMallCloudAdminUserController.java
  class NewBeeMallCloudAdminUserController (line 31) | @Api(value = "v1", tags = "新蜂商城管理员操作相关接口")
    method login (line 40) | @ApiOperation(value = "登录接口", notes = "返回token")
    method profile (line 56) | @ApiOperation(value = "获取管理员信息接口")
    method passwordUpdate (line 70) | @ApiOperation(value = "修改管理员密码接口")
    method nameUpdate (line 81) | @ApiOperation(value = "修改管理员信息接口")
    method logout (line 92) | @ApiOperation(value = "管理员退出登录的接口")
    method getAdminUserByToken (line 100) | @ApiOperation(value = "根据token获取管理员信息的接口", notes = "OpenFeign调用")

FILE: newbee-mall-cloud-user-service/newbee-mall-cloud-user-web/src/main/java/ltd/user/cloud/newbee/controller/NewBeeMallCloudPersonalController.java
  class NewBeeMallCloudPersonalController (line 35) | @RestController
    method login (line 45) | @PostMapping("/login")
    method logout (line 66) | @PostMapping("/logout")
    method register (line 82) | @PostMapping("/register")
    method updateInfo (line 100) | @PutMapping("/update")
    method getUserDetail (line 115) | @GetMapping("/detail")
    method getMallUserByToken (line 124) | @RequestMapping(value = "/getDetailByToken", method = RequestMethod.GET)

FILE: newbee-mall-cloud-user-service/newbee-mall-cloud-user-web/src/main/java/ltd/user/cloud/newbee/controller/param/AdminLoginParam.java
  class AdminLoginParam (line 17) | @Data

FILE: newbee-mall-cloud-user-service/newbee-mall-cloud-user-web/src/main/java/ltd/user/cloud/newbee/controller/param/MallUserLoginParam.java
  class MallUserLoginParam (line 20) | @Data

FILE: newbee-mall-cloud-user-service/newbee-mall-cloud-user-web/src/main/java/ltd/user/cloud/newbee/controller/param/MallUserRegisterParam.java
  class MallUserRegisterParam (line 20) | @Data

FILE: newbee-mall-cloud-user-service/newbee-mall-cloud-user-web/src/main/java/ltd/user/cloud/newbee/controller/param/MallUserUpdateParam.java
  class MallUserUpdateParam (line 19) | @Data

FILE: newbee-mall-cloud-user-service/newbee-mall-cloud-user-web/src/main/java/ltd/user/cloud/newbee/controller/param/UpdateAdminNameParam.java
  class UpdateAdminNameParam (line 15) | @Data

FILE: newbee-mall-cloud-user-service/newbee-mall-cloud-user-web/src/main/java/ltd/user/cloud/newbee/controller/param/UpdateAdminPasswordParam.java
  class UpdateAdminPasswordParam (line 15) | @Data

FILE: newbee-mall-cloud-user-service/newbee-mall-cloud-user-web/src/main/java/ltd/user/cloud/newbee/controller/vo/NewBeeMallUserVO.java
  class NewBeeMallUserVO (line 16) | @Data

FILE: newbee-mall-cloud-user-service/newbee-mall-cloud-user-web/src/main/java/ltd/user/cloud/newbee/dao/AdminUserMapper.java
  type AdminUserMapper (line 14) | public interface AdminUserMapper {
    method insert (line 16) | int insert(AdminUser record);
    method insertSelective (line 18) | int insertSelective(AdminUser record);
    method login (line 27) | AdminUser login(@Param("userName") String userName, @Param("password")...
    method selectByPrimaryKey (line 29) | AdminUser selectByPrimaryKey(Long adminUserId);
    method updateByPrimaryKeySelective (line 31) | int updateByPrimaryKeySelective(AdminUser record);
    method updateByPrimaryKey (line 33) | int updateByPrimaryKey(AdminUser record);

FILE: newbee-mall-cloud-user-service/newbee-mall-cloud-user-web/src/main/java/ltd/user/cloud/newbee/dao/MallUserMapper.java
  type MallUserMapper (line 17) | public interface MallUserMapper {
    method deleteByPrimaryKey (line 18) | int deleteByPrimaryKey(Long userId);
    method insert (line 20) | int insert(MallUser record);
    method insertSelective (line 22) | int insertSelective(MallUser record);
    method selectByPrimaryKey (line 24) | MallUser selectByPrimaryKey(Long userId);
    method selectByLoginName (line 26) | MallUser selectByLoginName(String loginName);
    method selectByLoginNameAndPasswd (line 28) | MallUser selectByLoginNameAndPasswd(@Param("loginName") String loginNa...
    method updateByPrimaryKeySelective (line 30) | int updateByPrimaryKeySelective(MallUser record);
    method updateByPrimaryKey (line 32) | int updateByPrimaryKey(MallUser record);
    method findMallUserList (line 34) | List<MallUser> findMallUserList(PageQueryUtil pageUtil);
    method getTotalMallUsers (line 36) | int getTotalMallUsers(PageQueryUtil pageUtil);
    method lockUserBatch (line 38) | int lockUserBatch(@Param("ids") Long[] ids, @Param("lockStatus") int l...

FILE: newbee-mall-cloud-user-service/newbee-mall-cloud-user-web/src/main/java/ltd/user/cloud/newbee/entity/AdminUser.java
  class AdminUser (line 13) | @Data

FILE: newbee-mall-cloud-user-service/newbee-mall-cloud-user-web/src/main/java/ltd/user/cloud/newbee/entity/MallUser.java
  class MallUser (line 16) | @Data

FILE: newbee-mall-cloud-user-service/newbee-mall-cloud-user-web/src/main/java/ltd/user/cloud/newbee/service/AdminUserService.java
  type AdminUserService (line 13) | public interface AdminUserService {
    method login (line 21) | String login(String userName, String password);
    method getUserDetailById (line 29) | AdminUser getUserDetailById(Long loginUserId);
    method getUserDetailByToken (line 37) | AdminUser getUserDetailByToken(String token);
    method updatePassword (line 47) | Boolean updatePassword(Long loginUserId, String originalPassword, Stri...
    method updateName (line 57) | Boolean updateName(Long loginUserId, String loginUserName, String nick...
    method logout (line 64) | Boolean logout(String token);

FILE: newbee-mall-cloud-user-service/newbee-mall-cloud-user-web/src/main/java/ltd/user/cloud/newbee/service/NewBeeMallUserService.java
  type NewBeeMallUserService (line 17) | public interface NewBeeMallUserService {
    method register (line 26) | String register(String loginName, String password);
    method login (line 36) | String login(String loginName, String passwordMD5);
    method updateUserInfo (line 44) | Boolean updateUserInfo(MallUserUpdateParam mallUser, Long userId);
    method getUserDetailByToken (line 52) | MallUser getUserDetailByToken(String token);
    method logout (line 59) | Boolean logout(String token);
    method lockUsers (line 68) | Boolean lockUsers(Long[] ids, int lockStatus);
    method getNewBeeMallUsersPage (line 76) | PageResult getNewBeeMallUsersPage(PageQueryUtil pageUtil);

FILE: newbee-mall-cloud-user-service/newbee-mall-cloud-user-web/src/main/java/ltd/user/cloud/newbee/service/impl/AdminUserServiceImpl.java
  class AdminUserServiceImpl (line 25) | @Service
    method login (line 34) | @Override
    method getNewToken (line 58) | private String getNewToken(String timeStr, Long userId) {
    method getUserDetailById (line 64) | @Override
    method getUserDetailByToken (line 69) | @Override
    method updatePassword (line 79) | @Override
    method updateName (line 97) | @Override
    method logout (line 113) | @Override

FILE: newbee-mall-cloud-user-service/newbee-mall-cloud-user-web/src/main/java/ltd/user/cloud/newbee/service/impl/NewBeeMallUserServiceImpl.java
  class NewBeeMallUserServiceImpl (line 31) | @Service
    method register (line 40) | @Override
    method login (line 57) | @Override
    method getNewToken (line 84) | private String getNewToken(String timeStr, Long userId) {
    method updateUserInfo (line 89) | @Override
    method getUserDetailByToken (line 107) | @Override
    method logout (line 125) | @Override
    method getNewBeeMallUsersPage (line 131) | @Override
    method lockUsers (line 139) | @Override

FILE: static-files/newbee_mall_cloud_cart_db.sql
  type `tb_newbee_mall_shopping_cart_item` (line 9) | CREATE TABLE `tb_newbee_mall_shopping_cart_item` (
  type `undo_log` (line 21) | CREATE TABLE IF NOT EXISTS `undo_log`

FILE: static-files/newbee_mall_cloud_goods_db.sql
  type `tb_newbee_mall_goods_category` (line 10) | CREATE TABLE `tb_newbee_mall_goods_category` (
  type `tb_newbee_mall_goods_info` (line 143) | CREATE TABLE `tb_newbee_mall_goods_info` (
  type `undo_log` (line 916) | CREATE TABLE IF NOT EXISTS `undo_log`

FILE: static-files/newbee_mall_cloud_order_db.sql
  type `tb_newbee_mall_order` (line 8) | CREATE TABLE `tb_newbee_mall_order` (
  type `tb_newbee_mall_order_address` (line 29) | CREATE TABLE `tb_newbee_mall_order_address` (
  type `tb_newbee_mall_order_item` (line 45) | CREATE TABLE `tb_newbee_mall_order_item` (
  type `tb_newbee_mall_user_address` (line 59) | CREATE TABLE `tb_newbee_mall_user_address` (
  type `undo_log` (line 76) | CREATE TABLE IF NOT EXISTS `undo_log`

FILE: static-files/newbee_mall_cloud_recommend_db.sql
  type `tb_newbee_mall_index_config` (line 10) | CREATE TABLE `tb_newbee_mall_index_config` (
  type `tb_newbee_mall_carousel` (line 56) | CREATE TABLE `tb_newbee_mall_carousel` (

FILE: static-files/newbee_mall_cloud_user_db.sql
  type `tb_newbee_mall_admin_user` (line 10) | CREATE TABLE `tb_newbee_mall_admin_user` (
  type `tb_newbee_mall_user` (line 31) | CREATE TABLE `tb_newbee_mall_user` (
Condensed preview — 225 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (957K chars).
[
  {
    "path": ".gitignore",
    "chars": 268,
    "preview": "/target/\n!.mvn/wrapper/maven-wrapper.jar\n\n### STS ###\n.apt_generated\n.classpath\n.factorypath\n.project\n.settings\n.springB"
  },
  {
    "path": "LICENSE",
    "chars": 35149,
    "preview": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free "
  },
  {
    "path": "README.md",
    "chars": 12442,
    "preview": "![newbee-mall-cloud-alibaba](./static-files/newbee-mall-cloud-alibaba-l.png)\n\n![Build Status](https://img.shields.io/bad"
  },
  {
    "path": "newbee-mall-cloud-common/pom.xml",
    "chars": 1654,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--  @author 程序员十三\n      @qq交流群 791509631\n      @email 2449207463@qq.com\n      @"
  },
  {
    "path": "newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/dto/PageQueryUtil.java",
    "chars": 1138,
    "preview": "package ltd.common.cloud.newbee.dto;\n\nimport java.util.LinkedHashMap;\nimport java.util.Map;\n\n/**\n * 分页查询参数\n *\n * @author"
  },
  {
    "path": "newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/dto/PageResult.java",
    "chars": 1796,
    "preview": "package ltd.common.cloud.newbee.dto;\n\nimport io.swagger.annotations.ApiModelProperty;\n\nimport java.io.Serializable;\nimpo"
  },
  {
    "path": "newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/dto/Result.java",
    "chars": 1418,
    "preview": "package ltd.common.cloud.newbee.dto;\n\nimport io.swagger.annotations.ApiModelProperty;\n\nimport java.io.Serializable;\n\n/**"
  },
  {
    "path": "newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/dto/ResultGenerator.java",
    "chars": 1734,
    "preview": "package ltd.common.cloud.newbee.dto;\n\nimport org.springframework.util.StringUtils;\n\n/**\n * 响应结果生成工具\n *\n * @author 13\n * "
  },
  {
    "path": "newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/enums/IndexConfigTypeEnum.java",
    "chars": 1450,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/enums/NewBeeMallCategoryLevelEnum.java",
    "chars": 1314,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/enums/NewBeeMallOrderStatusEnum.java",
    "chars": 1623,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/enums/PayStatusEnum.java",
    "chars": 1235,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/enums/PayTypeEnum.java",
    "chars": 1206,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/enums/ServiceResultEnum.java",
    "chars": 2041,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/exception/NewBeeMallException.java",
    "chars": 578,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/pojo/AdminUserToken.java",
    "chars": 397,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/pojo/MallUserToken.java",
    "chars": 392,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/util/BeanUtil.java",
    "chars": 3300,
    "preview": "package ltd.common.cloud.newbee.util;\n\nimport org.springframework.beans.BeanUtils;\nimport org.springframework.beans.Bean"
  },
  {
    "path": "newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/util/MD5Util.java",
    "chars": 1455,
    "preview": "package ltd.common.cloud.newbee.util;\n\nimport java.security.MessageDigest;\n\n/**\n * @author 13\n * @qq交流群 796794009\n * @em"
  },
  {
    "path": "newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/util/NewBeeMallUtils.java",
    "chars": 2172,
    "preview": "package ltd.common.cloud.newbee.util;\n\nimport org.springframework.util.StringUtils;\n\nimport java.net.URI;\n\n/**\n * @autho"
  },
  {
    "path": "newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/util/NumberUtil.java",
    "chars": 1279,
    "preview": "package ltd.common.cloud.newbee.util;\n\nimport java.util.regex.Matcher;\nimport java.util.regex.Pattern;\n\n/**\n * @author 1"
  },
  {
    "path": "newbee-mall-cloud-common/src/main/java/ltd/common/cloud/newbee/util/SystemUtil.java",
    "chars": 958,
    "preview": "package ltd.common.cloud.newbee.util;\n\nimport java.math.BigInteger;\nimport java.security.MessageDigest;\n\n/**\n * @author "
  },
  {
    "path": "newbee-mall-cloud-gateway-admin/pom.xml",
    "chars": 2291,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--  @author 程序员十三\n      @qq交流群 791509631\n      @email 2449207463@qq.com\n      @"
  },
  {
    "path": "newbee-mall-cloud-gateway-admin/src/main/java/ltd/gateway/cloud/newbee/NewBeeMallCloudAdminGatewayApplication.java",
    "chars": 768,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-gateway-admin/src/main/java/ltd/gateway/cloud/newbee/config/PolymerizeSwaggerProvider.java",
    "chars": 2450,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-gateway-admin/src/main/java/ltd/gateway/cloud/newbee/config/RedisConfig.java",
    "chars": 2959,
    "preview": "package ltd.gateway.cloud.newbee.config;\n\nimport org.springframework.boot.autoconfigure.AutoConfigureAfter;\nimport org.s"
  },
  {
    "path": "newbee-mall-cloud-gateway-admin/src/main/java/ltd/gateway/cloud/newbee/filter/ValidTokenGlobalFilter.java",
    "chars": 3238,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-gateway-admin/src/main/resources/application.properties",
    "chars": 3676,
    "preview": "server.port=29100\n# 服务名称\nspring.application.name=newbee-mall-cloud-gateway-admin\n# Nacos地址\nspring.cloud.nacos.discovery."
  },
  {
    "path": "newbee-mall-cloud-gateway-mall/pom.xml",
    "chars": 2450,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--  @author 程序员十三\n      @qq交流群 791509631\n      @email 2449207463@qq.com\n      @"
  },
  {
    "path": "newbee-mall-cloud-gateway-mall/src/main/java/ltd/gateway/cloud/newbee/NewBeeMallCloudMallGatewayApplication.java",
    "chars": 766,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-gateway-mall/src/main/java/ltd/gateway/cloud/newbee/config/PolymerizeSwaggerProvider.java",
    "chars": 2316,
    "preview": "package ltd.gateway.cloud.newbee.config;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.spri"
  },
  {
    "path": "newbee-mall-cloud-gateway-mall/src/main/java/ltd/gateway/cloud/newbee/config/RedisConfig.java",
    "chars": 2959,
    "preview": "package ltd.gateway.cloud.newbee.config;\n\nimport org.springframework.boot.autoconfigure.AutoConfigureAfter;\nimport org.s"
  },
  {
    "path": "newbee-mall-cloud-gateway-mall/src/main/java/ltd/gateway/cloud/newbee/filter/ValidMallUserTokenGlobalFilter.java",
    "chars": 3736,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-gateway-mall/src/main/resources/application.properties",
    "chars": 4199,
    "preview": "server.port=29110\n\n# 服务名称\nspring.application.name=newbee-mall-cloud-gateway-mall\n# Nacos地址\nspring.cloud.nacos.discovery."
  },
  {
    "path": "newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-api/pom.xml",
    "chars": 1476,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--  @author 程序员十三\n      @qq交流群 791509631\n      @email 2449207463@qq.com\n      @"
  },
  {
    "path": "newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-api/src/main/java/ltd/goods/cloud/newbee/dto/NewBeeMallGoodsDTO.java",
    "chars": 2485,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-api/src/main/java/ltd/goods/cloud/newbee/dto/StockNumDTO.java",
    "chars": 626,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-api/src/main/java/ltd/goods/cloud/newbee/dto/UpdateStockNumDTO.java",
    "chars": 530,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-api/src/main/java/ltd/goods/cloud/newbee/openfeign/NewBeeCloudGoodsServiceFeign.java",
    "chars": 1254,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/pom.xml",
    "chars": 4018,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--  @author 程序员十三\n      @qq交流群 791509631\n      @email 2449207463@qq.com\n      @"
  },
  {
    "path": "newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/NewBeeMallCloudGoodsServiceApplication.java",
    "chars": 1142,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/config/GoodsServiceExceptionHandler.java",
    "chars": 2832,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/config/GoodsServiceSwagger3Config.java",
    "chars": 2509,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/config/GoodsServiceWebMvcConfigurer.java",
    "chars": 3103,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/config/OpenFeignConfiguration.java",
    "chars": 353,
    "preview": "package ltd.goods.cloud.newbee.config;\n\nimport feign.Logger;\nimport org.springframework.context.annotation.Bean;\nimport "
  },
  {
    "path": "newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/config/SeataProxyConfiguration.java",
    "chars": 1090,
    "preview": "package ltd.goods.cloud.newbee.config;\n\nimport com.alibaba.druid.pool.DruidDataSource;\nimport io.seata.rm.datasource.Dat"
  },
  {
    "path": "newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/config/annotation/TokenToAdminUser.java",
    "chars": 496,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/config/annotation/TokenToMallUser.java",
    "chars": 490,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/config/handler/TokenToAdminUserMethodArgumentResolver.java",
    "chars": 3011,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/config/handler/TokenToMallUserMethodArgumentResolver.java",
    "chars": 2607,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/controller/NewBeeAdminGoodsCategoryController.java",
    "chars": 8245,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/controller/NewBeeAdminGoodsInfoController.java",
    "chars": 8315,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/controller/NewBeeMallGoodsCategoryController.java",
    "chars": 1645,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/controller/NewBeeMallGoodsController.java",
    "chars": 5063,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/controller/param/BatchIdParam.java",
    "chars": 377,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/controller/param/GoodsAddParam.java",
    "chars": 2013,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/controller/param/GoodsCategoryAddParam.java",
    "chars": 1271,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/controller/param/GoodsCategoryEditParam.java",
    "chars": 1412,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/controller/param/GoodsEditParam.java",
    "chars": 2151,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/controller/vo/NewBeeMallGoodsDetailVO.java",
    "chars": 1001,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/controller/vo/NewBeeMallIndexCategoryVO.java",
    "chars": 745,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/controller/vo/NewBeeMallSearchGoodsVO.java",
    "chars": 740,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/controller/vo/SecondLevelCategoryVO.java",
    "chars": 804,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/controller/vo/ThirdLevelCategoryVO.java",
    "chars": 625,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/dao/GoodsCategoryMapper.java",
    "chars": 1204,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/dao/NewBeeMallGoodsMapper.java",
    "chars": 1622,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/entity/GoodsCategory.java",
    "chars": 814,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/entity/LoginAdminUser.java",
    "chars": 443,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/entity/NewBeeMallGoods.java",
    "chars": 1024,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/entity/StockNumDTO.java",
    "chars": 365,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/entity/UpdateStockNumDTO.java",
    "chars": 559,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/service/NewBeeMallCategoryService.java",
    "chars": 1201,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/service/NewBeeMallGoodsService.java",
    "chars": 1713,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/service/impl/NewBeeMallCategoryServiceImpl.java",
    "chars": 7737,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/java/ltd/goods/cloud/newbee/service/impl/NewBeeMallGoodsServiceImpl.java",
    "chars": 6176,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/resources/application.properties",
    "chars": 2651,
    "preview": "server.port=29010\n# 服务名称\nspring.application.name=newbee-mall-cloud-goods-service\n# Nacos地址\nspring.cloud.nacos.discovery."
  },
  {
    "path": "newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/resources/logback.xml",
    "chars": 1566,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE configuration>\n<configuration>\n    <include resource=\"org/springframewo"
  },
  {
    "path": "newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/resources/mapper/GoodsCategoryMapper.xml",
    "chars": 9299,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n严肃声明:\n开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护"
  },
  {
    "path": "newbee-mall-cloud-goods-service/newbee-mall-cloud-goods-web/src/main/resources/mapper/NewBeeMallGoodsMapper.xml",
    "chars": 16975,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n严肃声明:\n开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护"
  },
  {
    "path": "newbee-mall-cloud-goods-service/pom.xml",
    "chars": 1222,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--  @author 程序员十三\n      @qq交流群 791509631\n      @email 2449207463@qq.com\n      @"
  },
  {
    "path": "newbee-mall-cloud-order-service/newbee-mall-cloud-order-api/pom.xml",
    "chars": 1476,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--  @author 程序员十三\n      @qq交流群 791509631\n      @email 2449207463@qq.com\n      @"
  },
  {
    "path": "newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/pom.xml",
    "chars": 4612,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--  @author 程序员十三\n      @qq交流群 791509631\n      @email 2449207463@qq.com\n      @"
  },
  {
    "path": "newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/NewBeeMallCloudOrderServiceApplication.java",
    "chars": 1362,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/config/OpenFeignConfiguration.java",
    "chars": 353,
    "preview": "package ltd.order.cloud.newbee.config;\n\nimport feign.Logger;\nimport org.springframework.context.annotation.Bean;\nimport "
  },
  {
    "path": "newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/config/OrderServiceExceptionHandler.java",
    "chars": 2832,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/config/OrderServiceSwagger3Config.java",
    "chars": 2436,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/config/OrderServiceWebMvcConfigurer.java",
    "chars": 2956,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/config/SeataProxyConfiguration.java",
    "chars": 1091,
    "preview": "package ltd.order.cloud.newbee.config;\n\nimport com.alibaba.druid.pool.DruidDataSource;\nimport io.seata.rm.datasource.Dat"
  },
  {
    "path": "newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/config/annotation/TokenToAdminUser.java",
    "chars": 496,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/config/annotation/TokenToMallUser.java",
    "chars": 490,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/config/handler/TokenToAdminUserMethodArgumentResolver.java",
    "chars": 3012,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/config/handler/TokenToMallUserMethodArgumentResolver.java",
    "chars": 2607,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/controller/NewBeeAdminOrderController.java",
    "chars": 5519,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/controller/NewBeeMallOrderController.java",
    "chars": 6035,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/controller/NewBeeMallUserAddressController.java",
    "chars": 5569,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/controller/param/BatchIdParam.java",
    "chars": 377,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/controller/param/SaveMallUserAddressParam.java",
    "chars": 820,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/controller/param/SaveOrderParam.java",
    "chars": 546,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/controller/param/UpdateMallUserAddressParam.java",
    "chars": 937,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/controller/vo/NewBeeMallOrderDetailVO.java",
    "chars": 1318,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/controller/vo/NewBeeMallOrderItemVO.java",
    "chars": 739,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/controller/vo/NewBeeMallOrderListVO.java",
    "chars": 1085,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/controller/vo/NewBeeMallUserAddressVO.java",
    "chars": 926,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/dao/MallUserAddressMapper.java",
    "chars": 768,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/dao/NewBeeMallOrderAddressMapper.java",
    "chars": 676,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/dao/NewBeeMallOrderItemMapper.java",
    "chars": 1210,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/dao/NewBeeMallOrderMapper.java",
    "chars": 1238,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/entity/LoginAdminUser.java",
    "chars": 443,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/entity/MallUserAddress.java",
    "chars": 678,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/entity/NewBeeMallOrder.java",
    "chars": 849,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/entity/NewBeeMallOrderAddress.java",
    "chars": 513,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/entity/NewBeeMallOrderItem.java",
    "chars": 564,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/service/NewBeeMallOrderService.java",
    "chars": 2290,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/service/NewBeeMallUserAddressService.java",
    "chars": 1259,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/service/impl/NewBeeMallOrderServiceImpl.java",
    "chars": 24772,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/java/ltd/order/cloud/newbee/service/impl/NewBeeMallUserAddressServiceImpl.java",
    "chars": 3995,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/resources/application.properties",
    "chars": 2738,
    "preview": "server.port=29040\n# 服务名称\nspring.application.name=newbee-mall-cloud-order-service\n# Nacos地址\nspring.cloud.nacos.discovery."
  },
  {
    "path": "newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/resources/logback.xml",
    "chars": 1308,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE configuration>\n<configuration>\n    <include resource=\"org/springframewo"
  },
  {
    "path": "newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/resources/mapper/MallUserAddressMapper.xml",
    "chars": 8530,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n严肃声明:\n开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护"
  },
  {
    "path": "newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/resources/mapper/NewBeeMallOrderAddressMapper.xml",
    "chars": 4847,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n严肃声明:\n开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护"
  },
  {
    "path": "newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/resources/mapper/NewBeeMallOrderItemMapper.xml",
    "chars": 7113,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n严肃声明:\n开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护"
  },
  {
    "path": "newbee-mall-cloud-order-service/newbee-mall-cloud-order-web/src/main/resources/mapper/NewBeeMallOrderMapper.xml",
    "chars": 11475,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n严肃声明:\n开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护"
  },
  {
    "path": "newbee-mall-cloud-order-service/pom.xml",
    "chars": 1222,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--  @author 程序员十三\n      @qq交流群 791509631\n      @email 2449207463@qq.com\n      @"
  },
  {
    "path": "newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-api/pom.xml",
    "chars": 1492,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--  @author 程序员十三\n      @qq交流群 791509631\n      @email 2449207463@qq.com\n      @"
  },
  {
    "path": "newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/pom.xml",
    "chars": 4220,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--  @author 程序员十三\n      @qq交流群 791509631\n      @email 2449207463@qq.com\n      @"
  },
  {
    "path": "newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/NewBeeMallCloudRecommendServiceApplication.java",
    "chars": 1244,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/config/OpenFeignConfiguration.java",
    "chars": 357,
    "preview": "package ltd.recommend.cloud.newbee.config;\n\nimport feign.Logger;\nimport org.springframework.context.annotation.Bean;\nimp"
  },
  {
    "path": "newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/config/RecommendServiceExceptionHandler.java",
    "chars": 2636,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/config/RecommendServiceSwagger3Config.java",
    "chars": 2457,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/config/RecommendServiceWebMvcConfigurer.java",
    "chars": 2702,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/config/annotation/TokenToAdminUser.java",
    "chars": 500,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/config/handler/TokenToAdminUserMethodArgumentResolver.java",
    "chars": 3023,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/controller/NewBeeAdminCarouselController.java",
    "chars": 5330,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/controller/NewBeeAdminIndexConfigController.java",
    "chars": 5917,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/controller/NewBeeMallIndexController.java",
    "chars": 2419,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/controller/param/BatchIdParam.java",
    "chars": 381,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/controller/param/CarouselAddParam.java",
    "chars": 947,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/controller/param/CarouselEditParam.java",
    "chars": 1063,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/controller/param/IndexConfigAddParam.java",
    "chars": 1167,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/controller/param/IndexConfigEditParam.java",
    "chars": 1314,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/controller/vo/IndexInfoVO.java",
    "chars": 804,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/controller/vo/NewBeeMallIndexCarouselVO.java",
    "chars": 567,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/controller/vo/NewBeeMallIndexCategoryVO.java",
    "chars": 749,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/controller/vo/NewBeeMallIndexConfigGoodsVO.java",
    "chars": 797,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/controller/vo/SecondLevelCategoryVO.java",
    "chars": 808,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/controller/vo/ThirdLevelCategoryVO.java",
    "chars": 629,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/dao/CarouselMapper.java",
    "chars": 932,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/dao/IndexConfigMapper.java",
    "chars": 1112,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/entity/Carousel.java",
    "chars": 787,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/entity/IndexConfig.java",
    "chars": 839,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/entity/LoginAdminUser.java",
    "chars": 447,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/service/NewBeeMallCarouselService.java",
    "chars": 988,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/service/NewBeeMallIndexConfigService.java",
    "chars": 1042,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/service/impl/NewBeeMallCarouselServiceImpl.java",
    "chars": 3160,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/java/ltd/recommend/cloud/newbee/service/impl/NewBeeMallIndexConfigServiceImpl.java",
    "chars": 5530,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/resources/application.properties",
    "chars": 1999,
    "preview": "server.port=29020\n# 服务名称\nspring.application.name=newbee-mall-cloud-recommend-service\n# Nacos地址\nspring.cloud.nacos.discov"
  },
  {
    "path": "newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/resources/logback.xml",
    "chars": 1312,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE configuration>\n<configuration>\n    <include resource=\"org/springframewo"
  },
  {
    "path": "newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/resources/mapper/CarouselMapper.xml",
    "chars": 7507,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n严肃声明:\n开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护"
  },
  {
    "path": "newbee-mall-cloud-recommend-service/newbee-mall-cloud-recommend-web/src/main/resources/mapper/IndexConfigMapper.xml",
    "chars": 9148,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n严肃声明:\n开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护"
  },
  {
    "path": "newbee-mall-cloud-recommend-service/pom.xml",
    "chars": 1238,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--  @author 程序员十三\n      @qq交流群 791509631\n      @email 2449207463@qq.com\n      @"
  },
  {
    "path": "newbee-mall-cloud-shop-cart-service/newbee-mall-cloud-shop-cart-api/pom.xml",
    "chars": 1492,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--  @author 程序员十三\n      @qq交流群 791509631\n      @email 2449207463@qq.com\n      @"
  },
  {
    "path": "newbee-mall-cloud-shop-cart-service/newbee-mall-cloud-shop-cart-api/src/main/java/ltd/shopcart/cloud/newbee/dto/NewBeeMallShoppingCartItemDTO.java",
    "chars": 1058,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-shop-cart-service/newbee-mall-cloud-shop-cart-api/src/main/java/ltd/shopcart/cloud/newbee/openfeign/NewBeeCloudShopCartServiceFeign.java",
    "chars": 1072,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-shop-cart-service/newbee-mall-cloud-shop-cart-web/pom.xml",
    "chars": 4412,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--  @author 程序员十三\n      @qq交流群 791509631\n      @email 2449207463@qq.com\n      @"
  },
  {
    "path": "newbee-mall-cloud-shop-cart-service/newbee-mall-cloud-shop-cart-web/src/main/java/ltd/shopcart/cloud/newbee/NewBeeMallCloudShopCartServiceApplication.java",
    "chars": 1259,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-shop-cart-service/newbee-mall-cloud-shop-cart-web/src/main/java/ltd/shopcart/cloud/newbee/config/OpenFeignConfiguration.java",
    "chars": 356,
    "preview": "package ltd.shopcart.cloud.newbee.config;\n\nimport feign.Logger;\nimport org.springframework.context.annotation.Bean;\nimpo"
  },
  {
    "path": "newbee-mall-cloud-shop-cart-service/newbee-mall-cloud-shop-cart-web/src/main/java/ltd/shopcart/cloud/newbee/config/SeataProxyConfiguration.java",
    "chars": 1094,
    "preview": "package ltd.shopcart.cloud.newbee.config;\n\nimport com.alibaba.druid.pool.DruidDataSource;\nimport io.seata.rm.datasource."
  },
  {
    "path": "newbee-mall-cloud-shop-cart-service/newbee-mall-cloud-shop-cart-web/src/main/java/ltd/shopcart/cloud/newbee/config/ShopCartServiceExceptionHandler.java",
    "chars": 2618,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-shop-cart-service/newbee-mall-cloud-shop-cart-web/src/main/java/ltd/shopcart/cloud/newbee/config/ShopCartServiceSwagger3Config.java",
    "chars": 2373,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-shop-cart-service/newbee-mall-cloud-shop-cart-web/src/main/java/ltd/shopcart/cloud/newbee/config/ShopCartServiceWebMvcConfigurer.java",
    "chars": 2915,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-shop-cart-service/newbee-mall-cloud-shop-cart-web/src/main/java/ltd/shopcart/cloud/newbee/config/annotation/TokenToMallUser.java",
    "chars": 493,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-shop-cart-service/newbee-mall-cloud-shop-cart-web/src/main/java/ltd/shopcart/cloud/newbee/config/handler/TokenToMallUserMethodArgumentResolver.java",
    "chars": 2613,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-shop-cart-service/newbee-mall-cloud-shop-cart-web/src/main/java/ltd/shopcart/cloud/newbee/controller/NewBeeMallShoppingCartController.java",
    "chars": 7253,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-shop-cart-service/newbee-mall-cloud-shop-cart-web/src/main/java/ltd/shopcart/cloud/newbee/controller/param/SaveCartItemParam.java",
    "chars": 548,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-shop-cart-service/newbee-mall-cloud-shop-cart-web/src/main/java/ltd/shopcart/cloud/newbee/controller/param/UpdateCartItemParam.java",
    "chars": 554,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-shop-cart-service/newbee-mall-cloud-shop-cart-web/src/main/java/ltd/shopcart/cloud/newbee/controller/vo/NewBeeMallShoppingCartItemVO.java",
    "chars": 808,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-shop-cart-service/newbee-mall-cloud-shop-cart-web/src/main/java/ltd/shopcart/cloud/newbee/dao/NewBeeMallShoppingCartItemMapper.java",
    "chars": 1619,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-shop-cart-service/newbee-mall-cloud-shop-cart-web/src/main/java/ltd/shopcart/cloud/newbee/entity/NewBeeMallShoppingCartItem.java",
    "chars": 530,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-shop-cart-service/newbee-mall-cloud-shop-cart-web/src/main/java/ltd/shopcart/cloud/newbee/service/NewBeeMallShoppingCartService.java",
    "chars": 2334,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-shop-cart-service/newbee-mall-cloud-shop-cart-web/src/main/java/ltd/shopcart/cloud/newbee/service/impl/NewBeeMallShoppingCartServiceImpl.java",
    "chars": 10919,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-shop-cart-service/newbee-mall-cloud-shop-cart-web/src/main/resources/application.properties",
    "chars": 2733,
    "preview": "server.port=29030\n# 服务名称\nspring.application.name=newbee-mall-cloud-shop-cart-service\n# Nacos地址\nspring.cloud.nacos.discov"
  },
  {
    "path": "newbee-mall-cloud-shop-cart-service/newbee-mall-cloud-shop-cart-web/src/main/resources/logback.xml",
    "chars": 1312,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE configuration>\n<configuration>\n    <include resource=\"org/springframewo"
  },
  {
    "path": "newbee-mall-cloud-shop-cart-service/newbee-mall-cloud-shop-cart-web/src/main/resources/mapper/NewBeeMallShoppingCartItemMapper.xml",
    "chars": 7881,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n严肃声明:\n开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护"
  },
  {
    "path": "newbee-mall-cloud-shop-cart-service/pom.xml",
    "chars": 1239,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--  @author 程序员十三\n      @qq交流群 791509631\n      @email 2449207463@qq.com\n      @"
  },
  {
    "path": "newbee-mall-cloud-user-service/newbee-mall-cloud-user-api/pom.xml",
    "chars": 1480,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--  @author 程序员十三\n      @qq交流群 791509631\n      @email 2449207463@qq.com\n      @"
  },
  {
    "path": "newbee-mall-cloud-user-service/newbee-mall-cloud-user-api/src/main/java/ltd/user/cloud/newbee/dto/MallUserDTO.java",
    "chars": 876,
    "preview": "package ltd.user.cloud.newbee.dto;\n\nimport java.io.Serializable;\n\npublic class MallUserDTO implements Serializable {\n   "
  },
  {
    "path": "newbee-mall-cloud-user-service/newbee-mall-cloud-user-api/src/main/java/ltd/user/cloud/newbee/openfeign/NewBeeCloudUserServiceFeign.java",
    "chars": 939,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-user-service/newbee-mall-cloud-user-web/pom.xml",
    "chars": 3611,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--  @author 程序员十三\n      @qq交流群 791509631\n      @email 2449207463@qq.com\n      @"
  },
  {
    "path": "newbee-mall-cloud-user-service/newbee-mall-cloud-user-web/src/main/java/ltd/user/cloud/newbee/NewBeeMallCloudUserServiceApplication.java",
    "chars": 929,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-user-service/newbee-mall-cloud-user-web/src/main/java/ltd/user/cloud/newbee/config/RedisConfig.java",
    "chars": 2956,
    "preview": "package ltd.user.cloud.newbee.config;\n\nimport org.springframework.boot.autoconfigure.AutoConfigureAfter;\nimport org.spri"
  },
  {
    "path": "newbee-mall-cloud-user-service/newbee-mall-cloud-user-web/src/main/java/ltd/user/cloud/newbee/config/UserServiceExceptionHandler.java",
    "chars": 2826,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-user-service/newbee-mall-cloud-user-web/src/main/java/ltd/user/cloud/newbee/config/UserServiceWebMvcConfigurer.java",
    "chars": 2879,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-user-service/newbee-mall-cloud-user-web/src/main/java/ltd/user/cloud/newbee/config/UserSwagger3Config.java",
    "chars": 2235,
    "preview": "package ltd.user.cloud.newbee.config;\n\nimport ltd.common.cloud.newbee.pojo.AdminUserToken;\nimport ltd.common.cloud.newbe"
  },
  {
    "path": "newbee-mall-cloud-user-service/newbee-mall-cloud-user-web/src/main/java/ltd/user/cloud/newbee/config/annotation/TokenToAdminUser.java",
    "chars": 495,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-user-service/newbee-mall-cloud-user-web/src/main/java/ltd/user/cloud/newbee/config/annotation/TokenToMallUser.java",
    "chars": 489,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-user-service/newbee-mall-cloud-user-web/src/main/java/ltd/user/cloud/newbee/config/handler/TokenToAdminUserMethodArgumentResolver.java",
    "chars": 2416,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-user-service/newbee-mall-cloud-user-web/src/main/java/ltd/user/cloud/newbee/config/handler/TokenToMallUserMethodArgumentResolver.java",
    "chars": 3675,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-user-service/newbee-mall-cloud-user-web/src/main/java/ltd/user/cloud/newbee/controller/NewBeeMallCloudAdminUserController.java",
    "chars": 4940,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本系统已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-user-service/newbee-mall-cloud-user-web/src/main/java/ltd/user/cloud/newbee/controller/NewBeeMallCloudPersonalController.java",
    "chars": 5527,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  },
  {
    "path": "newbee-mall-cloud-user-service/newbee-mall-cloud-user-web/src/main/java/ltd/user/cloud/newbee/controller/param/AdminLoginParam.java",
    "chars": 646,
    "preview": "/**\n * 严肃声明:\n * 开源版本请务必保留此注释头信息,若删除我方将保留所有法律责任追究!\n * 本软件已申请软件著作权,受国家版权局知识产权以及国家计算机软件著作权保护!\n * 可正常分享和学习源码,不得用于违法犯罪活动,违者必究"
  }
]

// ... and 25 more files (download for full content)

About this extraction

This page contains the full source code of the newbee-ltd/newbee-mall-cloud GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 225 files (769.5 KB), approximately 276.1k tokens, and a symbol index with 756 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!