From 5331f611929d1bb21ac7b0493c7c1dcab897b8cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B2=A1=E5=A4=8D=E4=B9=A0?= <2353956224@qq.com> Date: Wed, 11 Feb 2026 18:58:44 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 9 + Dockerfile | 20 + LICENSE | 674 ++++++++++++++++++ README.md | 73 ++ docker-compose.yaml | 34 + mvnw | 225 ++++++ mvnw.cmd | 143 ++++ pom.xml | 337 +++++++++ sql/bomaos-shop.sql | 597 ++++++++++++++++ .../com/bomaos/BomaosApplicationTests.java | 24 + 10 files changed, 2136 insertions(+) create mode 100644 .gitignore create mode 100644 Dockerfile create mode 100644 LICENSE create mode 100644 README.md create mode 100644 docker-compose.yaml create mode 100644 mvnw create mode 100644 mvnw.cmd create mode 100644 pom.xml create mode 100644 sql/bomaos-shop.sql create mode 100644 src/test/java/com/bomaos/BomaosApplicationTests.java diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2e5756e --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +.idea/ +target/ +*.iml +rebel-remote.xml +rebel.xml +*.log +.DS_Store +*.gz +dist/ \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..e995be4 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,20 @@ +FROM maven:3.8.1-jdk-8-slim as build + +WORKDIR /workdir +COPY ./pom.xml ./pom.xml +COPY src ./src/ + +RUN mvn package -DskipTests + +FROM openjdk:8u212-jre as runtime + +COPY --from=build /workdir/target/bomaos-shop-*.jar /app/app.jar + + +# 设置时区 +RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime +RUN echo 'Asia/Shanghai' >/etc/timezone + +ENTRYPOINT ["java", "-server", "-Xms1024M", "-Xmx1024M", "-Djava.security.egd=file:/dev/./urandom", "-Dfile.encoding=UTF-8", "-XX:+HeapDumpOnOutOfMemoryError", "-jar", "/app/app.jar" ] + + diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + 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. + + + Copyright (C) + + 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 . + +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: + + Copyright (C) + 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 +. + + 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 +. diff --git a/README.md b/README.md new file mode 100644 index 0000000..3bd4c98 --- /dev/null +++ b/README.md @@ -0,0 +1,73 @@ +

波猫商店

+

+License +Spring Boot from Packagist badge +License +mybatis-plus +shiro +

+部署文档   +演示地址 +

+ +## 新版波猫商店Plus版 + +新版plus 波猫商店 限时优惠价 499 需要的小伙伴可联系我。 +演示地址 buykjzh.com +后台地址 admin.buykjzh.com +用户名:test +密码:test1 + +联系方式:1724962375 + +## 🙋 仅供学习参考、不可用于违法用途。 + + +## 🌼 介绍 +本项目为个人学习开发,新版 2.0.3 已正式推出,一款高效安全的发卡平台。 + +支持的支付渠道: +* v免签 +* 易支付-支付宝/微信/QQ钱包 +* [YunGouOS](https://dwz.cn/QQLN87nX) +* 虎皮椒支付 +* payjs(已完成测试)可正常使用 +* 微信扫码支付 +* 支付宝当面付 +* 支付宝网站支付 +* 微信H5 (新增) +* Paypal (国际收款) (新增) +* epusdt 【usdt trc-20】[https://github.com/assimon/epusdt](https://github.com/assimon/epusdt) +* 其他待添加。。 + +## 🔥 系统介绍 +- 开源式站长自动化售货解决方案、高效、稳定、快速! + + 演示地址:[https://free.bomaos.com/](https://free.bomaos.com/) + +- 开发语言:JAVA +- 开发框架:Spring boot +- 前端UI [layui](https://www.layui.com/). + +## 🍊 适用场景: +适用于各种电商、优惠卷、论坛邀请码、充值卡、激活码、注册码、腾讯爱奇艺积分CDK等,支持手动和全自动发货,还有类似1688的分层批发模式。 + +## 🍊 功能特色: +* Layui 开发的白天 - 黑夜 - 炫丽暗黑模板 +* 基于Layui开发的炫丽后台界面 +* 集成了后台多种主题模式 +* 炫丽暗黑界面支持自定义背景图片 +* 炫丽的前台卡片式商品展示 +* 支持无限层级的批发模式 +* 集成了微信订单消息通知以及邮件系统 +* 支持自定义网站标题、关键字、logo、等 +* 支持移动端支付宝唤醒APP支付 +* 集成了大量支付接口【微信官方扫码、支付宝当面付、v免签、payjs、虎皮椒V3、YunGouOS、值联码支付、码支付、USDT、等...】 +* 支持首页公告弹窗展示 +* 集成了强大的优惠券系统 +* 集成了自定义的商品购买备注字段 + +💬 有问题欢迎入 +* QQ群1反馈:940086807【已满】 +* QQ群2反馈:441322649 +* Telegram技术交流群: [https://t.me/bomaoshop](https://t.me/bomaoshop) diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..c0c0e62 --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,34 @@ +version: '3.9' +services: + app: + container_name: bomaos-shop + build: . + restart: always + environment: + - spring.profiles.active=dev + - user.timezone=GMT+08 + - spring.datasource.password=root + - spring.datasource.url=jdbc:mysql://mysql:3306/bomaos-shop?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&&allowPublicKeyRetrieval=true + volumes: + - ./app/:/app/ + - ./app/logs/:/logs/ + ports: + - 8085:8085 + depends_on: + - mysql + + mysql: + container_name: mysql8 + image: mysql:8 + restart: always + volumes: + - ./mysql/conf:/etc/mysql/conf.d + - ./mysql/data:/var/lib/mysql + - ./mysql/logs:/logs + - ./mysql/db/init.sql:/docker-entrypoint-initdb.d/init.sql #初始化sql, 将 sql/bomaos-shop.sql 复制到 mysql/db/init.sql + environment: + - MYSQL_ROOT_PASSWORD=root #root密码 + - MYSQL_DATABASE=bomaos-shop #数据库 + ports: + - 3306:3306 #远程 + diff --git a/mvnw b/mvnw new file mode 100644 index 0000000..5bf251c --- /dev/null +++ b/mvnw @@ -0,0 +1,225 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven2 Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="`/usr/libexec/java_home`" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Migwn, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" + # TODO classpath? +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`which java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=`cd "$wdir/.."; pwd` + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +BASE_DIR=`find_maven_basedir "$(pwd)"` +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +echo $MAVEN_PROJECTBASEDIR +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` +fi + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/mvnw.cmd b/mvnw.cmd new file mode 100644 index 0000000..019bd74 --- /dev/null +++ b/mvnw.cmd @@ -0,0 +1,143 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven2 Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" +if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" + +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" +if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%" == "on" pause + +if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% + +exit /B %ERROR_CODE% diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..4b3c3fa --- /dev/null +++ b/pom.xml @@ -0,0 +1,337 @@ + + + 4.0.0 + + com.bomaos + bomaos-shop + 2.0.4 + + + bomaos-shop + bomaos-shop project for Spring Boot + + + + org.springframework.boot + spring-boot-starter-parent + 2.7.13 + + + + + 1.8 + UTF-8 + UTF-8 + + + + + + + org.springframework.boot + spring-boot-devtools + runtime + true + + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + org.springframework.boot + spring-boot-starter-web + + + + + + org.springframework.boot + spring-boot-starter-aop + + + + + com.mysql + mysql-connector-j + 8.0.33 + + + + + com.alibaba + druid-spring-boot-starter + 1.2.12 + + + + + com.baomidou + mybatis-plus-boot-starter + 3.5.3.1 + + + + + com.alibaba + fastjson + 2.0.11 + + + + + cn.hutool + hutool-core + 5.8.20 + + + + cn.hutool + hutool-poi + 5.8.20 + + + + cn.hutool + hutool-all + 5.8.20 + + + + + org.apache.poi + poi + 5.2.2 + + + + org.apache.poi + poi-ooxml + 5.2.2 + + + + + eu.bitwalker + UserAgentUtils + 1.21 + + + + + org.apache.tika + tika-core + 2.4.1 + + + + + com.artofsolving + jodconverter + 2.2.1 + + + + com.github.livesense + jodconverter-core + 1.0.5 + + + + + org.springframework.boot + spring-boot-starter-mail + 2.7.13 + + + + + org.apache.shiro + shiro-spring + 1.11.0 + + + + org.apache.shiro + shiro-ehcache + 1.8.0 + + + + + com.ibeetl + beetl + 3.0.16.RELEASE + + + + + com.github.whvcse + easy-captcha + 1.6.2 + + + + + org.projectlombok + lombok + 1.18.30 + provided + + + + + com.zjiecode + wxpusher-java-sdk + 2.1.4 + + + + com.github.whvcse + jwtp-spring-boot-starter + 3.1.1 + + + + + org.apache.httpcomponents + httpclient + 4.5.13 + + + + org.apache.commons + commons-lang3 + 3.5 + + + + + + + com.yungouos.pay + yungouos-pay-sdk + 1.1.20 + + + + com.github.wxpay + wxpay-sdk + 0.0.3 + + + + + com.alipay.sdk + alipay-easysdk + 2.2.3 + + + + commons-lang + commons-lang + 2.6 + + + + com.google.code.gson + gson + 2.10.1 + + + + commons-configuration + commons-configuration + 1.10 + + + + com.google.zxing + core + 3.4.0 + + + + com.google.zxing + javase + 3.5.1 + + + + com.paypal.sdk + rest-api-sdk + 1.14.0 + + + + + net.coobird + thumbnailator + 0.4.17 + + + + junit + junit + RELEASE + test + + + + + + + + src/main/java + + **/*Mapper.xml + + + + src/main/resources + + ** + + + + + + org.springframework.boot + spring-boot-maven-plugin + + true + true + + + + + + org.apache.maven.plugins + maven-war-plugin + + + + + + + nexus-aliyun + https://maven.aliyun.com/nexus/content/groups/public + + + + diff --git a/sql/bomaos-shop.sql b/sql/bomaos-shop.sql new file mode 100644 index 0000000..b6d0257 --- /dev/null +++ b/sql/bomaos-shop.sql @@ -0,0 +1,597 @@ +/* + Navicat MySQL Data Transfer + + Source Server : 本地 + Source Server Type : MySQL + Source Server Version : 80027 + Source Host : localhost + Source Database : bomaos-shop + + Target Server Type : MySQL + Target Server Version : 80027 + File Encoding : utf-8 + + Date: 07/31/2023 11:57:42 AM +*/ + +SET NAMES utf8; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for `oauth_token` +-- ---------------------------- +DROP TABLE IF EXISTS `oauth_token`; +CREATE TABLE `oauth_token` ( + `token_id` int NOT NULL AUTO_INCREMENT, + `user_id` varchar(128) NOT NULL, + `access_token` varchar(128) NOT NULL, + `refresh_token` varchar(128) DEFAULT NULL, + `expire_time` datetime DEFAULT NULL, + `refresh_token_expire_time` datetime DEFAULT NULL, + `roles` varchar(512) DEFAULT NULL, + `permissions` varchar(512) DEFAULT NULL, + `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`token_id`) +) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8mb4; + +-- ---------------------------- +-- Table structure for `oauth_token_key` +-- ---------------------------- +DROP TABLE IF EXISTS `oauth_token_key`; +CREATE TABLE `oauth_token_key` ( + `id` int NOT NULL AUTO_INCREMENT, + `token_key` varchar(128) NOT NULL COMMENT '生成token时的key', + `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4; + +-- ---------------------------- +-- Table structure for `sys_article` +-- ---------------------------- +DROP TABLE IF EXISTS `sys_article`; +CREATE TABLE `sys_article` ( + `id` int NOT NULL AUTO_INCREMENT, + `title` varchar(255) DEFAULT NULL COMMENT '文章标题', + `excerpt` longtext COMMENT '摘要', + `content` longtext COMMENT '文章内容', + `likes` int DEFAULT NULL COMMENT '点赞数', + `see_number` int DEFAULT NULL COMMENT '查看数量', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + `update_time` datetime DEFAULT NULL COMMENT '更新时间', + `user_id` int DEFAULT NULL COMMENT '用户uid', + `picture` varchar(255) DEFAULT NULL COMMENT '文章图片', + `enabled` int DEFAULT NULL COMMENT '是否启用', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='文章表'; + +-- ---------------------------- +-- Table structure for `sys_cards` +-- ---------------------------- +DROP TABLE IF EXISTS `sys_cards`; +CREATE TABLE `sys_cards` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT '自增ID', + `product_id` int DEFAULT NULL COMMENT '对应商品id', + `card_info` text COMMENT '卡密', + `status` int DEFAULT NULL COMMENT '卡密状态', + `sell_type` int DEFAULT NULL COMMENT '售卡类型', + `number` int DEFAULT NULL COMMENT '总数', + `sell_number` int DEFAULT NULL COMMENT '售出数量', + `created_at` datetime DEFAULT NULL COMMENT '创建时间', + `updated_at` datetime DEFAULT NULL COMMENT '更新时间', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=218 DEFAULT CHARSET=utf8mb4 COMMENT='卡密'; + +-- ---------------------------- +-- Table structure for `sys_carousel` +-- ---------------------------- +DROP TABLE IF EXISTS `sys_carousel`; +CREATE TABLE `sys_carousel` ( + `id` int NOT NULL AUTO_INCREMENT, + `title` varchar(255) DEFAULT NULL COMMENT '标题', + `link` longtext COMMENT '对应的链接地址', + `image_logo` longtext COMMENT '图片地址', + `summary` longtext COMMENT '简介', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + `update_time` datetime DEFAULT NULL COMMENT '更新时间', + `enabled` int DEFAULT NULL COMMENT '是否启用', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COMMENT='轮播图管理'; + +-- ---------------------------- +-- Table structure for `sys_classifys` +-- ---------------------------- +DROP TABLE IF EXISTS `sys_classifys`; +CREATE TABLE `sys_classifys` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT '自增ID', + `name` varchar(200) DEFAULT NULL COMMENT '分类名称', + `status` int DEFAULT NULL COMMENT '分类状态', + `sort` int DEFAULT NULL COMMENT '排序', + `created_at` datetime DEFAULT NULL COMMENT '创建时间', + `updated_at` datetime DEFAULT NULL COMMENT '更新时间', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COMMENT='分类'; + +-- ---------------------------- +-- Table structure for `sys_coupon` +-- ---------------------------- +DROP TABLE IF EXISTS `sys_coupon`; +CREATE TABLE `sys_coupon` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT '自增ID', + `classifys_id` int DEFAULT NULL COMMENT '分类id', + `product_id` int DEFAULT NULL COMMENT '商品id', + `type` int DEFAULT NULL COMMENT '类型-0一次性,1重复使用', + `status` int DEFAULT NULL COMMENT '状态', + `coupon` varchar(255) DEFAULT NULL COMMENT '优惠券代码', + `discount_type` int DEFAULT NULL COMMENT '面额或者百分比', + `discount_val` decimal(18,2) DEFAULT NULL COMMENT '面额、折扣 价格和百分比', + `count_used` int DEFAULT NULL COMMENT '已使用次数', + `count_all` int DEFAULT NULL COMMENT '可用次数', + `remark` varchar(255) DEFAULT NULL COMMENT '备注', + `update_time` datetime DEFAULT NULL COMMENT '更新时间', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + `full_reduction` decimal(18,2) DEFAULT NULL COMMENT '满减金额', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='优惠券'; + +-- ---------------------------- +-- Table structure for `sys_dictionary` +-- ---------------------------- +DROP TABLE IF EXISTS `sys_dictionary`; +CREATE TABLE `sys_dictionary` ( + `dict_id` int NOT NULL AUTO_INCREMENT COMMENT '字典id', + `dict_code` varchar(100) NOT NULL COMMENT '字典标识', + `dict_name` varchar(200) NOT NULL COMMENT '字典名称', + `sort_number` int NOT NULL DEFAULT '1' COMMENT '排序号', + `comments` varchar(400) DEFAULT NULL COMMENT '备注', + `deleted` int NOT NULL DEFAULT '0' COMMENT '是否删除,0否,1是', + `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', + PRIMARY KEY (`dict_id`) +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COMMENT='字典'; + +-- ---------------------------- +-- Records of `sys_dictionary` +-- ---------------------------- +BEGIN; +INSERT INTO `sys_dictionary` VALUES ('1', 'sex', '性别', '1', '', '0', '2020-03-15 13:04:39', '2020-03-15 13:04:39'), ('2', 'organization_type', '机构类型', '2', '', '0', '2020-03-16 00:32:36', '2020-03-16 00:32:36'); +COMMIT; + +-- ---------------------------- +-- Table structure for `sys_dictionary_data` +-- ---------------------------- +DROP TABLE IF EXISTS `sys_dictionary_data`; +CREATE TABLE `sys_dictionary_data` ( + `dict_data_id` int NOT NULL AUTO_INCREMENT COMMENT '字典项id', + `dict_id` int NOT NULL COMMENT '字典id', + `dict_data_code` varchar(100) NOT NULL COMMENT '字典项标识', + `dict_data_name` varchar(200) NOT NULL COMMENT '字典项名称', + `sort_number` int NOT NULL DEFAULT '1' COMMENT '排序号', + `comments` varchar(400) DEFAULT NULL COMMENT '备注', + `deleted` int NOT NULL DEFAULT '0' COMMENT '是否删除,0否,1是', + `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', + PRIMARY KEY (`dict_data_id`), + KEY `dict_id` (`dict_id`), + CONSTRAINT `sys_dictionary_data_ibfk_1` FOREIGN KEY (`dict_id`) REFERENCES `sys_dictionary` (`dict_id`) ON DELETE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COMMENT='字典项'; + +-- ---------------------------- +-- Records of `sys_dictionary_data` +-- ---------------------------- +BEGIN; +INSERT INTO `sys_dictionary_data` VALUES ('1', '1', 'male', '男', '1', '', '0', '2020-03-15 13:07:28', '2020-03-15 13:07:28'), ('2', '1', 'female', '女', '2', '', '0', '2020-03-15 13:07:41', '2020-03-15 15:58:04'), ('3', '2', 'company', '公司', '1', '', '0', '2020-03-16 00:34:32', '2020-03-16 00:34:32'), ('4', '2', 'subsidiary', '子公司', '2', '', '0', '2020-03-16 00:35:02', '2020-03-16 00:35:02'), ('5', '2', 'department', '部门', '3', '', '0', '2020-03-16 00:35:18', '2020-03-16 00:35:18'), ('6', '2', 'group', '小组', '4', '', '0', '2020-03-16 00:35:36', '2020-03-16 00:35:36'); +COMMIT; + +-- ---------------------------- +-- Table structure for `sys_links` +-- ---------------------------- +DROP TABLE IF EXISTS `sys_links`; +CREATE TABLE `sys_links` ( + `id` int NOT NULL AUTO_INCREMENT, + `title` varchar(255) DEFAULT NULL COMMENT '标题', + `link` longtext COMMENT '链接地址', + `enabled` int DEFAULT NULL COMMENT '是否开启', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + `update_time` datetime DEFAULT NULL COMMENT '更新时间', + `remote_enabled` int DEFAULT NULL COMMENT '远程端', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='友情链接表'; + +-- ---------------------------- +-- Table structure for `sys_login_record` +-- ---------------------------- +DROP TABLE IF EXISTS `sys_login_record`; +CREATE TABLE `sys_login_record` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT '主键', + `username` varchar(100) NOT NULL COMMENT '用户账号', + `os` varchar(200) DEFAULT NULL COMMENT '操作系统', + `device` varchar(200) DEFAULT NULL COMMENT '设备名', + `browser` varchar(200) DEFAULT NULL COMMENT '浏览器类型', + `ip` varchar(200) DEFAULT NULL COMMENT 'ip地址', + `oper_type` int NOT NULL COMMENT '操作类型,0登录成功,1登录失败,2退出登录,3刷新token', + `comments` varchar(400) DEFAULT NULL COMMENT '备注', + `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '操作时间', + `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8mb4 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC COMMENT='登录日志'; + +-- ---------------------------- +-- Records of `sys_login_record` +-- ---------------------------- +BEGIN; +INSERT INTO `sys_login_record` VALUES ('21', 'admin', 'Mac OS X', 'Mac OS X', 'Chrome 11', '127.0.0.1', '0', null, '2023-07-31 11:53:25', '2023-07-31 11:53:25'); +COMMIT; + +-- ---------------------------- +-- Table structure for `sys_menu` +-- ---------------------------- +DROP TABLE IF EXISTS `sys_menu`; +CREATE TABLE `sys_menu` ( + `menu_id` int NOT NULL AUTO_INCREMENT COMMENT '菜单id', + `parent_id` int NOT NULL DEFAULT '0' COMMENT '上级id,0是顶级', + `menu_name` varchar(200) NOT NULL COMMENT '菜单名称', + `menu_icon` varchar(200) DEFAULT NULL COMMENT '菜单图标', + `path` varchar(200) DEFAULT NULL COMMENT '菜单地址', + `menu_type` int DEFAULT '0' COMMENT '类型,0菜单,1按钮', + `sort_number` int NOT NULL DEFAULT '1' COMMENT '排序号', + `authority` varchar(200) DEFAULT NULL COMMENT '权限标识', + `target` varchar(200) DEFAULT '_self' COMMENT '打开位置', + `icon_color` varchar(200) DEFAULT NULL COMMENT '图标颜色', + `hide` int NOT NULL DEFAULT '0' COMMENT '是否隐藏,0否,1是', + `deleted` int NOT NULL DEFAULT '0' COMMENT '是否删除,0否,1是', + `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', + PRIMARY KEY (`menu_id`) +) ENGINE=InnoDB AUTO_INCREMENT=119 DEFAULT CHARSET=utf8mb4 COMMENT='菜单'; + +-- ---------------------------- +-- Records of `sys_menu` +-- ---------------------------- +BEGIN; +INSERT INTO `sys_menu` VALUES ('1', '0', '系统管理', 'layui-icon layui-icon-set-sm', '', '0', '997', '', '_self', null, '0', '0', '2020-02-26 12:51:23', '2021-03-27 20:25:24'), ('2', '1', '用户管理', null, 'sys/user', '0', '1', 'sys:user:view', '_self', null, '0', '0', '2020-02-26 12:51:55', '2020-03-21 18:45:26'), ('3', '2', '查询用户', null, null, '1', '1', 'sys:user:list', '_self', null, '0', '0', '2020-02-26 12:52:06', '2020-03-21 18:45:28'), ('4', '2', '添加用户', null, null, '1', '2', 'sys:user:save', '_self', null, '0', '0', '2020-02-26 12:52:26', '2020-03-21 18:45:29'), ('5', '2', '修改用户', null, null, '1', '3', 'sys:user:update', '_self', null, '0', '0', '2020-02-26 12:52:50', '2020-03-21 18:45:30'), ('6', '2', '删除用户', null, null, '1', '4', 'sys:user:remove', '_self', null, '0', '0', '2020-02-26 12:53:13', '2020-03-21 18:45:32'), ('7', '1', '角色管理', null, 'sys/role', '0', '2', 'sys:role:view', '_self', null, '0', '0', '2020-03-13 13:29:08', '2020-03-21 18:45:33'), ('8', '7', '查询角色', null, null, '1', '1', 'sys:role:list', '_self', null, '0', '0', '2020-03-13 13:30:41', '2020-03-21 18:45:34'), ('9', '7', '添加角色', null, null, '1', '2', 'sys:role:save', '_self', null, '0', '0', '2020-03-15 13:02:07', '2020-03-21 18:45:35'), ('10', '7', '修改角色', null, null, '1', '3', 'sys:role:update', '_self', null, '0', '0', '2020-03-15 13:02:49', '2020-03-21 18:45:36'), ('11', '7', '删除角色', null, null, '1', '4', 'sys:role:remove', '_self', null, '0', '0', '2020-03-20 17:58:51', '2020-03-21 18:45:38'), ('12', '1', '菜单管理', null, 'sys/menu', '0', '3', 'sys:menu:view', '_self', null, '0', '0', '2020-03-21 01:07:13', '2020-03-21 18:45:39'), ('13', '12', '查询菜单', null, null, '1', '1', 'sys:menu:list', '_self', null, '0', '0', '2020-03-21 16:43:30', '2020-03-21 18:45:40'), ('14', '12', '添加菜单', null, null, '1', '2', 'sys:menu:save', '_self', null, '0', '0', '2020-03-21 16:43:54', '2020-03-21 18:45:41'), ('15', '12', '修改菜单', null, null, '1', '3', 'sys:menu:update', '_self', null, '0', '0', '2020-03-21 18:24:17', '2020-03-21 18:45:43'), ('16', '12', '删除菜单', null, null, '1', '4', 'sys:menu:remove', '_self', null, '0', '0', '2020-03-21 18:24:18', '2020-03-21 18:45:44'), ('17', '1', '机构管理', '', 'sys/organization', '0', '4', 'sys:org:view', '_self', null, '1', '0', '2020-03-21 18:24:20', '2021-11-10 16:41:09'), ('18', '17', '查询机构', null, null, '1', '1', 'sys:org:list', '_self', null, '0', '0', '2020-03-21 18:24:21', '2020-03-21 18:44:36'), ('19', '17', '添加机构', null, null, '1', '2', 'sys:org:save', '_self', null, '0', '0', '2020-03-21 18:24:22', '2020-03-21 18:45:51'), ('20', '17', '修改机构', null, null, '1', '3', 'sys:org:update', '_self', null, '0', '0', '2020-03-21 18:24:24', '2020-03-21 18:45:52'), ('21', '17', '删除机构', null, null, '1', '4', 'sys:org:remove', '_self', null, '0', '0', '2020-03-21 18:24:25', '2020-03-21 18:45:54'), ('22', '1', '字典管理', '', 'sys/dict', '0', '5', 'sys:dict:view', '_self', null, '1', '0', '2020-03-21 18:24:26', '2021-11-10 16:41:17'), ('23', '22', '查询字典', null, null, '1', '1', 'sys:dict:list', '_self', null, '0', '0', '2020-03-21 18:24:27', '2020-03-21 18:44:42'), ('24', '22', '添加字典', null, null, '1', '2', 'sys:dict:save', '_self', null, '0', '0', '2020-03-21 18:24:28', '2020-03-21 18:45:59'), ('25', '22', '修改字典', null, null, '1', '3', 'sys:dict:update', '_self', null, '0', '0', '2020-03-21 18:24:29', '2020-03-21 18:46:01'), ('26', '22', '删除字典', null, null, '1', '4', 'sys:dict:remove', '_self', null, '0', '0', '2020-03-21 18:24:31', '2020-03-21 18:46:02'), ('27', '0', '日志管理', 'layui-icon layui-icon-list', '', '0', '998', '', '_self', null, '0', '0', '2020-03-21 18:24:32', '2021-03-27 20:25:31'), ('28', '27', '登录日志', null, 'sys/loginRecord', '0', '1', 'sys:login_record:view', '_self', null, '0', '0', '2020-03-21 18:24:33', '2020-03-21 18:44:52'), ('29', '27', '操作日志', null, 'sys/operRecord', '0', '2', 'sys:oper_record:view', '_self', null, '0', '0', '2020-03-21 18:24:34', '2020-03-21 18:46:10'), ('30', '27', '数据监控', null, 'druid', '0', '3', null, '_self', null, '0', '0', '2020-03-21 18:24:35', '2020-03-22 14:46:21'), ('31', '0', '系统工具', 'layui-icon layui-icon-slider', '', '0', '999', '', '_self', null, '0', '0', '2020-03-21 18:24:36', '2021-03-27 20:25:39'), ('32', '31', '文件管理', null, 'file/manage', '0', '1', 'sys:file:view', '_self', null, '0', '0', '2020-03-21 18:24:38', '2020-03-22 14:46:57'), ('33', '32', '查询文件', null, null, '1', '1', 'sys:file:list', '_self', null, '0', '0', '2020-03-21 18:24:39', '2020-03-22 14:47:32'), ('34', '32', '删除文件', null, null, '1', '2', 'sys:file:remove', '_self', null, '0', '0', '2020-03-21 18:24:40', '2020-03-22 14:46:54'), ('35', '31', '发送邮件', null, 'sys/email', '0', '2', 'sys:email:view', '_self', null, '0', '0', '2020-03-21 18:24:41', '2020-03-22 14:47:35'), ('36', '31', '项目生成', '', '', '0', '3', '', '_self', null, '1', '1', '2020-03-21 18:24:42', '2021-11-10 16:41:57'), ('37', '0', '商品管理', 'layui-icon layui-icon-cart-simple', '', '0', '2', '', '_self', null, '0', '0', '2021-03-27 20:23:20', '2021-03-30 02:17:40'), ('38', '37', '分类管理', '', 'products/classifys', '0', '1', 'products:classifys:view', '_self', null, '0', '0', '2021-03-27 20:23:20', '2021-03-27 20:26:54'), ('39', '38', '查询分类', '', '', '1', '1', 'products:classifys:list', '_self', null, '0', '0', '2021-03-27 20:23:20', '2021-03-27 20:23:20'), ('40', '38', '添加分类', '', '', '1', '2', 'products:classifys:save', '_self', null, '0', '0', '2021-03-27 20:23:20', '2021-03-27 20:23:20'), ('41', '38', '修改分类', '', '', '1', '3', 'products:classifys:update', '_self', null, '0', '0', '2021-03-27 20:23:20', '2021-03-27 20:23:20'), ('42', '38', '删除分类', '', '', '1', '4', 'products:classifys:remove', '_self', null, '0', '0', '2021-03-27 20:23:20', '2021-03-27 20:23:20'), ('43', '37', '商品管理', '', 'products/products', '0', '3', 'products:products:view', '_self', null, '0', '0', '2021-03-27 20:23:20', '2021-06-05 15:51:44'), ('44', '43', '查询商品', '', '', '1', '1', 'products:products:list', '_self', null, '0', '0', '2021-03-27 20:23:20', '2021-03-27 20:23:20'), ('45', '43', '添加商品', '', '', '1', '2', 'products:products:save', '_self', null, '0', '0', '2021-03-27 20:23:20', '2021-03-27 20:23:20'), ('46', '43', '修改商品', '', '', '1', '3', 'products:products:update', '_self', null, '0', '0', '2021-03-27 20:23:20', '2021-03-27 20:23:20'), ('47', '43', '删除商品', '', '', '1', '4', 'products:products:remove', '_self', null, '0', '0', '2021-03-27 20:23:20', '2021-03-27 20:23:20'), ('48', '0', '卡密管理', 'layui-icon layui-icon-template-1', '', '0', '3', '', '_self', null, '0', '0', '2021-03-28 00:34:17', '2021-03-30 02:18:38'), ('49', '48', '卡密管理', '', 'carmi/cards', '0', '2', 'carmi:cards:view', '_self', null, '0', '0', '2021-03-28 00:34:17', '2021-03-28 00:46:41'), ('50', '49', '查询卡密', '', '', '1', '1', 'carmi:cards:list', '_self', null, '0', '0', '2021-03-28 00:34:17', '2021-03-28 00:34:17'), ('51', '54', '添加卡密', '', '', '1', '2', 'carmi:cards:save', '_self', null, '0', '0', '2021-03-28 00:34:17', '2021-03-28 00:46:54'), ('52', '49', '修改卡密', '', '', '1', '3', 'carmi:cards:update', '_self', null, '0', '0', '2021-03-28 00:34:17', '2021-03-28 00:34:17'), ('53', '49', '删除卡密', '', '', '1', '4', 'carmi:cards:remove', '_self', null, '0', '0', '2021-03-28 00:34:17', '2021-03-28 00:34:17'), ('54', '48', '添加卡密', '', 'carmi/cards/add', '0', '1', 'carmi:cards:view', '_self', null, '0', '0', '2021-03-28 00:46:11', '2021-03-28 00:46:26'), ('55', '48', '售出卡密', '', 'carmi/cards/sold', '0', '3', 'carmi:cards:view', '_self', null, '0', '1', '2021-03-28 14:36:53', '2021-11-02 15:12:47'), ('56', '43', '查询卡密', '', '', '1', '1', 'carmi:cards:list', '_self', null, '0', '0', '2021-03-28 14:37:26', '2021-11-10 03:03:13'), ('57', '0', '系统配置', 'layui-icon layui-icon-set-fill', '', '0', '996', '', '_self', null, '0', '0', '2021-03-29 11:07:27', '2021-11-10 16:40:55'), ('58', '57', '支付配置', '', 'settings/pays', '0', '2', 'settings:pays:view', '_self', null, '0', '0', '2021-03-29 11:07:27', '2021-07-04 04:01:04'), ('59', '58', '查询支付配置', '', '', '1', '1', 'settings:pays:list', '_self', null, '0', '0', '2021-03-29 11:07:27', '2021-03-29 11:07:27'), ('60', '58', '添加支付配置', '', '', '1', '2', 'settings:pays:save', '_self', null, '0', '0', '2021-03-29 11:07:27', '2021-03-29 11:07:27'), ('61', '58', '修改支付配置', '', '', '1', '3', 'settings:pays:update', '_self', null, '0', '0', '2021-03-29 11:07:27', '2021-03-29 11:07:27'), ('62', '58', '删除支付配置', '', '', '1', '4', 'settings:pays:remove', '_self', null, '0', '0', '2021-03-29 11:07:27', '2021-03-29 11:07:27'), ('63', '0', '订单管理', 'layui-icon layui-icon-rmb', '', '0', '4', '', '_self', null, '0', '0', '2021-03-29 16:26:07', '2021-03-30 02:18:55'), ('64', '63', '订单流水', '', 'orders/orders', '0', '1', 'orders:orders:view', '_self', null, '0', '0', '2021-03-29 16:26:07', '2021-03-29 17:01:42'), ('65', '64', '查询订单表', '', '', '1', '1', 'orders:orders:list', '_self', null, '0', '0', '2021-03-29 16:26:07', '2021-03-29 16:26:07'), ('66', '64', '添加订单表', '', '', '1', '2', 'orders:orders:save', '_self', null, '0', '0', '2021-03-29 16:26:07', '2021-03-29 16:26:07'), ('67', '64', '修改订单表', '', '', '1', '3', 'orders:orders:update', '_self', null, '0', '0', '2021-03-29 16:26:07', '2021-03-29 16:26:07'), ('68', '64', '删除订单表', '', '', '1', '4', 'orders:orders:remove', '_self', null, '0', '0', '2021-03-29 16:26:07', '2021-03-29 16:26:07'), ('69', '0', '卡密订单关联', 'layui-icon layui-icon-senior', '', '0', '999', 'carmi:orderCard:view', '_self', null, '1', '1', '2021-03-29 22:28:45', '2021-11-02 16:57:33'), ('70', '69', '订单关联卡密表管理', '', 'carmi/orderCard', '0', '1', 'carmi:orderCard:view', '_self', null, '0', '1', '2021-03-29 22:28:45', '2021-11-02 16:57:29'), ('71', '70', '查询订单关联卡密表', '', '', '1', '1', 'carmi:orderCard:list', '_self', null, '0', '1', '2021-03-29 22:28:45', '2021-11-02 16:57:56'), ('72', '70', '添加订单关联卡密表', '', '', '1', '2', 'carmi:orderCard:save', '_self', null, '0', '1', '2021-03-29 22:28:45', '2021-11-02 16:57:51'), ('73', '70', '修改订单关联卡密表', '', '', '1', '3', 'carmi:orderCard:update', '_self', null, '0', '1', '2021-03-29 22:28:45', '2021-11-02 16:58:02'), ('74', '70', '删除订单关联卡密表', '', '', '1', '4', 'carmi:orderCard:remove', '_self', null, '0', '1', '2021-03-29 22:28:45', '2021-11-02 16:58:05'), ('75', '0', '管理中心', 'layui-icon layui-icon-console', 'dashboard/workplace', '0', '1', 'dashboard:user:view', '_self', null, '0', '0', '2021-03-30 00:58:26', '2021-03-30 02:16:33'), ('76', '37', '添加商品', '', 'products/products/addProduct', '0', '2', 'products:products:view', '_self', null, '0', '0', '2021-06-05 15:51:32', '2021-06-05 15:52:52'), ('77', '0', 'website', 'layui-icon layui-icon-senior', '', '0', '1', '', '_self', null, '0', '1', '2021-06-06 02:17:34', '2021-06-06 02:19:37'), ('78', '57', '网站设置', '', 'website/website', '0', '4', 'website:website:view', '_self', null, '0', '0', '2021-06-06 02:17:34', '2021-07-04 04:01:28'), ('79', '78', '查询网站设置', '', '', '1', '1', 'website:website:list', '_self', null, '0', '0', '2021-06-06 02:17:34', '2021-06-06 02:17:34'), ('80', '78', '添加网站设置', '', '', '1', '2', 'website:website:save', '_self', null, '0', '0', '2021-06-06 02:17:34', '2021-06-06 02:17:34'), ('81', '78', '修改网站设置', '', '', '1', '3', 'website:website:update', '_self', null, '0', '0', '2021-06-06 02:17:34', '2021-06-06 02:17:34'), ('82', '78', '删除网站设置', '', '', '1', '4', 'website:website:remove', '_self', null, '0', '0', '2021-06-06 02:17:34', '2021-06-06 02:17:34'), ('83', '0', '营销助手', 'layui-icon layui-icon-senior', '', '0', '5', '', '_self', null, '0', '0', '2021-06-23 07:44:46', '2021-06-23 07:54:20'), ('84', '83', '优惠券管理', '', 'settings/coupon', '0', '2', 'settings:coupon:view', '_self', null, '0', '0', '2021-06-23 07:44:46', '2021-06-23 07:55:51'), ('85', '84', '查询优惠券', '', '', '1', '1', 'settings:coupon:list', '_self', null, '0', '0', '2021-06-23 07:44:46', '2021-06-23 07:44:46'), ('86', '84', '添加优惠券', '', '', '1', '2', 'settings:coupon:save', '_self', null, '0', '0', '2021-06-23 07:44:46', '2021-06-23 07:44:46'), ('87', '84', '修改优惠券', '', '', '1', '3', 'settings:coupon:update', '_self', null, '0', '0', '2021-06-23 07:44:46', '2021-06-23 07:44:46'), ('88', '84', '删除优惠券', '', '', '1', '4', 'settings:coupon:remove', '_self', null, '0', '0', '2021-06-23 07:44:46', '2021-06-23 07:44:46'), ('89', '83', '添加优惠券', '', 'settings/coupon/add', '0', '1', 'settings:coupon:view', '_self', null, '0', '0', '2021-06-23 07:55:44', '2021-06-23 07:56:13'), ('90', '0', 'theme', 'layui-icon layui-icon-senior', '', '0', '1', '', '_self', null, '0', '1', '2021-06-28 00:37:42', '2021-06-28 00:39:46'), ('91', '57', '主题配置', '', 'theme/theme', '0', '3', 'theme:theme:view', '_self', null, '0', '0', '2021-06-28 00:37:42', '2021-06-28 00:39:43'), ('92', '91', '查询主题配置', '', '', '1', '1', 'theme:theme:list', '_self', null, '0', '0', '2021-06-28 00:37:42', '2021-06-28 00:37:42'), ('93', '91', '添加主题配置', '', '', '1', '2', 'theme:theme:save', '_self', null, '0', '0', '2021-06-28 00:37:42', '2021-06-28 00:37:42'), ('94', '91', '修改主题配置', '', '', '1', '3', 'theme:theme:update', '_self', null, '0', '0', '2021-06-28 00:37:42', '2021-06-28 00:37:42'), ('95', '91', '删除主题配置', '', '', '1', '4', 'theme:theme:remove', '_self', null, '0', '0', '2021-06-28 00:37:42', '2021-06-28 00:37:42'), ('96', '0', 'settings', 'layui-icon layui-icon-senior', '', '0', '1', '', '_self', null, '0', '1', '2021-07-04 03:59:22', '2021-07-04 04:00:42'), ('97', '57', '商店设置', '', 'settings/shopSettings', '0', '1', 'settings:shopSettings:view', '_self', null, '0', '0', '2021-07-04 03:59:22', '2021-07-04 04:01:37'), ('98', '97', '查询商店设置', '', '', '1', '1', 'settings:shopSettings:list', '_self', null, '0', '0', '2021-07-04 03:59:22', '2021-07-04 03:59:22'), ('99', '97', '添加商店设置', '', '', '1', '2', 'settings:shopSettings:save', '_self', null, '0', '0', '2021-07-04 03:59:22', '2021-07-04 03:59:22'), ('100', '97', '修改商店设置', '', '', '1', '3', 'settings:shopSettings:update', '_self', null, '0', '0', '2021-07-04 03:59:22', '2021-07-04 03:59:22'), ('101', '97', '删除商店设置', '', '', '1', '4', 'settings:shopSettings:remove', '_self', null, '0', '0', '2021-07-04 03:59:22', '2021-07-04 03:59:22'), ('102', '57', '微信通知', '', 'wxpusher/send', '0', '2', 'settings:wxpusher:view', '_self', null, '0', '0', '2021-07-04 16:35:26', '2021-07-04 16:35:38'), ('103', '0', '内容管理', 'layui-icon layui-icon-senior', '', '0', '30', '', '_self', null, '0', '0', '2021-11-08 04:59:08', '2021-11-08 06:10:02'), ('104', '103', '文章管理', '', 'content/article', '0', '2', 'content:article:view', '_self', null, '0', '0', '2021-11-08 04:59:08', '2021-11-10 03:05:20'), ('105', '104', '查询文章表', '', '', '1', '1', 'content:article:list', '_self', null, '0', '0', '2021-11-08 04:59:08', '2021-11-08 04:59:08'), ('106', '104', '添加文章表', '', '', '1', '2', 'content:article:save', '_self', null, '0', '0', '2021-11-08 04:59:08', '2021-11-08 04:59:08'), ('107', '104', '修改文章表', '', '', '1', '3', 'content:article:update', '_self', null, '0', '0', '2021-11-08 04:59:08', '2021-11-08 04:59:08'), ('108', '104', '删除文章表', '', '', '1', '4', 'content:article:remove', '_self', null, '0', '0', '2021-11-08 04:59:08', '2021-11-08 04:59:08'), ('109', '103', '添加文章', '', 'content/article/addArticle', '0', '1', 'content:article:view', '_self', null, '0', '0', '2021-11-08 06:23:01', '2021-11-08 06:23:35'), ('110', '109', '添加文章表', '', '', '1', '1', 'content:article:save', '_self', null, '0', '0', '2021-11-08 06:24:24', '2021-11-08 06:25:03'), ('111', '0', 'content', 'layui-icon layui-icon-senior', '', '0', '1', '', '_self', null, '0', '1', '2021-11-10 03:01:51', '2021-11-10 03:03:49'), ('112', '103', '首页轮播', '', 'content/carousel', '0', '4', 'content:carousel:view', '_self', null, '0', '0', '2021-11-10 03:01:51', '2021-11-10 08:30:59'), ('113', '112', '查询轮播图管理', '', '', '1', '1', 'content:carousel:list', '_self', null, '0', '0', '2021-11-10 03:01:51', '2021-11-10 03:01:51'), ('114', '112', '添加轮播图管理', '', '', '1', '2', 'content:carousel:save', '_self', null, '0', '0', '2021-11-10 03:01:51', '2021-11-10 03:01:51'), ('115', '112', '修改轮播图管理', '', '', '1', '3', 'content:carousel:update', '_self', null, '0', '0', '2021-11-10 03:01:51', '2021-11-10 03:01:51'), ('116', '112', '删除轮播图管理', '', '', '1', '4', 'content:carousel:remove', '_self', null, '0', '0', '2021-11-10 03:01:51', '2021-11-10 03:01:51'), ('117', '103', '添加轮播图', '', 'content/carousel/addCarousel', '0', '3', 'content:carousel:view', '_self', null, '0', '1', '2021-11-10 03:05:12', '2021-11-10 08:30:37'), ('118', '117', '添加轮播图管理', '', '', '1', '1', 'content:carousel:save', '_self', null, '0', '0', '2021-11-10 03:06:39', '2021-11-10 03:06:39'); +COMMIT; + +-- ---------------------------- +-- Table structure for `sys_oper_record` +-- ---------------------------- +DROP TABLE IF EXISTS `sys_oper_record`; +CREATE TABLE `sys_oper_record` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT '主键', + `user_id` int DEFAULT NULL COMMENT '用户id', + `model` varchar(200) DEFAULT NULL COMMENT '操作模块', + `description` varchar(200) DEFAULT NULL COMMENT '操作方法', + `url` varchar(200) DEFAULT NULL COMMENT '请求地址', + `request_method` varchar(200) DEFAULT NULL COMMENT '请求方式', + `oper_method` varchar(200) DEFAULT NULL COMMENT '调用方法', + `param` varchar(2000) DEFAULT NULL COMMENT '请求参数', + `result` varchar(2000) DEFAULT NULL COMMENT '返回结果', + `ip` varchar(200) DEFAULT NULL COMMENT 'ip地址', + `comments` varchar(2000) DEFAULT NULL COMMENT '备注', + `spend_time` int DEFAULT NULL COMMENT '请求耗时,单位毫秒', + `state` int NOT NULL DEFAULT '0' COMMENT '状态,0成功,1异常', + `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '操作时间', + `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', + PRIMARY KEY (`id`), + KEY `user_id` (`user_id`), + CONSTRAINT `sys_oper_record_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `sys_user` (`user_id`) ON DELETE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=1138 DEFAULT CHARSET=utf8mb4 COMMENT='操作日志'; + +-- ---------------------------- +-- Records of `sys_oper_record` +-- ---------------------------- +BEGIN; +INSERT INTO `sys_oper_record` VALUES ('1125', '1', '订单表管理', '分页查询', '/orders/orders/page', 'GET', 'com.bomaos.orders.controller.OrdersController.page', '{\"page\":[\"1\"],\"limit\":[\"5\"]}', null, '127.0.0.1', null, '36', '0', '2023-07-31 11:53:27', '2023-07-31 11:53:27'), ('1126', '1', '文章表管理', '分页查询', '/content/article/page', 'GET', 'com.bomaos.content.controller.ArticleController.page', '{\"page\":[\"1\"],\"limit\":[\"10\"]}', null, '127.0.0.1', null, '7', '0', '2023-07-31 11:53:42', '2023-07-31 11:53:42'), ('1127', '1', '轮播图管理管理', '分页查询', '/content/carousel/page', 'GET', 'com.bomaos.content.controller.CarouselController.page', '{\"page\":[\"1\"],\"limit\":[\"10\"]}', null, '127.0.0.1', null, '3', '0', '2023-07-31 11:53:43', '2023-07-31 11:53:43'), ('1128', '1', '优惠券管理', '分页查询', '/settings/coupon/page', 'GET', 'com.bomaos.settings.controller.CouponController.page', '{\"page\":[\"1\"],\"limit\":[\"10\"]}', null, '127.0.0.1', null, '8', '0', '2023-07-31 11:53:46', '2023-07-31 11:53:46'), ('1129', '1', '订单表管理', '分页查询', '/orders/orders/page', 'GET', 'com.bomaos.orders.controller.OrdersController.page', '{\"page\":[\"1\"],\"limit\":[\"10\"]}', null, '127.0.0.1', null, '4', '0', '2023-07-31 11:53:47', '2023-07-31 11:53:47'), ('1130', '1', '卡密管理', '分页查询', '/carmi/cards/page', 'GET', 'com.bomaos.carmi.controller.CardsController.page', '{\"page\":[\"1\"],\"limit\":[\"10\"]}', null, '127.0.0.1', null, '7', '0', '2023-07-31 11:53:49', '2023-07-31 11:53:49'), ('1131', '1', '商品管理', '分页查询', '/products/products/page', 'GET', 'com.bomaos.products.controller.ProductsController.page', '{\"page\":[\"1\"],\"limit\":[\"10\"]}', null, '127.0.0.1', null, '19', '0', '2023-07-31 11:53:52', '2023-07-31 11:53:52'), ('1132', '1', '分类管理', '分页查询', '/products/classifys/page', 'GET', 'com.bomaos.products.controller.ClassifysController.page', '{\"page\":[\"1\"],\"limit\":[\"10\"]}', null, '127.0.0.1', null, '9', '0', '2023-07-31 11:53:54', '2023-07-31 11:53:54'), ('1133', '1', '支付配置管理', '分页查询', '/settings/pays/page', 'GET', 'com.bomaos.settings.controller.PaysController.page', '{\"page\":[\"1\"],\"limit\":[\"10\"]}', null, '127.0.0.1', null, '25', '0', '2023-07-31 11:53:56', '2023-07-31 11:53:56'), ('1134', '1', '支付配置管理', '修改', '/settings/pays/update', 'POST', 'com.bomaos.settings.controller.PaysController.update', null, '{\"msg\":\"修改成功\",\"code\":0}', '127.0.0.1', null, '16', '0', '2023-07-31 11:55:10', '2023-07-31 11:55:10'), ('1135', '1', '支付配置管理', '分页查询', '/settings/pays/page', 'GET', 'com.bomaos.settings.controller.PaysController.page', '{\"page\":[\"1\"],\"limit\":[\"10\"]}', null, '127.0.0.1', null, '13', '0', '2023-07-31 11:55:10', '2023-07-31 11:55:10'), ('1136', '1', '支付配置管理', '分页查询', '/settings/pays/page', 'GET', 'com.bomaos.settings.controller.PaysController.page', '{\"page\":[\"2\"],\"limit\":[\"10\"]}', null, '127.0.0.1', null, '30', '0', '2023-07-31 11:55:12', '2023-07-31 11:55:12'), ('1137', '1', '支付配置管理', '分页查询', '/settings/pays/page', 'GET', 'com.bomaos.settings.controller.PaysController.page', '{\"page\":[\"1\"],\"limit\":[\"10\"]}', null, '127.0.0.1', null, '19', '0', '2023-07-31 11:55:21', '2023-07-31 11:55:21'); +COMMIT; + +-- ---------------------------- +-- Table structure for `sys_orders` +-- ---------------------------- +DROP TABLE IF EXISTS `sys_orders`; +CREATE TABLE `sys_orders` ( + `id` int NOT NULL AUTO_INCREMENT, + `member` varchar(255) DEFAULT NULL COMMENT '订单号', + `status` int DEFAULT NULL COMMENT '状态', + `number` int DEFAULT NULL COMMENT '订单数量', + `pay_time` datetime DEFAULT NULL COMMENT '支付时间', + `contact` varchar(255) DEFAULT NULL COMMENT '买家联系方式', + `product_id` int DEFAULT NULL COMMENT '商品id', + `product_name` varchar(255) DEFAULT NULL COMMENT '商品名称', + `ship_type` int DEFAULT NULL COMMENT '发货模式', + `pay_type` varchar(255) DEFAULT NULL COMMENT '支付类型', + `guest_id` int DEFAULT NULL COMMENT '支付用户的id(如果有)', + `ip` varchar(255) DEFAULT NULL COMMENT '买家ip', + `device` varchar(255) DEFAULT NULL COMMENT '购买设备', + `pay_no` varchar(255) DEFAULT NULL COMMENT '流水号', + `money` decimal(18,2) DEFAULT NULL COMMENT '付款金额', + `price` decimal(18,2) NOT NULL COMMENT '提交金额', + `create_time` datetime DEFAULT NULL COMMENT '订单创建时间', + `cloud_payid` varchar(255) DEFAULT '' COMMENT '云端id', + `email` varchar(255) DEFAULT NULL COMMENT '邮件通知', + `is_coupon` int DEFAULT NULL COMMENT '是否使用优惠券', + `coupon_id` int DEFAULT NULL COMMENT '优惠券id', + `user_id` int unsigned DEFAULT NULL COMMENT '用户id', + `password` varchar(255) DEFAULT NULL COMMENT '订单密码', + `cards_info` longtext COMMENT '卡密信息', + `attach_info` longtext COMMENT '附加信息', + `handling_fee` decimal(18,2) DEFAULT NULL COMMENT '手续费', + PRIMARY KEY (`id`,`price`), + KEY `id` (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=83 DEFAULT CHARSET=utf8mb4 COMMENT='订单表'; + +-- ---------------------------- +-- Table structure for `sys_organization` +-- ---------------------------- +DROP TABLE IF EXISTS `sys_organization`; +CREATE TABLE `sys_organization` ( + `organization_id` int NOT NULL AUTO_INCREMENT COMMENT '机构id', + `parent_id` int NOT NULL DEFAULT '0' COMMENT '上级id,0是顶级', + `organization_name` varchar(200) NOT NULL COMMENT '机构名称', + `organization_full_name` varchar(200) DEFAULT NULL COMMENT '机构全称', + `organization_code` varchar(100) DEFAULT NULL COMMENT '机构代码', + `organization_type` int NOT NULL COMMENT '机构类型', + `leader_id` int DEFAULT NULL COMMENT '负责人id', + `sort_number` int NOT NULL DEFAULT '1' COMMENT '排序号', + `comments` varchar(400) DEFAULT NULL COMMENT '备注', + `deleted` int NOT NULL DEFAULT '0' COMMENT '是否删除,0否,1是', + `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', + PRIMARY KEY (`organization_id`), + KEY `leader_id` (`leader_id`), + CONSTRAINT `sys_organization_ibfk_1` FOREIGN KEY (`leader_id`) REFERENCES `sys_user` (`user_id`) ON DELETE SET NULL +) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COMMENT='组织机构'; + +-- ---------------------------- +-- Records of `sys_organization` +-- ---------------------------- +BEGIN; +INSERT INTO `sys_organization` VALUES ('1', '0', 'XXX公司', 'XXXXXXXXX科技有限公司', null, '3', null, '1', '', '0', '2020-03-15 13:14:55', '2020-03-21 15:12:49'), ('2', '1', '研发部', '研发部', null, '5', null, '2', '', '0', '2020-03-15 13:15:16', '2020-03-16 00:43:09'), ('3', '2', '高教组', '高等教育行业项目组', null, '6', null, '3', '', '0', '2020-03-15 13:15:45', '2020-03-16 00:42:49'), ('4', '2', '政务组', '政务行业项目组', null, '6', null, '4', '', '0', '2020-03-15 13:16:15', '2020-03-16 00:42:54'), ('5', '2', '制造组', '生产制造行业项目组', null, '6', null, '5', '', '0', '2020-03-15 13:16:37', '2020-03-21 15:13:05'), ('6', '2', '仿真组', '虚拟仿真行业项目组', null, '6', null, '6', '', '0', '2020-03-15 13:16:57', '2020-03-16 00:43:03'), ('7', '1', '测试部', '测试部', null, '5', null, '6', '', '0', '2020-03-15 13:17:19', '2020-03-16 00:43:14'), ('8', '1', '设计部', 'UI设计部门', null, '5', null, '7', '', '0', '2020-03-15 13:17:56', '2020-03-16 00:43:18'), ('9', '1', '市场部', '市场部', null, '5', null, '8', '', '0', '2020-03-15 13:18:15', '2020-03-16 00:43:23'); +COMMIT; + +-- ---------------------------- +-- Table structure for `sys_pays` +-- ---------------------------- +DROP TABLE IF EXISTS `sys_pays`; +CREATE TABLE `sys_pays` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT '自增ID', + `name` varchar(255) DEFAULT NULL COMMENT '名称', + `driver` varchar(255) DEFAULT NULL COMMENT '驱动', + `config` longtext COMMENT '配置', + `comment` varchar(255) DEFAULT NULL COMMENT '说明', + `created_at` datetime DEFAULT NULL COMMENT '创建时间', + `updated_at` datetime DEFAULT NULL COMMENT '更新时间', + `is_mobile` int DEFAULT NULL COMMENT '移动端', + `is_pc` int DEFAULT NULL COMMENT 'pc端', + `is_handling_fee` int DEFAULT NULL COMMENT '手续费tag', + `handling_fee` int DEFAULT NULL COMMENT '手续费', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=25 DEFAULT CHARSET=utf8mb4 COMMENT='支付配置'; + +-- ---------------------------- +-- Records of `sys_pays` +-- ---------------------------- +BEGIN; +INSERT INTO `sys_pays` VALUES ('1', '支付宝', 'mqpay_alipay', '{\"notify_url\":\"xxx\",\"create_url\":\"xxx\",\"key\":\"xxx\"}', 'V免签 - 支付宝(费率0)(自己搭建)', '2021-03-29 16:16:05', '2021-03-29 16:16:07', '0', '0', null, '0'), ('2', '微信', 'mqpay_wxpay', '{\"notify_url\":\"xxx\",\"create_url\":\"xxx\",\"key\":\"xxx\"}', 'V免签 - 微信 (费率0)(自己搭建)', '2021-03-29 16:17:52', '2021-03-29 16:17:55', '0', '0', null, '0'), ('3', 'QQ钱包', 'epay_qqpay', '{\"pid\":\"xxx\",\"notify_url\":\"xxx\",\"create_url\":\"xxx\",\"key\":\"xxx\"}', '易支付 - QQ钱包', '2021-05-24 16:12:49', '2021-10-30 16:12:49', '0', '0', '0', '0'), ('5', '支付宝', 'epay_alipay', '{\"pid\":\"xxx\",\"notify_url\":\"xxx\",\"create_url\":\"xxx\",\"key\":\"xxx\"}', '易支付 - 支付宝', '2021-05-24 12:00:01', '2021-05-24 12:00:04', '1', '1', null, '0'), ('6', '微信', 'epay_wxpay', '{\"pid\":\"xxx\",\"notify_url\":\"xxx\",\"create_url\":\"xxx\",\"key\":\"xxx\"}', '易支付 - 微信', '2021-05-24 12:00:55', '2021-05-24 12:01:00', '0', '0', null, '0'), ('7', '微信', 'yungouos_wxpay', '{\"mchId\":\"xxx\",\"notify_url\":\"xxx\",\"key\":\"xxxx\"}', 'YunGouOS - 微信(个人小薇支付-费率低) 申请地址:https://dwz.cn/QQLN87nX', '2021-06-06 04:53:12', '2021-06-06 04:53:20', '0', '0', null, '0'), ('8', '支付宝', 'yungouos_alipay', '{\"mchId\":\"xxx\",\"notify_url\":\"xxx\",\"key\":\"xxx\"}', 'YunGouOS - 支付宝 (个人小薇支付-费率低) 申请地址:https://dwz.cn/QQLN87nX', '2021-06-06 04:54:03', '2021-06-06 04:54:06', '0', '0', null, '0'), ('9', '微信', 'xunhupay_wxpay', '{\"appid\":\"xxx\",\"appsecret\":\"xxx\",\"notify_url\":\"xxx\",\"create_url\":\"https://api.xunhupay.com/payment/do.html\"}', '虎皮椒V3 - 微信(费率-H5版2%/普通版1%) 申请地址:https://www.xunhupay.com', '2021-06-06 22:24:47', '2021-06-06 22:24:50', '0', '0', null, '0'), ('10', '支付宝', 'xunhupay_alipay', '{\"appid\":\"xxx\",\"appsecret\":\"xxx\",\"notify_url\":\"xxx\",\"create_url\":\"https://api.xunhupay.com/payment/do.html\"}', '虎皮椒V3 - 支付宝 申请地址:https://www.xunhupay.com', '2021-06-06 22:25:19', '2021-06-06 22:25:22', '0', '0', null, '0'), ('13', '微信', 'payjs_wxpay', '{\"mchId\":\"xxx\",\"notify_url\":\"xxx\",\"key\":\"xxx\"}', 'Payjs - 微信扫码 申请地址:https://payjs.cn', '2021-06-27 14:17:54', '2021-06-27 14:17:58', '0', '0', null, '0'), ('14', '支付宝', 'payjs_alipay', '{\"mchId\":\"xxx\",\"notify_url\":\"xxx\",\"key\":\"xxx\"}', 'Payjs - 支付宝扫码 申请地址:https://payjs.cn', '2021-06-27 14:18:38', '2021-06-27 14:18:43', '0', '0', null, '0'), ('17', '微信', 'wxpay', '{\"mchId\":\"xxx\",\"appId\":\"xxx\",\"notify_url\":\"xxx\",\"key\":\"xxx\"}', '官方微信 - 扫码支付', '2021-07-02 02:47:37', '2021-07-02 02:47:40', '0', '0', null, '0'), ('18', '支付宝', 'alipay', '{\"private_key\":\"xxx\",\"notify_url\":\"xxx\",\"app_id\":\"xxx\",\"alipay_public_key\":\"xxx\"}', '官方支付宝 - 当面付', '2021-07-03 18:53:08', '2021-07-02 18:53:11', '0', '0', '0', '0'), ('19', '微信H5', 'wxpay_h5', '{\"mchId\":\"xxx\",\"appId\":\"xxx\",\"notify_url\":\"xxx\",\"key\":\"xxx\"}', '官方微信 - H5支付 (开启后只在手机端显示)', '2021-07-02 23:20:54', '2021-08-17 23:20:56', '0', '0', null, '0'), ('20', 'Paypal', 'paypal', '{\"clientId\":\"xxx\",\"return_url\":\"xxx\",\"clientSecret\":\"xxx\"}', 'Paypal 境外支付(默认美元交易)', '2021-08-24 12:04:25', '2021-08-24 12:04:28', '0', '0', '0', '0'), ('22', '支付宝PC', 'alipay_pc', '{\"private_key\":\"xxx\",\"notify_url\":\"xxx\",\"app_id\":\"xxx\",\"alipay_public_key\":\"xxx\"}', '支付宝官方 - pc端支付', '2021-07-03 03:04:02', '2021-11-03 03:04:02', '0', '0', '0', '0'), ('23', 'USDT', 'epusdt', '{\"notify_url\":\"xxx\",\"create_url\":\"填写收银台域名后面不变/api/v1/order/create-transaction\",\"key\":\"xxx\"}', 'Epusdt TRC-20 数字货币 自己搭建【地址:https://github.com/assimon/epusdt】', '2022-09-15 15:33:41', '2022-09-15 15:33:43', '0', '0', '0', '8'), ('24', '支付宝', 'budpay_alipay', '{\"pid\":\"xxx\",\"notify_url\":\"xxx\",\"create_url\":\"https://pay.whbh1658.vip/api\",\"key\":\"xxx\"}', 'Budpay-支付宝支付', '2023-07-28 08:28:46', '2023-07-28 08:28:48', '0', '0', '0', '0'); +COMMIT; + +-- ---------------------------- +-- Table structure for `sys_products` +-- ---------------------------- +DROP TABLE IF EXISTS `sys_products`; +CREATE TABLE `sys_products` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT '自增ID', + `name` varchar(255) DEFAULT NULL COMMENT '商品名称', + `price` decimal(18,2) DEFAULT NULL COMMENT '商品金额', + `sort` int DEFAULT NULL COMMENT '排序', + `link` varchar(255) DEFAULT NULL COMMENT '商品链接', + `status` int DEFAULT NULL COMMENT '商品状态', + `pd_info` longtext COMMENT '商品详情', + `created_at` datetime DEFAULT NULL COMMENT '创建时间', + `updated_at` datetime DEFAULT NULL COMMENT '更新时间', + `deleted_at` datetime DEFAULT NULL COMMENT '删除时间', + `classify_id` int DEFAULT NULL COMMENT '分类id', + `index_logo` longtext COMMENT '首页截图', + `image_logo` longtext COMMENT '商品logo', + `is_wholesale` int DEFAULT NULL COMMENT '批发功能', + `wholesale` longtext COMMENT '批发配置', + `restricts` int DEFAULT '0' COMMENT '限制购买', + `ship_type` int DEFAULT NULL COMMENT '发货类型(0-自动,1-手动)', + `inventory` int DEFAULT NULL COMMENT '商品库存(人工发货类型生效)', + `sales` int DEFAULT NULL COMMENT '销量', + `is_password` int DEFAULT NULL COMMENT '是否开启密码查询', + `customize_input` longtext COMMENT '自定义输入框', + `is_customize` int DEFAULT NULL COMMENT '是否开启自定义输入框', + `sell_type` int DEFAULT NULL COMMENT '售卡类型', + `component_point` varchar(255) NOT NULL COMMENT '提示语', + `component_type` int DEFAULT NULL COMMENT '提示类型', + `component_url` varchar(255) DEFAULT NULL COMMENT '提示链接', + `component_enabled` int DEFAULT NULL COMMENT '是否开启提示', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COMMENT='商品'; + +-- ---------------------------- +-- Table structure for `sys_role` +-- ---------------------------- +DROP TABLE IF EXISTS `sys_role`; +CREATE TABLE `sys_role` ( + `role_id` int NOT NULL AUTO_INCREMENT COMMENT '角色id', + `role_name` varchar(200) NOT NULL COMMENT '角色名称', + `role_code` varchar(200) DEFAULT NULL COMMENT '角色标识', + `comments` varchar(400) DEFAULT NULL COMMENT '备注', + `deleted` int NOT NULL DEFAULT '0' COMMENT '是否删除,0否,1是', + `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', + PRIMARY KEY (`role_id`) +) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC COMMENT='角色'; + +-- ---------------------------- +-- Records of `sys_role` +-- ---------------------------- +BEGIN; +INSERT INTO `sys_role` VALUES ('1', '管理员', 'admin', '管理员', '0', '2020-02-26 15:18:37', '2020-03-21 15:15:54'), ('2', '普通用户', 'user', '普通用户', '0', '2020-02-26 15:18:52', '2020-03-21 15:16:02'), ('3', '游客', 'guest', '游客', '0', '2020-02-26 15:19:49', '2020-03-21 15:16:57'); +COMMIT; + +-- ---------------------------- +-- Table structure for `sys_role_menu` +-- ---------------------------- +DROP TABLE IF EXISTS `sys_role_menu`; +CREATE TABLE `sys_role_menu` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT '主键id', + `role_id` int NOT NULL COMMENT '角色id', + `menu_id` int NOT NULL COMMENT '菜单id', + `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', + PRIMARY KEY (`id`), + KEY `FK_sys_role_permission_role` (`role_id`), + KEY `menu_id` (`menu_id`), + CONSTRAINT `sys_role_menu_ibfk_1` FOREIGN KEY (`role_id`) REFERENCES `sys_role` (`role_id`) ON DELETE CASCADE, + CONSTRAINT `sys_role_menu_ibfk_2` FOREIGN KEY (`menu_id`) REFERENCES `sys_menu` (`menu_id`) ON DELETE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=763 DEFAULT CHARSET=utf8mb4 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC COMMENT='角色权限'; + +-- ---------------------------- +-- Records of `sys_role_menu` +-- ---------------------------- +BEGIN; +INSERT INTO `sys_role_menu` VALUES ('656', '1', '75', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('657', '1', '37', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('658', '1', '38', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('659', '1', '39', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('660', '1', '40', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('661', '1', '41', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('662', '1', '42', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('663', '1', '76', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('664', '1', '43', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('665', '1', '44', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('666', '1', '56', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('667', '1', '45', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('668', '1', '46', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('669', '1', '47', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('670', '1', '48', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('671', '1', '54', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('672', '1', '51', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('673', '1', '49', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('674', '1', '50', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('675', '1', '52', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('676', '1', '53', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('677', '1', '63', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('678', '1', '64', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('679', '1', '65', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('680', '1', '66', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('681', '1', '67', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('682', '1', '68', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('683', '1', '83', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('684', '1', '89', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('685', '1', '84', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('686', '1', '85', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('687', '1', '86', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('688', '1', '87', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('689', '1', '88', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('690', '1', '103', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('691', '1', '109', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('692', '1', '110', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('693', '1', '104', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('694', '1', '105', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('695', '1', '106', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('696', '1', '107', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('697', '1', '108', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('698', '1', '117', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('699', '1', '118', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('700', '1', '112', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('701', '1', '113', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('702', '1', '114', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('703', '1', '115', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('704', '1', '116', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('705', '1', '1', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('706', '1', '2', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('707', '1', '3', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('708', '1', '4', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('709', '1', '5', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('710', '1', '6', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('711', '1', '7', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('712', '1', '8', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('713', '1', '9', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('714', '1', '10', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('715', '1', '11', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('716', '1', '12', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('717', '1', '13', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('718', '1', '14', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('719', '1', '15', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('720', '1', '16', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('721', '1', '17', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('722', '1', '18', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('723', '1', '19', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('724', '1', '20', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('725', '1', '21', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('726', '1', '22', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('727', '1', '23', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('728', '1', '24', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('729', '1', '25', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('730', '1', '26', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('731', '1', '57', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('732', '1', '97', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('733', '1', '98', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('734', '1', '99', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('735', '1', '100', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('736', '1', '101', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('737', '1', '58', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('738', '1', '59', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('739', '1', '60', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('740', '1', '61', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('741', '1', '62', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('742', '1', '102', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('743', '1', '91', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('744', '1', '92', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('745', '1', '93', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('746', '1', '94', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('747', '1', '95', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('748', '1', '78', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('749', '1', '79', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('750', '1', '80', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('751', '1', '81', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('752', '1', '82', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('753', '1', '27', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('754', '1', '28', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('755', '1', '29', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('756', '1', '30', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('757', '1', '31', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('758', '1', '32', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('759', '1', '33', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('760', '1', '34', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('761', '1', '35', '2021-11-10 03:07:03', '2021-11-10 03:07:03'), ('762', '1', '36', '2021-11-10 03:07:03', '2021-11-10 03:07:03'); +COMMIT; + +-- ---------------------------- +-- Table structure for `sys_shop_settings` +-- ---------------------------- +DROP TABLE IF EXISTS `sys_shop_settings`; +CREATE TABLE `sys_shop_settings` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT '自增id', + `is_window` int DEFAULT NULL COMMENT '是否开启弹窗', + `window_text` longtext COMMENT '弹窗内容', + `is_background` varchar(255) DEFAULT NULL COMMENT '全局背景图', + `store_details` longtext COMMENT '商店详情', + `is_wxpusher` int DEFAULT NULL COMMENT '是否开启微信通知', + `app_token` varchar(255) DEFAULT NULL COMMENT 'pusher token', + `wxpush_uid` varchar(255) DEFAULT NULL COMMENT '微信通知uid', + `is_email` int DEFAULT '0' COMMENT '邮件通知开关', + `is_list_layout` int DEFAULT NULL COMMENT '是否开启列表布局', + `quotations` varchar(255) DEFAULT NULL COMMENT '首页语录', + `qq_customer_service` varchar(255) DEFAULT NULL COMMENT 'QQ客服', + `qq_group_qrcode` varchar(255) DEFAULT NULL COMMENT 'QQ群二维码', + `tg_customer_service` varchar(255) DEFAULT NULL COMMENT 'TG客服', + `is_client` int DEFAULT NULL COMMENT '是否开启客服', + `crisp_key` varchar(255) DEFAULT NULL COMMENT 'crisp密钥', + `is_model` int DEFAULT NULL COMMENT '首页模版', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COMMENT='商店设置'; + +-- ---------------------------- +-- Records of `sys_shop_settings` +-- ---------------------------- +BEGIN; +INSERT INTO `sys_shop_settings` VALUES ('1', '1', '
\n

    想把世界最好的给你,却发现世上最好的是你;我不要不老的青春,只要一个盗不走的爱人。

\n

 

\n
\n
\n

    有时幸福就像手心里的沙,握得越紧,失去得越快;有时幸福就像隔岸的花朵,隐约可见,却无法触摸。两个人的世界里,总要一个闹着、一个笑着、一个吵着、一个哄着。

\n
', 'https://s1.hdslb.com/bfs/static/blive/blfe-dynamic-web/static/img/background.bc725153.png', '

打开祝福的心扉,让梦想在晨光中翱翔。

', '1', 'xxx', 'xxx', '0', '1', '打开祝福的心扉,让梦想在晨光中翱翔。', '1724962375', 'xxx', 'xxx', '1', '3ff64218-c586-4c42-91fe-c13c8aa07405', '0'); +COMMIT; + +-- ---------------------------- +-- Table structure for `sys_theme` +-- ---------------------------- +DROP TABLE IF EXISTS `sys_theme`; +CREATE TABLE `sys_theme` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT '自增id', + `name` varchar(255) DEFAULT NULL COMMENT '主题名称', + `description` longtext COMMENT '说明', + `driver` varchar(255) DEFAULT NULL COMMENT '主题驱动', + `enable` int DEFAULT NULL COMMENT '是否设置', + `update_date` datetime DEFAULT NULL COMMENT '更新时间', + `create_date` datetime DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COMMENT='主题配置'; + +-- ---------------------------- +-- Records of `sys_theme` +-- ---------------------------- +BEGIN; +INSERT INTO `sys_theme` VALUES ('1', '系统默认', '系统预设主题', 'default', '1', '2021-06-28 00:58:32', '2021-06-28 00:58:34'); +COMMIT; + +-- ---------------------------- +-- Table structure for `sys_user` +-- ---------------------------- +DROP TABLE IF EXISTS `sys_user`; +CREATE TABLE `sys_user` ( + `user_id` int NOT NULL AUTO_INCREMENT COMMENT '用户id', + `username` varchar(100) NOT NULL COMMENT '账号', + `password` varchar(200) NOT NULL COMMENT '密码', + `nick_name` varchar(200) NOT NULL COMMENT '昵称', + `avatar` varchar(200) DEFAULT NULL COMMENT '头像', + `sex` int DEFAULT NULL COMMENT '性别', + `phone` varchar(200) DEFAULT NULL COMMENT '手机号', + `email` varchar(200) DEFAULT NULL COMMENT '邮箱', + `email_verified` int NOT NULL DEFAULT '0' COMMENT '邮箱是否验证,0否,1是', + `true_name` varchar(200) DEFAULT NULL COMMENT '真实姓名', + `id_card` varchar(200) DEFAULT NULL COMMENT '身份证号', + `birthday` date DEFAULT NULL COMMENT '出生日期', + `introduction` varchar(200) DEFAULT NULL COMMENT '个人简介', + `organization_id` int DEFAULT NULL COMMENT '机构id', + `state` int NOT NULL DEFAULT '0' COMMENT '状态,0正常,1冻结', + `deleted` int NOT NULL DEFAULT '0' COMMENT '是否删除,0否,1是', + `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '注册时间', + `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', + `qq_uuid` varchar(255) DEFAULT NULL COMMENT 'qquuid', + `wx_uuid` varchar(255) DEFAULT NULL COMMENT 'wxuuid', + PRIMARY KEY (`user_id`), + KEY `organization_id` (`organization_id`), + CONSTRAINT `sys_user_ibfk_1` FOREIGN KEY (`organization_id`) REFERENCES `sys_organization` (`organization_id`) ON DELETE SET NULL +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC COMMENT='用户'; + +-- ---------------------------- +-- Records of `sys_user` +-- ---------------------------- +BEGIN; +INSERT INTO `sys_user` VALUES ('1', 'admin', '21232f297a57a5a743894a0e4a801fc3', '管理员', null, '1', '', null, '0', null, null, null, '312312344444', null, '0', '0', '2020-01-13 14:43:52', '2022-04-12 15:25:09', null, null); +COMMIT; + +-- ---------------------------- +-- Table structure for `sys_user_role` +-- ---------------------------- +DROP TABLE IF EXISTS `sys_user_role`; +CREATE TABLE `sys_user_role` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT '主键id', + `user_id` int NOT NULL COMMENT '用户id', + `role_id` int NOT NULL COMMENT '角色id', + `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', + PRIMARY KEY (`id`), + KEY `FK_sys_user_role` (`user_id`), + KEY `FK_sys_user_role_role` (`role_id`), + CONSTRAINT `sys_user_role_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `sys_user` (`user_id`) ON DELETE CASCADE, + CONSTRAINT `sys_user_role_ibfk_2` FOREIGN KEY (`role_id`) REFERENCES `sys_role` (`role_id`) ON DELETE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC COMMENT='用户角色'; + +-- ---------------------------- +-- Records of `sys_user_role` +-- ---------------------------- +BEGIN; +INSERT INTO `sys_user_role` VALUES ('2', '1', '1', '2021-08-23 18:29:06', '2021-08-23 18:29:06'); +COMMIT; + +-- ---------------------------- +-- Table structure for `sys_website` +-- ---------------------------- +DROP TABLE IF EXISTS `sys_website`; +CREATE TABLE `sys_website` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT '自增id', + `website_name` varchar(255) DEFAULT NULL COMMENT '网站名称', + `website_url` varchar(255) DEFAULT NULL COMMENT '网站域名', + `website_logo` varchar(255) DEFAULT '' COMMENT '网站logo', + `contact` varchar(255) DEFAULT NULL COMMENT '联系方式', + `beian_icp` varchar(255) DEFAULT NULL COMMENT '备案ICP', + `keywords` longtext COMMENT '关键字', + `description` longtext COMMENT '网站描述', + `favicon` varchar(255) DEFAULT NULL COMMENT 'favicon', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COMMENT='网站设置'; + +-- ---------------------------- +-- Records of `sys_website` +-- ---------------------------- +BEGIN; +INSERT INTO `sys_website` VALUES ('1', '波猫商店', 'http://free.bomaos.com', '', '1724962375', 'Copyright © 2012-2022 波猫商店', '商城系统,商城源码,tg营销助手,发卡网', '波猫商店 - 全新UI商城系统', ''); +COMMIT; + +SET FOREIGN_KEY_CHECKS = 1; diff --git a/src/test/java/com/bomaos/BomaosApplicationTests.java b/src/test/java/com/bomaos/BomaosApplicationTests.java new file mode 100644 index 0000000..f450a7c --- /dev/null +++ b/src/test/java/com/bomaos/BomaosApplicationTests.java @@ -0,0 +1,24 @@ +package com.bomaos; + +import com.bomaos.reception.util.SynchronizedByKeyService; +import org.junit.jupiter.api.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class BomaosApplicationTests { + + @Autowired + private SynchronizedByKeyService synchronizedByKey; + + @Test + public void contextLoads() { + synchronizedByKey.exec("1", () -> { + System.out.println(11111); + }); + } + +}