Compare commits
1450 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c813ed0062 | ||
|
|
f658d43a5a | ||
|
|
fe0b9c37a4 | ||
|
|
28cc0617c3 | ||
|
|
f2cb6b56ea | ||
|
|
81b7da07f4 | ||
|
|
db3f775c50 | ||
|
|
93a45319ac | ||
|
|
7627614284 | ||
|
|
ca5887028a | ||
|
|
1a3736fd29 | ||
|
|
09d00260f6 | ||
|
|
2e019ef933 | ||
|
|
6acc99c7cf | ||
|
|
b57e7813d6 | ||
|
|
09e6f4a1a1 | ||
|
|
872bb220dc | ||
|
|
2498e57600 | ||
|
|
cfbb673387 | ||
|
|
05db6501f7 | ||
|
|
a5aa090f4a | ||
|
|
09aae17a02 | ||
|
|
7f5739f89b | ||
|
|
131d4eb156 | ||
|
|
ffa0b0db30 | ||
|
|
7bd0084802 | ||
|
|
d88762f3ab | ||
|
|
ebdbed6d08 | ||
|
|
efdf505e63 | ||
|
|
98f25179d3 | ||
|
|
9a0c7dd73d | ||
|
|
0cf464e549 | ||
|
|
2e6ddeafdd | ||
|
|
633b94c375 | ||
|
|
6441018d95 | ||
|
|
e706431df5 | ||
|
|
db1a3566ae | ||
|
|
9225b4ff10 | ||
|
|
586a507bb1 | ||
|
|
034f29c734 | ||
|
|
478dd1d201 | ||
|
|
554aed024c | ||
|
|
b2e0fe1de4 | ||
|
|
b69a558df0 | ||
|
|
2f180a73ed | ||
|
|
82f3223a03 | ||
|
|
cfe48d539b | ||
|
|
8ef00ae285 | ||
|
|
ed032653ee | ||
|
|
9108a1585c | ||
|
|
d4855b702b | ||
|
|
40822ca05b | ||
|
|
4dac80f084 | ||
|
|
8609216ef5 | ||
|
|
9678c7f506 | ||
|
|
63cdebdf1f | ||
|
|
e89be8eb8c | ||
|
|
3559971a8d | ||
|
|
dc1d1a7e7e | ||
|
|
10ecce1e0d | ||
|
|
2520c27f77 | ||
|
|
63d684c972 | ||
|
|
35739b64a3 | ||
|
|
ddcda57a08 | ||
|
|
16ae69ed06 | ||
|
|
fd067d8abf | ||
|
|
42b3c72977 | ||
|
|
e34b4172b8 | ||
|
|
30d6ab64f8 | ||
|
|
2e8c40bcf3 | ||
|
|
f2385c3ace | ||
|
|
a45355b125 | ||
|
|
b3bb771066 | ||
|
|
068c6b986e | ||
|
|
18e2c89891 | ||
|
|
7b485753a6 | ||
|
|
8556d27173 | ||
|
|
d677aabbf4 | ||
|
|
aaa0748409 | ||
|
|
57ee156798 | ||
|
|
5ae4d8b4fa | ||
|
|
681327274c | ||
|
|
6ab2888fd0 | ||
|
|
80a0e0e8c7 | ||
|
|
80773e2d58 | ||
|
|
065bcc8a55 | ||
|
|
9398413999 | ||
|
|
cf623f6756 | ||
|
|
1b316baac6 | ||
|
|
4fc1d0e346 | ||
|
|
159fe37120 | ||
|
|
6f9486f065 | ||
|
|
94da71336a | ||
|
|
8c5ce396b2 | ||
|
|
0063820fdf | ||
|
|
fe80edebbd | ||
|
|
6b59c1e643 | ||
|
|
1b52381c71 | ||
|
|
763519876e | ||
|
|
cede181bc0 | ||
|
|
cb776eb4c0 | ||
|
|
8ed4f6eb3c | ||
|
|
9cf97f3203 | ||
|
|
2a984b8c56 | ||
|
|
22ecf48168 | ||
|
|
89422b2736 | ||
|
|
bcd4bf4ff1 | ||
|
|
a263bc6301 | ||
|
|
27ae773e20 | ||
|
|
085b61c2ab | ||
|
|
c7682680ee | ||
|
|
a301432a87 | ||
|
|
526de18a42 | ||
|
|
c940bf6cb2 | ||
|
|
a7643a6b93 | ||
|
|
24f6b9e80f | ||
|
|
d349616957 | ||
|
|
f7c9ba820d | ||
|
|
f99f59963a | ||
|
|
caaf9c74f3 | ||
|
|
076f47f5c4 | ||
|
|
f0e4e4c2bc | ||
|
|
c87fe45dfa | ||
|
|
49fd03df7f | ||
|
|
6deed61311 | ||
|
|
6311767320 | ||
|
|
2463d1b5bb | ||
|
|
9d41ae3cae | ||
|
|
2be8bf27bf | ||
|
|
2d052ffb1a | ||
|
|
88ab071ac7 | ||
|
|
bda72da679 | ||
|
|
95e5ef2d33 | ||
|
|
48a294e7c6 | ||
|
|
794fa63302 | ||
|
|
cdb8e851a8 | ||
|
|
f8ee3a8d15 | ||
|
|
76ab997922 | ||
|
|
97e7a130f1 | ||
|
|
2a96ad4af7 | ||
|
|
e1aee4a744 | ||
|
|
ecfe1524d4 | ||
|
|
42ea2dc986 | ||
|
|
230e2e7407 | ||
|
|
92639ba309 | ||
|
|
19b3225312 | ||
|
|
e56c20469d | ||
|
|
a28eceaf61 | ||
|
|
1925c6d33c | ||
|
|
fcac4002b1 | ||
|
|
ed3a2ae9fc | ||
|
|
4955d2135b | ||
|
|
9f1dacc1d4 | ||
|
|
f0765a6627 | ||
|
|
a31a9fdfbd | ||
|
|
fd2d0724a7 | ||
|
|
82d7389092 | ||
|
|
a53eb3cfde | ||
|
|
bd048d725c | ||
|
|
8e275613e1 | ||
|
|
fc869a34e0 | ||
|
|
48c84acb7c | ||
|
|
40d40a344e | ||
|
|
d31257ba76 | ||
|
|
f0a80338da | ||
|
|
6b5ca5b337 | ||
|
|
61f9d7812d | ||
|
|
d5eeafc554 | ||
|
|
2175433444 | ||
|
|
cfbb1a1519 | ||
|
|
1302ca6de4 | ||
|
|
239b520939 | ||
|
|
56d9dbee5b | ||
|
|
41decf1fa1 | ||
|
|
1d2cb5737d | ||
|
|
a2496b267a | ||
|
|
178544fe2d | ||
|
|
9e3b9c8f38 | ||
|
|
b439d8283f | ||
|
|
fb48bce38d | ||
|
|
b189fbe238 | ||
|
|
26c1c97442 | ||
|
|
ee8f5b6e1e | ||
|
|
6755515b1f | ||
|
|
074036c0b5 | ||
|
|
c7d0820eed | ||
|
|
97c0fdbf1d | ||
|
|
a962939db8 | ||
|
|
a9802710ef | ||
|
|
aaaa0b1ebf | ||
|
|
f34d10146a | ||
|
|
b875cbdda4 | ||
|
|
d80a3f7f48 | ||
|
|
259946e78f | ||
|
|
9c24adf77d | ||
|
|
4c47d4aba2 | ||
|
|
7f9061cfc5 | ||
|
|
085dad2107 | ||
|
|
055a7fffdb | ||
|
|
6cea6af59b | ||
|
|
6f0f8106e0 | ||
|
|
c9a0ce7985 | ||
|
|
b40533c553 | ||
|
|
e2fff23080 | ||
|
|
72482ee395 | ||
|
|
5366034556 | ||
|
|
484e2a2318 | ||
|
|
0873fba7df | ||
|
|
4aa6f864f0 | ||
|
|
183b2ba30c | ||
|
|
071f15347e | ||
|
|
71ed58e665 | ||
|
|
50c7e20ba6 | ||
|
|
876b801fa1 | ||
|
|
bd42b88b71 | ||
|
|
b2dfb3abe2 | ||
|
|
164f726222 | ||
|
|
24cdf5cf00 | ||
|
|
93cb9da558 | ||
|
|
66c6bfa0fb | ||
|
|
edd93a6ad4 | ||
|
|
ea1626a2ef | ||
|
|
1f3b7f21bb | ||
|
|
e6fe055cd5 | ||
|
|
1422b6fdbc | ||
|
|
cfb70eff8a | ||
|
|
dfe6085432 | ||
|
|
b8e8db0e36 | ||
|
|
fb2e41422b | ||
|
|
f3db8f2e45 | ||
|
|
6bc2c0adf1 | ||
|
|
df75e08d22 | ||
|
|
b2ccdad483 | ||
|
|
3d6eb7b4fa | ||
|
|
96cfb8a8ce | ||
|
|
4a4672c80a | ||
|
|
a0c1cd1019 | ||
|
|
ed20d1abbb | ||
|
|
0ebb9c01f8 | ||
|
|
dd3176f841 | ||
|
|
a910a97719 | ||
|
|
cdf8ab3a3c | ||
|
|
074e4ed5b7 | ||
|
|
9e43d186d7 | ||
|
|
8b61d40ff8 | ||
|
|
f9b3001eb3 | ||
|
|
f1ec44869d | ||
|
|
72341acb57 | ||
|
|
fa696e6c11 | ||
|
|
b30909942a | ||
|
|
7c64e1f11d | ||
|
|
d1c6988d0f | ||
|
|
efe0bd4bad | ||
|
|
7523481be0 | ||
|
|
23182106b9 | ||
|
|
515ffbcf0a | ||
|
|
8f52a1e2a2 | ||
|
|
bdd9045fc1 | ||
|
|
518616483b | ||
|
|
817f662cb7 | ||
|
|
01419cde15 | ||
|
|
118efe0833 | ||
|
|
46911004db | ||
|
|
b87190d135 | ||
|
|
39e22f5561 | ||
|
|
02dd37c87f | ||
|
|
7db7afad4a | ||
|
|
25582e2958 | ||
|
|
3c5609545b | ||
|
|
061d924d46 | ||
|
|
49af6777ee | ||
|
|
e9d9a95cb4 | ||
|
|
7e70e7d6cd | ||
|
|
ebb48c7d0f | ||
|
|
e0d464906e | ||
|
|
9189a6d433 | ||
|
|
b3f6bad6f8 | ||
|
|
105162aa89 | ||
|
|
51c4161f68 | ||
|
|
488d9352f3 | ||
|
|
56b800e4ff | ||
|
|
03864ca1a9 | ||
|
|
94c87f5645 | ||
|
|
dadf48ac25 | ||
|
|
a47bfcc5fd | ||
|
|
1798916bf9 | ||
|
|
5af1238e02 | ||
|
|
a62db61221 | ||
|
|
8104947aec | ||
|
|
d5f9fbf99d | ||
|
|
d3910bb931 | ||
|
|
7cac57bd79 | ||
|
|
07874ca210 | ||
|
|
0267597b20 | ||
|
|
1cc939f457 | ||
|
|
b12245bb94 | ||
|
|
006ec15000 | ||
|
|
4f4593e5f7 | ||
|
|
58ff71a863 | ||
|
|
7d8a31c55a | ||
|
|
29e6637399 | ||
|
|
d61fc41465 | ||
|
|
1cc692a3c9 | ||
|
|
a2a1bed3e0 | ||
|
|
557366a3ec | ||
|
|
80c8b4b4d4 | ||
|
|
9dd6bc2d6f | ||
|
|
9c1db92824 | ||
|
|
e3172c28b7 | ||
|
|
b0b3747760 | ||
|
|
e8af34995b | ||
|
|
9f17dcafbb | ||
|
|
347877cdad | ||
|
|
8f1541c338 | ||
|
|
89f3e8f980 | ||
|
|
e945f93032 | ||
|
|
4f9841d443 | ||
|
|
c73204a828 | ||
|
|
b2681d443d | ||
|
|
05a1d880c5 | ||
|
|
7b13ae13ad | ||
|
|
ecb330cc57 | ||
|
|
af5e866853 | ||
|
|
007b145c2e | ||
|
|
201943994b | ||
|
|
b17f3c08b7 | ||
|
|
c46c59e4a1 | ||
|
|
0bdb39797d | ||
|
|
71061ad861 | ||
|
|
f14875e679 | ||
|
|
e8a1f6a02f | ||
|
|
036035f51b | ||
|
|
104b6c2f5d | ||
|
|
7dffd7dcb9 | ||
|
|
63f1f0df21 | ||
|
|
dda955219a | ||
|
|
5d6e99dc8a | ||
|
|
b61a5e8f7b | ||
|
|
d9018ef317 | ||
|
|
9993b9bbf6 | ||
|
|
03fd9b222a | ||
|
|
3d7cfb1c63 | ||
|
|
ca6e45fb92 | ||
|
|
e9950652a6 | ||
|
|
cddc6571f7 | ||
|
|
708ba929f0 | ||
|
|
6e820d745c | ||
|
|
ae9e0e27ff | ||
|
|
3485c5a5dd | ||
|
|
62ac16b705 | ||
|
|
048ca0e64a | ||
|
|
d413de75d3 | ||
|
|
4f8d4f7a74 | ||
|
|
a0619abfc4 | ||
|
|
5e950b9766 | ||
|
|
1f02818692 | ||
|
|
c0a370ad47 | ||
|
|
a502420c5f | ||
|
|
b4aef1461c | ||
|
|
54b40c35f4 | ||
|
|
a33e053bc7 | ||
|
|
ae93661763 | ||
|
|
349bee7405 | ||
|
|
c286d05ad8 | ||
|
|
49b2c2f7a3 | ||
|
|
b469fcfee3 | ||
|
|
5e6fde594b | ||
|
|
5d598d9034 | ||
|
|
8181f2602a | ||
|
|
3e74697215 | ||
|
|
fac10debd5 | ||
|
|
74941f7243 | ||
|
|
621b2e322c | ||
|
|
948b67558a | ||
|
|
dcf48db2ac | ||
|
|
072d31e8df | ||
|
|
25240f445d | ||
|
|
279b473793 | ||
|
|
959e24f51b | ||
|
|
c720d53389 | ||
|
|
335d3f7ff1 | ||
|
|
16608d4950 | ||
|
|
7b6a150bd2 | ||
|
|
1f21d80dc0 | ||
|
|
76c8a23721 | ||
|
|
08933ad92f | ||
|
|
06d0fb5b86 | ||
|
|
05c3c8a80c | ||
|
|
41796774dc | ||
|
|
4594752470 | ||
|
|
d818b396c4 | ||
|
|
cf7b333662 | ||
|
|
7cc0a90acf | ||
|
|
f9eed2f2ab | ||
|
|
f8ff163aee | ||
|
|
38ad5bb394 | ||
|
|
b2fb415ab5 | ||
|
|
4c03676a3e | ||
|
|
efce977bd6 | ||
|
|
071974c74b | ||
|
|
7f202506b5 | ||
|
|
a9c9886210 | ||
|
|
e18b62da6e | ||
|
|
59c6dedd35 | ||
|
|
a673db222e | ||
|
|
1cb72a5bdd | ||
|
|
c1e45242a7 | ||
|
|
efe9a1a6e4 | ||
|
|
e91f0e7ee4 | ||
|
|
3716691366 | ||
|
|
675830045d | ||
|
|
9294f77163 | ||
|
|
864701adfb | ||
|
|
81f47a7fb6 | ||
|
|
a56ceca3c5 | ||
|
|
bc670d263d | ||
|
|
36068d7197 | ||
|
|
4ebe0d4f43 | ||
|
|
9f01078fe0 | ||
|
|
b07fc790e5 | ||
|
|
ab2bb11eee | ||
|
|
919367162b | ||
|
|
ec4d91b37f | ||
|
|
799aa8f90c | ||
|
|
cfbd1d68ee | ||
|
|
4cf8c4e81f | ||
|
|
87bde2c53f | ||
|
|
2aaf677605 | ||
|
|
fad7c4a39d | ||
|
|
fc464c0564 | ||
|
|
53c28359bb | ||
|
|
4737cc5ae8 | ||
|
|
97845bbaf5 | ||
|
|
8f516f7be7 | ||
|
|
5c164f89cc | ||
|
|
da28859398 | ||
|
|
25f8b103bf | ||
|
|
8b0513aece | ||
|
|
b95712aef3 | ||
|
|
917d9437b6 | ||
|
|
123388d059 | ||
|
|
226d66c22e | ||
|
|
d8f09b6039 | ||
|
|
fae4dcaae2 | ||
|
|
b957df648b | ||
|
|
a21f4800ab | ||
|
|
4abf2205c1 | ||
|
|
0c652eac63 | ||
|
|
3fef330707 | ||
|
|
c2abc4e2e4 | ||
|
|
d48e5a05a6 | ||
|
|
72471168d7 | ||
|
|
08a2f7dfcd | ||
|
|
ceb61318f0 | ||
|
|
11778a632a | ||
|
|
f3e11fd368 | ||
|
|
69fdd4b756 | ||
|
|
507a6e6525 | ||
|
|
82a9c6dbf7 | ||
|
|
21d66f719d | ||
|
|
c793c47d45 | ||
|
|
a81faf4ba4 | ||
|
|
e60d47163e | ||
|
|
e7215cec9e | ||
|
|
f7e6789e23 | ||
|
|
4af58aea4a | ||
|
|
4d379d6006 | ||
|
|
519ccb7ddd | ||
|
|
79ccab6869 | ||
|
|
ccac5226d5 | ||
|
|
674e585eff | ||
|
|
7e1b7f2725 | ||
|
|
256f2ba480 | ||
|
|
72f63e7e31 | ||
|
|
606f9d2ccf | ||
|
|
0261b7e9ab | ||
|
|
71abf32d82 | ||
|
|
f6030cc918 | ||
|
|
f7ba021799 | ||
|
|
f506fa86cc | ||
|
|
1a0130dd1a | ||
|
|
6f746e3aff | ||
|
|
36a3a0a0e1 | ||
|
|
323e1cd6eb | ||
|
|
06fb54c65c | ||
|
|
07d4a2cda9 | ||
|
|
53e753c3ef | ||
|
|
8d8cffca71 | ||
|
|
352a19b91c | ||
|
|
74972eaa37 | ||
|
|
5ee07ec34d | ||
|
|
61104b9cd3 | ||
|
|
032ecc4a3e | ||
|
|
7337cf6fa5 | ||
|
|
967852f84d | ||
|
|
17734e7a3d | ||
|
|
b8398ac1d1 | ||
|
|
0a3696ac56 | ||
|
|
8e0b77c232 | ||
|
|
88efc2da38 | ||
|
|
48f9398e72 | ||
|
|
b147bbef3d | ||
|
|
013e8f8f70 | ||
|
|
98907b33aa | ||
|
|
49003f4d9a | ||
|
|
46c869ca8a | ||
|
|
f92756c103 | ||
|
|
57c3fa04db | ||
|
|
30d8d34976 | ||
|
|
c49f968d82 | ||
|
|
894a75beb3 | ||
|
|
cb7e1cc03e | ||
|
|
9e1837e89c | ||
|
|
475f96d00a | ||
|
|
96854ca00c | ||
|
|
0bf6aab43b | ||
|
|
856aee6c18 | ||
|
|
0f2ed23b02 | ||
|
|
10b4d0b16b | ||
|
|
7f44b29fbc | ||
|
|
a66c6e5504 | ||
|
|
255d5a4550 | ||
|
|
6df2b92bc6 | ||
|
|
8c38c9e145 | ||
|
|
501b9777b5 | ||
|
|
8fc18458c2 | ||
|
|
457793b4d2 | ||
|
|
4bb00bc006 | ||
|
|
1a0515361e | ||
|
|
2df8df1a0d | ||
|
|
96a9a32079 | ||
|
|
5d6b475e09 | ||
|
|
cb3eca29d8 | ||
|
|
bdb62de868 | ||
|
|
b416e56b98 | ||
|
|
1728be9c36 | ||
|
|
ea85710c05 | ||
|
|
e1af67beb3 | ||
|
|
d9de601e8a | ||
|
|
3c568a7d42 | ||
|
|
5080cf65c7 | ||
|
|
eefca656c6 | ||
|
|
3a63f87807 | ||
|
|
d71628adfe | ||
|
|
585fc96bca | ||
|
|
28b1820bfa | ||
|
|
85e74014b1 | ||
|
|
cc12cecc2a | ||
|
|
197a7bcc43 | ||
|
|
613f397c33 | ||
|
|
a3bd0f2c0b | ||
|
|
bda297b90d | ||
|
|
8ddba831f0 | ||
|
|
5218702005 | ||
|
|
fbabd2f340 | ||
|
|
a38bc6b534 | ||
|
|
73aa36fc69 | ||
|
|
d627fca7d6 | ||
|
|
06325a7ce1 | ||
|
|
903b779ebe | ||
|
|
0e3d582d13 | ||
|
|
cd17f3d755 | ||
|
|
8543a228fd | ||
|
|
b97c8e7fda | ||
|
|
1346614a30 | ||
|
|
0eec40673f | ||
|
|
602678e2b9 | ||
|
|
d6393e39f7 | ||
|
|
b3f22866b5 | ||
|
|
51d2880392 | ||
|
|
ede7a37e37 | ||
|
|
8373303651 | ||
|
|
f3ccabe253 | ||
|
|
ba6bb56e81 | ||
|
|
73124f016d | ||
|
|
32ca2e4298 | ||
|
|
1cc7486b0a | ||
|
|
26b58442c5 | ||
|
|
20de17bef1 | ||
|
|
54e04be768 | ||
|
|
49b517f1ab | ||
|
|
fc71d2d1ca | ||
|
|
340b5b7248 | ||
|
|
cfd292ef18 | ||
|
|
f7ea17a9cf | ||
|
|
096ab34ae8 | ||
|
|
e72b35c7eb | ||
|
|
9141f21cf8 | ||
|
|
65d9efef94 | ||
|
|
c5b19db662 | ||
|
|
f6a50cc43a | ||
|
|
a13260b8c6 | ||
|
|
66c0200457 | ||
|
|
e244883165 | ||
|
|
92367c9020 | ||
|
|
e78ea60644 | ||
|
|
29f73eaaa1 | ||
|
|
22c004a892 | ||
|
|
ef0507cf1d | ||
|
|
9df9e33ce1 | ||
|
|
52a2caaa6d | ||
|
|
0b6aa9e857 | ||
|
|
3b078cfd6b | ||
|
|
67b746998f | ||
|
|
52f62f0c1d | ||
|
|
ca23b5ab33 | ||
|
|
5a14790ec2 | ||
|
|
67542eebfb | ||
|
|
88c62bc238 | ||
|
|
0c4ed91335 | ||
|
|
74dbb611ab | ||
|
|
07e72c7e72 | ||
|
|
2c0700c10e | ||
|
|
191cee25a4 | ||
|
|
1b4fad72ed | ||
|
|
3fce0dba48 | ||
|
|
706346338b | ||
|
|
aee846764b | ||
|
|
391b35ef1f | ||
|
|
9364841cf4 | ||
|
|
0d7b44fe51 | ||
|
|
47734cfca6 | ||
|
|
a272e53519 | ||
|
|
710fe1998b | ||
|
|
31c76c08b8 | ||
|
|
e8e2e8e315 | ||
|
|
5a1c6b9e7f | ||
|
|
1d98d8eecb | ||
|
|
7d5e609f7b | ||
|
|
4d2cb2d1dc | ||
|
|
fa2806e3aa | ||
|
|
761d9f45da | ||
|
|
07d9cfe5bc | ||
|
|
b9d7e0787c | ||
|
|
4ea6660402 | ||
|
|
8391596e2a | ||
|
|
0f1cfc129c | ||
|
|
3e33f9b363 | ||
|
|
a76cc4693f | ||
|
|
d75bb7b7cf | ||
|
|
6c87de7a97 | ||
|
|
0ba493d71d | ||
|
|
bd0f1f0b23 | ||
|
|
d45a96a919 | ||
|
|
55e02dde5e | ||
|
|
cb7814cbd6 | ||
|
|
2b1abc8aeb | ||
|
|
3376ce54cc | ||
|
|
d35b4d1ad6 | ||
|
|
7a2c45ddb5 | ||
|
|
d3648a7e89 | ||
|
|
c794bb6a26 | ||
|
|
3f8b2f7a30 | ||
|
|
2bc6d1bc9a | ||
|
|
ee53ddd097 | ||
|
|
1705817128 | ||
|
|
0f8936e9a9 | ||
|
|
e3792cde12 | ||
|
|
4792d83119 | ||
|
|
27888f503a | ||
|
|
8b0823f504 | ||
|
|
12476fc173 | ||
|
|
56cc0a92f6 | ||
|
|
88db57c64b | ||
|
|
cd1f465a81 | ||
|
|
a80b5ed961 | ||
|
|
7f54cb0de8 | ||
|
|
3549b216b0 | ||
|
|
3786c53cad | ||
|
|
178e0d18cd | ||
|
|
cbdcb6f1ce | ||
|
|
74cc5af5c9 | ||
|
|
392d90db57 | ||
|
|
c87081f673 | ||
|
|
f375432e7d | ||
|
|
3011645c44 | ||
|
|
322256cc5a | ||
|
|
02d017eb9e | ||
|
|
2f13bce20d | ||
|
|
e2bf90e340 | ||
|
|
9bc1247544 | ||
|
|
90a2ec9719 | ||
|
|
b61cfe8b6b | ||
|
|
28d57dff72 | ||
|
|
55270548c7 | ||
|
|
a45f9e7843 | ||
|
|
37cfcde476 | ||
|
|
9517f0eedf | ||
|
|
a9da0cdcc8 | ||
|
|
b3c537d034 | ||
|
|
2d4cf29da8 | ||
|
|
eea47aea55 | ||
|
|
2648a0b57e | ||
|
|
46dfe4650e | ||
|
|
7eca11d51b | ||
|
|
43022a9838 | ||
|
|
b873ec2095 | ||
|
|
18f8718de2 | ||
|
|
c6c0801d14 | ||
|
|
196d27b7c5 | ||
|
|
daed961a99 | ||
|
|
8387e03254 | ||
|
|
b6d43a069f | ||
|
|
558eea94e2 | ||
|
|
f5f99efff6 | ||
|
|
cc95fa92e7 | ||
|
|
9eba3287b2 | ||
|
|
46845dd4b9 | ||
|
|
c3be2cdfe5 | ||
|
|
443cf1829e | ||
|
|
ae833b245e | ||
|
|
88338877b0 | ||
|
|
0d74a4aecc | ||
|
|
1cf0496cd1 | ||
|
|
050b026166 | ||
|
|
8d95319e39 | ||
|
|
fe12b0a665 | ||
|
|
93dd2e06d8 | ||
|
|
05f29a264e | ||
|
|
26dd8ed13a | ||
|
|
72c58059bd | ||
|
|
7e596d47a6 | ||
|
|
c38a8c0475 | ||
|
|
15adbf489e | ||
|
|
98b863be6f | ||
|
|
ecd40523d4 | ||
|
|
7f6de6e64e | ||
|
|
002163fbdc | ||
|
|
da9ea504fb | ||
|
|
bb171f6e23 | ||
|
|
b860c2eed0 | ||
|
|
fdf81d1b39 | ||
|
|
40bf6d3010 | ||
|
|
2d63d36f51 | ||
|
|
ed976e90dc | ||
|
|
6f4994b5da | ||
|
|
a2a923809e | ||
|
|
8d06ccace9 | ||
|
|
99479e722a | ||
|
|
70890cdc19 | ||
|
|
0eebc544a6 | ||
|
|
12280e5769 | ||
|
|
4ec2c1b943 | ||
|
|
d6edb93403 | ||
|
|
3236a05ae9 | ||
|
|
5576ae7305 | ||
|
|
d5aadf6926 | ||
|
|
2eb469b228 | ||
|
|
088c6faae1 | ||
|
|
04f7d22e3f | ||
|
|
950274f6be | ||
|
|
c6596fff1a | ||
|
|
7cbbc57514 | ||
|
|
8041a4a4fc | ||
|
|
1fa247aa35 | ||
|
|
7de49dcfb8 | ||
|
|
b21e307640 | ||
|
|
aae7eedd49 | ||
|
|
bce60310c5 | ||
|
|
d17cb4ce96 | ||
|
|
4b25a03b1d | ||
|
|
682433efe4 | ||
|
|
a6f28d67eb | ||
|
|
c663aa2799 | ||
|
|
2c02b816b5 | ||
|
|
d14b87729a | ||
|
|
70b41ab8a8 | ||
|
|
d185b548f7 | ||
|
|
4b5dcec08b | ||
|
|
13a7a875a4 | ||
|
|
8743bf4b93 | ||
|
|
d8792e9e27 | ||
|
|
82a0cd0336 | ||
|
|
60ae5b8965 | ||
|
|
4d4b54ec36 | ||
|
|
53f6910a34 | ||
|
|
826c3a8f8f | ||
|
|
727ddd3198 | ||
|
|
7b535434ae | ||
|
|
da8ed53c60 | ||
|
|
40e9d6f392 | ||
|
|
d189f55de1 | ||
|
|
893f4a0388 | ||
|
|
a28547c581 | ||
|
|
a8079e0d35 | ||
|
|
60a210a45f | ||
|
|
170aa01946 | ||
|
|
f4c8e5d493 | ||
|
|
b3a0a402d7 | ||
|
|
b6c70d1530 | ||
|
|
8fbc7b9f5c | ||
|
|
3c2e73b5f5 | ||
|
|
1a221eefe3 | ||
|
|
5912428c00 | ||
|
|
f01236cc96 | ||
|
|
ad1f5a297e | ||
|
|
96697e11fd | ||
|
|
25e8b9b578 | ||
|
|
49603e29bd | ||
|
|
6a18489c15 | ||
|
|
cb52fca2a4 | ||
|
|
00964e6bbf | ||
|
|
ea1b91af2a | ||
|
|
8894e5482f | ||
|
|
e17e3474ca | ||
|
|
6d09bd4987 | ||
|
|
84f3907140 | ||
|
|
d704e2eb55 | ||
|
|
2e4c6f4284 | ||
|
|
61c77e0047 | ||
|
|
cf1e6fc283 | ||
|
|
b361e46fb7 | ||
|
|
7bb06e7fdc | ||
|
|
9f83b40be4 | ||
|
|
1edd3441bc | ||
|
|
079a4a2cf6 | ||
|
|
049a759cda | ||
|
|
a6ff38159f | ||
|
|
056f040317 | ||
|
|
c161206832 | ||
|
|
e9a0c293f8 | ||
|
|
24de62f5f4 | ||
|
|
b7b278f296 | ||
|
|
712941038b | ||
|
|
4316fa8953 | ||
|
|
d14763d52c | ||
|
|
79e1f34890 | ||
|
|
3cb8e066b3 | ||
|
|
5e6a56e193 | ||
|
|
478ba2048a | ||
|
|
8426294a0f | ||
|
|
178954c8b2 | ||
|
|
6ce2b65d89 | ||
|
|
fb45fee426 | ||
|
|
ffca49f469 | ||
|
|
f32c7a7253 | ||
|
|
a64ccdba78 | ||
|
|
5f6bae6fa9 | ||
|
|
fd503b4071 | ||
|
|
9ece357e39 | ||
|
|
d53c8362a2 | ||
|
|
8f3ca8c28d | ||
|
|
7f5675ae3c | ||
|
|
7b9f4be98c | ||
|
|
ca352ca341 | ||
|
|
a22ccbdda5 | ||
|
|
e6b50248de | ||
|
|
ee3f8a9261 | ||
|
|
922d7222cd | ||
|
|
4a8900105b | ||
|
|
65a4bb7778 | ||
|
|
3944551c06 | ||
|
|
66d7ffbb17 | ||
|
|
c4d879a0ad | ||
|
|
b97f77c740 | ||
|
|
27ad9b0599 | ||
|
|
234b8ab31c | ||
|
|
519a608316 | ||
|
|
d4a13c8a82 | ||
|
|
ccb57411a2 | ||
|
|
486bebe6d2 | ||
|
|
5b3129bf01 | ||
|
|
23c742c4c6 | ||
|
|
90d3bbd79e | ||
|
|
400a06d2ac | ||
|
|
594d2f620c | ||
|
|
1a6ec578de | ||
|
|
e009604595 | ||
|
|
8b23c623d1 | ||
|
|
a3c4e72902 | ||
|
|
7e54412fc3 | ||
|
|
564970a324 | ||
|
|
1ecd32027e | ||
|
|
ceb5727337 | ||
|
|
17c7552f7f | ||
|
|
8fbcad8856 | ||
|
|
a61fd454b4 | ||
|
|
c0337afbaa | ||
|
|
acb9e78a36 | ||
|
|
431ff04644 | ||
|
|
201fb0a136 | ||
|
|
90671729ea | ||
|
|
8596175f8e | ||
|
|
e9fdec6bb0 | ||
|
|
026b6aca07 | ||
|
|
fafe3c0c55 | ||
|
|
f2b327c811 | ||
|
|
7fccbc2aa2 | ||
|
|
7c40f5988b | ||
|
|
b19e4043cd | ||
|
|
db75aa1cab | ||
|
|
f5718b4062 | ||
|
|
d25f17782b | ||
|
|
e3626a094d | ||
|
|
fc7b17fe40 | ||
|
|
87e13b3677 | ||
|
|
a540e42460 | ||
|
|
c4e24fb0a3 | ||
|
|
31fb55635e | ||
|
|
3dcff0b682 | ||
|
|
81f48d9c92 | ||
|
|
6331b0d587 | ||
|
|
57cf3b94e0 | ||
|
|
b683eac996 | ||
|
|
ccdcb1d0f6 | ||
|
|
4f5f02f030 | ||
|
|
0629ce51af | ||
|
|
46f1fcc269 | ||
|
|
b49b0290f8 | ||
|
|
7ca351f7cd | ||
|
|
850b124da3 | ||
|
|
49a2d3cab3 | ||
|
|
038eda1562 | ||
|
|
b91c8e34c2 | ||
|
|
0a631a7c93 | ||
|
|
4705c2595a | ||
|
|
0ff6809d63 | ||
|
|
a375feabfc | ||
|
|
5b9fd139a3 | ||
|
|
fd92d93289 | ||
|
|
840637c0d0 | ||
|
|
f41f5386cc | ||
|
|
f4a7d8ea92 | ||
|
|
26c9160c75 | ||
|
|
4c1955da75 | ||
|
|
66e6272571 | ||
|
|
e9d5e705ed | ||
|
|
16fdb28141 | ||
|
|
e289cf29fe | ||
|
|
1cd74cc26a | ||
|
|
27112e35b3 | ||
|
|
b2a8578f43 | ||
|
|
0e0a8b039d | ||
|
|
cbd201c43b | ||
|
|
a6d734bacf | ||
|
|
8dc86e0482 | ||
|
|
d0226611d7 | ||
|
|
2b21c3cd09 | ||
|
|
b1bdd9b8a5 | ||
|
|
bb50510ecb | ||
|
|
aa185c8bd2 | ||
|
|
99e3b234c9 | ||
|
|
5168d8d08d | ||
|
|
230a8810ef | ||
|
|
e8e8c1abcc | ||
|
|
0354d6dc3e | ||
|
|
47ad388f7d | ||
|
|
2d57483805 | ||
|
|
363dbd3a7f | ||
|
|
5b5863c899 | ||
|
|
4c1ae8c3cc | ||
|
|
29ed211519 | ||
|
|
9f965c4e56 | ||
|
|
0148868129 | ||
|
|
d46863b5b5 | ||
|
|
1917aa13d5 | ||
|
|
2994131048 | ||
|
|
f0d6938127 | ||
|
|
0203630d6a | ||
|
|
89c5c2dd83 | ||
|
|
ce1954e7d3 | ||
|
|
947a82eac5 | ||
|
|
9dc01f6057 | ||
|
|
37c5ce541b | ||
|
|
726eb06714 | ||
|
|
df505e0e17 | ||
|
|
06fffac835 | ||
|
|
264a423444 | ||
|
|
6ae9692358 | ||
|
|
7270564b10 | ||
|
|
a485a29868 | ||
|
|
ec04c3221f | ||
|
|
761982474c | ||
|
|
d13b0404fb | ||
|
|
6966376f91 | ||
|
|
2720f5c0bb | ||
|
|
881f039e44 | ||
|
|
81c7a72b9c | ||
|
|
c0391e3fc1 | ||
|
|
7e542750f6 | ||
|
|
7cbf638822 | ||
|
|
4cdb461c22 | ||
|
|
ba57f19ee7 | ||
|
|
9ba2693698 | ||
|
|
3439b7aee5 | ||
|
|
63b23fbe76 | ||
|
|
63fff2398e | ||
|
|
db8796df99 | ||
|
|
4095481411 | ||
|
|
8e30defa0e | ||
|
|
06ee6d6359 | ||
|
|
a988dedfbf | ||
|
|
f90c6fb27d | ||
|
|
5292d6ef90 | ||
|
|
e760af7216 | ||
|
|
e4889d82f2 | ||
|
|
9d170ecc30 | ||
|
|
cf01011504 | ||
|
|
b1291d3c43 | ||
|
|
82546eed06 | ||
|
|
bf667e2aa6 | ||
|
|
5b6f208f53 | ||
|
|
210d56447c | ||
|
|
c093261369 | ||
|
|
ee4f87d12d | ||
|
|
74b0a5b081 | ||
|
|
f51774c077 | ||
|
|
bd9f7b8b9f | ||
|
|
dc55bd63f5 | ||
|
|
07ce947f78 | ||
|
|
0f6cc70f66 | ||
|
|
6d014a01bc | ||
|
|
de5e97ac3a | ||
|
|
40e866aadd | ||
|
|
36ce7593a9 | ||
|
|
a2a28af41d | ||
|
|
203a30a236 | ||
|
|
b7d418b5b7 | ||
|
|
1625f7ca76 | ||
|
|
8a67b905fc | ||
|
|
9ee76b5328 | ||
|
|
df9dd7f435 | ||
|
|
9d0d318d66 | ||
|
|
ee1723a76b | ||
|
|
c715422814 | ||
|
|
72e7941230 | ||
|
|
ac475ca456 | ||
|
|
ee5355668d | ||
|
|
1b30f0ad31 | ||
|
|
348f362b30 | ||
|
|
6bef12b91b | ||
|
|
5b4113be4d | ||
|
|
a82d3fe57c | ||
|
|
4d551366ed | ||
|
|
441cb6ddcb | ||
|
|
f14efa2612 | ||
|
|
f4d7c07f57 | ||
|
|
66b2f1f55d | ||
|
|
b9b2c10ca0 | ||
|
|
0d5f871da7 | ||
|
|
1688a7ba15 | ||
|
|
3506e1c738 | ||
|
|
ae0c4aea12 | ||
|
|
a52b672e9b | ||
|
|
c4307aa821 | ||
|
|
a2c32009f5 | ||
|
|
e27185d424 | ||
|
|
0714480e01 | ||
|
|
504ee766f8 | ||
|
|
7358fd0c23 | ||
|
|
25be7094a2 | ||
|
|
627a1d7d5a | ||
|
|
63b84ee69d | ||
|
|
5eb76176ab | ||
|
|
6115ecf673 | ||
|
|
d1a112d3a3 | ||
|
|
7d67e6a007 | ||
|
|
b824ee625e | ||
|
|
961ac20213 | ||
|
|
f213b6f53f | ||
|
|
631600ab3f | ||
|
|
d95fce2efb | ||
|
|
1c6c009f14 | ||
|
|
f555f6423a | ||
|
|
cd374f2d98 | ||
|
|
c62f31c387 | ||
|
|
87ccad6ec7 | ||
|
|
1600f7cdab | ||
|
|
dc3256566b | ||
|
|
b0858429fb | ||
|
|
2f3e2a5ae8 | ||
|
|
f280ab88ec | ||
|
|
9616c27efa | ||
|
|
0b5f830d7c | ||
|
|
d0f952bd68 | ||
|
|
2876a39ff5 | ||
|
|
6bcf6da165 | ||
|
|
9fe633d228 | ||
|
|
b32bf41443 | ||
|
|
e4e073b6f0 | ||
|
|
e960ee2f40 | ||
|
|
5b1b75cbbe | ||
|
|
a689bb83ee | ||
|
|
0940d9aec8 | ||
|
|
b5e709f5e5 | ||
|
|
c5da640432 | ||
|
|
a5f924841a | ||
|
|
fda3b5b1cc | ||
|
|
10b8f83737 | ||
|
|
ea5da365c7 | ||
|
|
f6eb72332b | ||
|
|
fcb401c89b | ||
|
|
2b0dc1d0a3 | ||
|
|
a0139b84e1 | ||
|
|
65bd2ff35f | ||
|
|
4468657030 | ||
|
|
4ad95a65cf | ||
|
|
31f6c19e87 | ||
|
|
612d1d1646 | ||
|
|
eddf3ecdeb | ||
|
|
6cb511ba10 | ||
|
|
7483f19fc6 | ||
|
|
f8d2ab5e17 | ||
|
|
9cd591efe3 | ||
|
|
e655fdf67f | ||
|
|
9aa253b56f | ||
|
|
1d5a2008e1 | ||
|
|
1f1b534b13 | ||
|
|
bf8f8d9382 | ||
|
|
5c78711d8e | ||
|
|
191709e983 | ||
|
|
da6a17cd61 | ||
|
|
acb88a6b2a | ||
|
|
d5091bf659 | ||
|
|
fd003eff8b | ||
|
|
4d1dfebacd | ||
|
|
96b5b50ee0 | ||
|
|
6639ec8971 | ||
|
|
9aa7a6dcf3 | ||
|
|
4dc183cdf5 | ||
|
|
bbe3399c90 | ||
|
|
29e43d299a | ||
|
|
a4ee4df71b | ||
|
|
64dbe6708a | ||
|
|
f375a9f9db | ||
|
|
15a8800b15 | ||
|
|
77e526c22f | ||
|
|
f235f66c19 | ||
|
|
1b44bedf42 | ||
|
|
40e16c4d1b | ||
|
|
0c383ac7e9 | ||
|
|
0ec2688f17 | ||
|
|
346550182f | ||
|
|
24568e0f00 | ||
|
|
64f2f4668b | ||
|
|
f4e1d891a7 | ||
|
|
3972e0231c | ||
|
|
039e85d5e5 | ||
|
|
936397c59f | ||
|
|
23ddca6f82 | ||
|
|
286214d9c3 | ||
|
|
6d0dd09b5b | ||
|
|
38469d42ef | ||
|
|
696bfe0a2c | ||
|
|
3de2b9834d | ||
|
|
d5fdc47936 | ||
|
|
27e82423f0 | ||
|
|
576b5b213e | ||
|
|
145406be32 | ||
|
|
a65f0ad384 | ||
|
|
5051fc7b0b | ||
|
|
7164036d4c | ||
|
|
cb0a9121e5 | ||
|
|
96e779eb28 | ||
|
|
27397f1602 | ||
|
|
2d1cfde76b | ||
|
|
007d69a887 | ||
|
|
f3965cecd5 | ||
|
|
4fb170e5c7 | ||
|
|
8e1ade5423 | ||
|
|
0b081c2d85 | ||
|
|
ab1e9f806f | ||
|
|
e961711dcb | ||
|
|
90185d8c32 | ||
|
|
68ef46195c | ||
|
|
0c234e78af | ||
|
|
ca1851570b | ||
|
|
cf0d1378c8 | ||
|
|
b13a5d5f2a | ||
|
|
575458afb3 | ||
|
|
b2d4b7bb23 | ||
|
|
def6247e9f | ||
|
|
6409d0dc2d | ||
|
|
f253ae9c31 | ||
|
|
b93d10eeea | ||
|
|
801f1cbd4c | ||
|
|
f8260c3b29 | ||
|
|
9e74c15413 | ||
|
|
65e7f9750a | ||
|
|
62804941c2 | ||
|
|
05818baf7a | ||
|
|
1c28e0bd5f | ||
|
|
0460e219f9 | ||
|
|
eec3611218 | ||
|
|
87f637099c | ||
|
|
5f0241768d | ||
|
|
60b4ab5c5b | ||
|
|
bbed7afdcb | ||
|
|
459a736ebc | ||
|
|
bdbc620515 | ||
|
|
3c905ffd8b | ||
|
|
20d32b1f8f | ||
|
|
f57a373d47 | ||
|
|
77a714e64c | ||
|
|
4a3c978e07 | ||
|
|
a4d458bace | ||
|
|
b0843aa744 | ||
|
|
eddcbc2ecb | ||
|
|
62fd1f3012 | ||
|
|
23264d5d9b | ||
|
|
cc7d2c0c82 | ||
|
|
9bed8e57df | ||
|
|
ad35168876 | ||
|
|
ec8d511e9e | ||
|
|
d2cab9f4a1 | ||
|
|
c1ca4764f0 | ||
|
|
366d1b8846 | ||
|
|
7a8dd54e5c | ||
|
|
37393bb7f8 | ||
|
|
3904bfd91d | ||
|
|
f720e00132 | ||
|
|
f723c11a84 | ||
|
|
643e8c8157 | ||
|
|
11f9ddaeb6 | ||
|
|
5d96d434d6 | ||
|
|
ad1f086e4d | ||
|
|
3fa3991cfa | ||
|
|
9a6102e887 | ||
|
|
e23d3a48cc | ||
|
|
ddd7c336cf | ||
|
|
ee79b19d20 | ||
|
|
383cbc0b53 | ||
|
|
e8d9556a4b | ||
|
|
5958f06986 | ||
|
|
0c4aef307a | ||
|
|
20436653af | ||
|
|
814533a2c2 | ||
|
|
d4ca3d5817 | ||
|
|
194d0b6ac2 | ||
|
|
832b065a46 | ||
|
|
fa443a091f | ||
|
|
31c2f555fc | ||
|
|
74e5e86eff | ||
|
|
a318eb82c7 | ||
|
|
6465dc2b73 | ||
|
|
082d241c8f | ||
|
|
5a6012530e | ||
|
|
35e4538160 | ||
|
|
125bb372ed | ||
|
|
92e56d7153 | ||
|
|
c8272ec90d | ||
|
|
b6d01cb850 | ||
|
|
5e1eb3e03b | ||
|
|
f4c94bd8d6 | ||
|
|
8484d3f810 | ||
|
|
07f5fbca47 | ||
|
|
68d03196af | ||
|
|
a9ef62dfb0 | ||
|
|
9f6d33f6e8 | ||
|
|
ff158fd0e4 | ||
|
|
4de5e616e5 | ||
|
|
b6db829b04 | ||
|
|
821aa74669 | ||
|
|
c3221a6fff | ||
|
|
cbbfbae772 | ||
|
|
c65fd99b15 | ||
|
|
4d49d3c77a | ||
|
|
aad32a4a1f | ||
|
|
ec912efa01 | ||
|
|
bf2fdc2761 | ||
|
|
168c630a13 | ||
|
|
e7563203fe | ||
|
|
9bf1dbe030 | ||
|
|
dbcee40b93 | ||
|
|
2af334d793 | ||
|
|
f9a8675942 | ||
|
|
521a6174fe | ||
|
|
c85bc7b8ea | ||
|
|
825e44b353 | ||
|
|
ed840a95a1 | ||
|
|
ef31d6af83 | ||
|
|
b1e70ebf12 | ||
|
|
3af0031214 | ||
|
|
b648aa94b3 | ||
|
|
0e864043a6 | ||
|
|
eb25827937 | ||
|
|
f4a07b2911 | ||
|
|
cdfeb5dbdc | ||
|
|
40bc890870 | ||
|
|
18874e3755 | ||
|
|
a3d2b84ecb | ||
|
|
5f16a5c791 | ||
|
|
f086a58096 | ||
|
|
dfcf71aec7 | ||
|
|
f2e8d03f80 | ||
|
|
0736f1c550 | ||
|
|
bdd1195d20 | ||
|
|
e5511d5c09 | ||
|
|
7634801f7c | ||
|
|
1db86f2865 | ||
|
|
626e58b515 | ||
|
|
787617f504 | ||
|
|
3fb4e488bb | ||
|
|
c5187a63b9 | ||
|
|
e5f725cf16 | ||
|
|
3d56c9cc81 | ||
|
|
0ae1ae5df4 | ||
|
|
c0c530adad | ||
|
|
e962a594ba | ||
|
|
0ac7900948 | ||
|
|
6748b2911a | ||
|
|
3e4152fd9b | ||
|
|
7dfffd60b8 | ||
|
|
3ba4d24041 | ||
|
|
e99d0f45fd | ||
|
|
351745d31f | ||
|
|
bfa960d803 | ||
|
|
7572e8d56f | ||
|
|
82e773243f | ||
|
|
795440850b | ||
|
|
6adcb46f29 | ||
|
|
6cd31e630c | ||
|
|
23b3e72579 | ||
|
|
bda7a12c2a | ||
|
|
e8f44ef6f2 | ||
|
|
e4047fbd30 | ||
|
|
7dcdb43acf | ||
|
|
9f75e1fae8 | ||
|
|
78c0de664c | ||
|
|
efc4b37782 | ||
|
|
6253590326 | ||
|
|
f0b43ddd32 | ||
|
|
51e7b4f15d | ||
|
|
0ef244b373 | ||
|
|
97a1502eb2 | ||
|
|
2536e3b9f6 | ||
|
|
7aed7254a0 | ||
|
|
44e061f321 | ||
|
|
a9ddcfeb95 | ||
|
|
822e332aaa | ||
|
|
c3fbad7dbf | ||
|
|
07348357d0 | ||
|
|
947fc457f2 | ||
|
|
b719e96838 | ||
|
|
cafeb1f20f | ||
|
|
9ae798a11a | ||
|
|
d188068b10 | ||
|
|
abb4b8cb66 | ||
|
|
ef8615cfe5 | ||
|
|
ee0cb6d225 | ||
|
|
0da8f7f8f6 | ||
|
|
f8b44d9f9b | ||
|
|
b55f5ab6ae | ||
|
|
90e550934d | ||
|
|
ff757d2151 | ||
|
|
a3f838d8e6 | ||
|
|
d9d19f8cbd | ||
|
|
036ad6defb | ||
|
|
520c09b801 | ||
|
|
f850e4adaa | ||
|
|
450041bb02 | ||
|
|
2e99c26654 | ||
|
|
2e5f383db4 | ||
|
|
357b214192 | ||
|
|
c301c55905 | ||
|
|
1764e6956b | ||
|
|
a7509e1125 | ||
|
|
9ec3322574 | ||
|
|
3658f027bb | ||
|
|
9a04bb2d71 | ||
|
|
343e5e332c | ||
|
|
28a6cf1cb1 | ||
|
|
e2777b2f0a | ||
|
|
d8da258898 | ||
|
|
8616854e00 | ||
|
|
7b98d1d9d0 | ||
|
|
b8b14df39b | ||
|
|
8ddf622d0f | ||
|
|
00ffd246a9 | ||
|
|
ac86715062 | ||
|
|
2c8df21671 | ||
|
|
d16cf44f4a | ||
|
|
6d3fbd7cf0 | ||
|
|
f9f723c47a | ||
|
|
3ac28ac218 | ||
|
|
ece66ba16a | ||
|
|
f24019d306 | ||
|
|
ea80777ef6 | ||
|
|
f7ab6dc6ae | ||
|
|
a8698fbd1a | ||
|
|
62b5162c7e | ||
|
|
aa9466b8d1 | ||
|
|
70b12dfd3e | ||
|
|
0912872de2 | ||
|
|
9016090c67 | ||
|
|
79e4386d1e | ||
|
|
5e4973fae5 | ||
|
|
4228ac4570 | ||
|
|
152dbac29d | ||
|
|
2241e90798 | ||
|
|
613a808cec | ||
|
|
af52a68abc | ||
|
|
9c2738399e | ||
|
|
385a4ae618 | ||
|
|
b0d39324ef | ||
|
|
c224ad568e | ||
|
|
6184ba9b82 | ||
|
|
bea807c7b4 | ||
|
|
323bc6b775 | ||
|
|
7c87d13ba2 | ||
|
|
3e10c891ab | ||
|
|
643d966740 | ||
|
|
94968799c3 | ||
|
|
30d53fa41e | ||
|
|
00805d6a49 | ||
|
|
0e7665f59d | ||
|
|
96cc2bd37f | ||
|
|
71e51b3b6f | ||
|
|
5f90e422e6 | ||
|
|
b65cdfc1fb | ||
|
|
a3c597b3c5 | ||
|
|
db587fda30 | ||
|
|
7170e3a16a | ||
|
|
61aa3ca3d2 | ||
|
|
96f57b7df8 | ||
|
|
d16df738d3 | ||
|
|
9ae0921f69 | ||
|
|
5dd1c95294 | ||
|
|
404fecd83c | ||
|
|
a4fb3db3cd | ||
|
|
92d64db0b7 | ||
|
|
033ec0fd61 | ||
|
|
dc36274212 | ||
|
|
817587522b | ||
|
|
58648c3ece | ||
|
|
16f314bd80 | ||
|
|
f8408030a9 | ||
|
|
c276b1595c | ||
|
|
71cc57959b | ||
|
|
dbd35c18b5 | ||
|
|
1e868c2335 | ||
|
|
59461175d9 | ||
|
|
aee5d4be2e | ||
|
|
e9c18935c5 | ||
|
|
b80aa48735 | ||
|
|
c32999aa03 | ||
|
|
56d486e010 | ||
|
|
d83f82a340 | ||
|
|
2f49292672 | ||
|
|
c09b6061fc | ||
|
|
1d14a0adb5 | ||
|
|
840a2eabdb | ||
|
|
f2be8e6abd | ||
|
|
71fb4b2b2b | ||
|
|
3cabf0a32c | ||
|
|
8416fd49ae | ||
|
|
3a15c2eaa7 | ||
|
|
e0eb76e120 | ||
|
|
8a29ce048d | ||
|
|
d43b679f8d |
30
.cursor/rules/01-project-overview.mdc
Normal file
30
.cursor/rules/01-project-overview.mdc
Normal file
@@ -0,0 +1,30 @@
|
||||
---
|
||||
description:
|
||||
globs:
|
||||
alwaysApply: false
|
||||
---
|
||||
# Lilishop Project Overview
|
||||
|
||||
This is a comprehensive B2B2C e-commerce system built with Spring Boot (backend) and Vue/uniapp (frontend). The project supports multi-tenant merchant access and distributed deployment.
|
||||
|
||||
## Key Project Components
|
||||
|
||||
### Backend APIs
|
||||
- [buyer-api/](mdc:buyer-api) - Buyer-facing APIs for shopping functionality
|
||||
- [seller-api/](mdc:seller-api) - Merchant-facing APIs for store management
|
||||
- [manager-api/](mdc:manager-api) - Platform admin APIs
|
||||
- [common-api/](mdc:common-api) - Shared API components
|
||||
- [im-api/](mdc:im-api) - Instant messaging APIs
|
||||
|
||||
### Core Components
|
||||
- [framework/](mdc:framework) - Core framework and shared utilities
|
||||
- [consumer/](mdc:consumer) - Message queue consumers
|
||||
- [config/](mdc:config) - System configuration files
|
||||
|
||||
### Documentation
|
||||
- [docs/](mdc:docs) - Project documentation
|
||||
- [README.md](mdc:README.md) - Project overview and setup instructions
|
||||
|
||||
### Build & Deployment
|
||||
- [pom.xml](mdc:pom.xml) - Maven project configuration
|
||||
- [deploy-api.yml](mdc:deploy-api.yml) - Deployment configuration
|
||||
38
.cursor/rules/02-technical-architecture.mdc
Normal file
38
.cursor/rules/02-technical-architecture.mdc
Normal file
@@ -0,0 +1,38 @@
|
||||
---
|
||||
description:
|
||||
globs:
|
||||
alwaysApply: false
|
||||
---
|
||||
# Technical Architecture
|
||||
|
||||
## Backend Stack
|
||||
- Spring Boot - Core framework
|
||||
- Spring MVC - Web framework
|
||||
- Mybatis-Plus - ORM framework
|
||||
- Spring Security - Security framework
|
||||
- JWT - Authentication
|
||||
- RocketMQ - Message queue
|
||||
- Redis & MongoDB - Caching
|
||||
- Elasticsearch - Search engine
|
||||
- MySQL - Primary database
|
||||
- Sharding - Database sharding
|
||||
- XXL-Job - Distributed scheduling
|
||||
|
||||
## Frontend Stack
|
||||
### Admin & Seller Portals ([admin/](mdc:admin))
|
||||
- Vue.js - Frontend framework
|
||||
- iView - UI components
|
||||
- Vuex - State management
|
||||
- Vue Router - Routing
|
||||
- Axios - HTTP client
|
||||
|
||||
### Mobile Applications
|
||||
- Uni-app - Cross-platform framework
|
||||
- uViewui - UI components
|
||||
- SCSS - Styling
|
||||
|
||||
## Infrastructure
|
||||
- Nginx - Load balancing & reverse proxy
|
||||
- Aliyun OSS - Object storage
|
||||
- Docker - Containerization
|
||||
- Docker Compose - Container orchestration
|
||||
43
.cursor/rules/03-development-guidelines.mdc
Normal file
43
.cursor/rules/03-development-guidelines.mdc
Normal file
@@ -0,0 +1,43 @@
|
||||
---
|
||||
description:
|
||||
globs:
|
||||
alwaysApply: false
|
||||
---
|
||||
# Development Guidelines
|
||||
|
||||
## Project Setup
|
||||
1. Ensure you have the following prerequisites:
|
||||
- JDK 1.8+
|
||||
- Maven 3.x
|
||||
- MySQL 5.7+
|
||||
- Redis
|
||||
- RocketMQ
|
||||
- Elasticsearch
|
||||
- Node.js 12+
|
||||
|
||||
## Database Setup
|
||||
- Initial database scripts can be found in [DB/](mdc:DB)
|
||||
- For Docker deployment, refer to docker-compose configuration
|
||||
|
||||
## API Development Guidelines
|
||||
1. All new APIs should be placed in appropriate modules:
|
||||
- Customer-facing APIs in [buyer-api/](mdc:buyer-api)
|
||||
- Merchant APIs in [seller-api/](mdc:seller-api)
|
||||
- Admin APIs in [manager-api/](mdc:manager-api)
|
||||
- Shared components in [common-api/](mdc:common-api)
|
||||
|
||||
2. Follow RESTful API conventions:
|
||||
- Use appropriate HTTP methods (GET, POST, PUT, DELETE)
|
||||
- Use consistent URL patterns
|
||||
- Implement proper error handling
|
||||
|
||||
## Security Guidelines
|
||||
1. All sensitive operations must be authenticated
|
||||
2. Use Spring Security for access control
|
||||
3. Store sensitive configuration in environment variables
|
||||
4. Never commit sensitive credentials to version control
|
||||
|
||||
## Testing
|
||||
1. Write unit tests for critical business logic
|
||||
2. Ensure API endpoints are properly documented
|
||||
3. Test both success and error scenarios
|
||||
37
.cursor/rules/04-deployment-guide.mdc
Normal file
37
.cursor/rules/04-deployment-guide.mdc
Normal file
@@ -0,0 +1,37 @@
|
||||
---
|
||||
description:
|
||||
globs:
|
||||
alwaysApply: false
|
||||
---
|
||||
# Deployment Guide
|
||||
|
||||
## Local Development Setup
|
||||
1. Clone the repository
|
||||
2. Import as Maven project
|
||||
3. Configure environment variables in [config/](mdc:config)
|
||||
4. Start required services (MySQL, Redis, RocketMQ, Elasticsearch)
|
||||
5. Run individual API modules
|
||||
|
||||
## Docker Deployment
|
||||
- Use [deploy-api.yml](mdc:deploy-api.yml) for container configuration
|
||||
- Execute [docker-image.sh](mdc:docker-image.sh) to build images
|
||||
|
||||
## Production Deployment
|
||||
1. Configure load balancer (Nginx recommended)
|
||||
2. Set up database replication/clustering
|
||||
3. Configure message queue clusters
|
||||
4. Set up monitoring and logging
|
||||
5. Configure CDN for static assets
|
||||
|
||||
## Configuration Files
|
||||
- Database: [DB/](mdc:DB)
|
||||
- API deployment: [deploy-api.yml](mdc:deploy-api.yml)
|
||||
- Docker scripts: [docker-image.sh](mdc:docker-image.sh)
|
||||
|
||||
## Deployment Checklist
|
||||
1. Database migration and backup
|
||||
2. Environment variable configuration
|
||||
3. Service dependencies verification
|
||||
4. SSL certificate setup
|
||||
5. Monitoring and alerting setup
|
||||
6. Backup and recovery procedures
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -10,6 +10,7 @@ target
|
||||
.factorypath
|
||||
|
||||
log/
|
||||
logs/
|
||||
*.factorypath
|
||||
lili-shop/src/main/java/cn/lili/generator/CodeGenerator.java
|
||||
lili-logs
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
## PS:数据库位置
|
||||
|
||||
点击跳转 https://gitee.com/beijing_hongye_huicheng/docker/tree/master/init/mysql 这里有与tag版本一致的sql,根据tag获取sql,如果使用master代码,则需要在lilishop项目根目录的update-sql目录中,获取对应的升级sql。
|
||||
|
||||
|
||||
使用master分支代码时,可能会无法运行,执行完初始化sql之后需要执行当前目录下'versiontXXXXtoMASTER.sql'。
|
||||
14
DB/index.sql
Normal file
14
DB/index.sql
Normal file
@@ -0,0 +1,14 @@
|
||||
-- 针对WHERE条件、排序和分组的组合索引
|
||||
CREATE INDEX idx_order_delete_flag_create_time_id_sn ON li_order (delete_flag, create_time DESC, id DESC, sn);
|
||||
|
||||
-- 针对WHERE条件和连接条件的组合索引
|
||||
CREATE INDEX idx_order_status_delete_flag_sn ON li_order (order_status, delete_flag, sn);
|
||||
|
||||
-- 针对连接条件的索引
|
||||
CREATE INDEX idx_order_item_order_sn ON li_order_item (order_sn);
|
||||
|
||||
-- 针对过滤条件、排序字段的组合索引
|
||||
CREATE INDEX idx_li_member_disabled_create_time ON li_member (disabled, create_time DESC);
|
||||
|
||||
-- 针对过滤条件、排序字段的组合索引
|
||||
CREATE INDEX idx_li_goods_delete_flag_create_time ON li_goods (delete_flag, create_time DESC);
|
||||
@@ -7,6 +7,7 @@
|
||||
Source Host : 192.168.0.116:3306
|
||||
Source Schema : lilishop
|
||||
|
||||
|
||||
Target Server Type : MySQL
|
||||
Target Server Version : 80023
|
||||
File Encoding : 65001
|
||||
|
||||
@@ -6,7 +6,7 @@ ALTER TABLE li_distribution ADD settlement_bank_branch_name varchar ( 200 );
|
||||
/** 文章分类添加默认值**/
|
||||
ALTER TABLE li_article_category alter column sort set default 0;
|
||||
/** 添加分销提现菜单**/
|
||||
INSERT INTO `lilishop`.`li_menu`(`id`, `create_by`, `create_time`, `delete_flag`, `update_by`, `update_time`, `description`, `front_route`, `icon`, `level`, `name`, `parent_id`, `path`, `sort_order`, `title`, `front_component`) VALUES (1410862675914764290, 'admin', '2021-07-02 15:27:29', b'0', 'admin', '2021-07-02 15:27:45', 'null', 'distribution/distributionCash', '', 2, 'distributionCash', '1374173575405109248', 'distributionCash', 5.00, '分销提现', 'null');
|
||||
INSERT INTO `rxshop`.`li_menu`(`id`, `create_by`, `create_time`, `delete_flag`, `update_by`, `update_time`, `description`, `front_route`, `icon`, `level`, `name`, `parent_id`, `path`, `sort_order`, `title`, `front_component`) VALUES (1410862675914764290, 'admin', '2021-07-02 15:27:29', b'0', 'admin', '2021-07-02 15:27:45', 'null', 'distribution/distributionCash', '', 2, 'distributionCash', '1374173575405109248', 'distributionCash', 5.00, '分销提现', 'null');
|
||||
|
||||
/** 促销商品添加商品类型**/
|
||||
ALTER TABLE li_promotion_goods ADD goods_type varchar (200);
|
||||
@@ -16,7 +16,7 @@ update li_member_points_history set point_type = 'INCREASE' where point_type=1;
|
||||
update li_member_points_history set point_type = 'REDUCE' where point_type=0;
|
||||
|
||||
/** 添加分词管理菜单*/
|
||||
INSERT INTO `lilishop`.`li_menu` (`id`, `create_by`, `create_time`, `delete_flag`, `update_by`, `update_time`, `description`, `front_route`, `icon`, `level`, `name`, `parent_id`, `path`, `sort_order`, `title`, `front_component`) VALUES (1349247640584085511, 'admin', '2021-01-13 14:51:20', b'0', 'admin', '2021-02-25 09:02:59', 'null', 'customWords/index', 'ios-american-football', 2, 'customWords', '1349237129847005184', 'customWords', 8.00, '分词管理', 'null');
|
||||
INSERT INTO `rxshop`.`li_menu` (`id`, `create_by`, `create_time`, `delete_flag`, `update_by`, `update_time`, `description`, `front_route`, `icon`, `level`, `name`, `parent_id`, `path`, `sort_order`, `title`, `front_component`) VALUES (1349247640584085511, 'admin', '2021-01-13 14:51:20', b'0', 'admin', '2021-02-25 09:02:59', 'null', 'customWords/index', 'ios-american-football', 2, 'customWords', '1349237129847005184', 'customWords', 8.00, '分词管理', 'null');
|
||||
|
||||
/** 修改会员评价店铺图片字段类型 **/
|
||||
alter table li_member_evaluation modify column reply_image text;
|
||||
@@ -25,4 +25,4 @@ alter table li_member_evaluation modify column reply_image text;
|
||||
alter table li_after_sale modify column after_sale_image text;
|
||||
|
||||
/** 提现申请审核sql **/
|
||||
INSERT INTO `lilishop`.`li_menu`(`id`, `create_by`, `create_time`, `delete_flag`, `update_by`, `update_time`, `description`, `front_route`, `icon`, `level`, `name`, `parent_id`, `path`, `sort_order`, `title`, `front_component`) VALUES (1367042804944994305, 'admin', '2021-03-03 09:22:58', b'0', NULL, NULL, NULL, 'member/advance/withdrawApply', 'ios-alert', 2, 'withdrawApply', '1367042490443497472', 'withdrawApply', 1.00, '提现申请', NULL);
|
||||
INSERT INTO `rxshop`.`li_menu`(`id`, `create_by`, `create_time`, `delete_flag`, `update_by`, `update_time`, `description`, `front_route`, `icon`, `level`, `name`, `parent_id`, `path`, `sort_order`, `title`, `front_component`) VALUES (1367042804944994305, 'admin', '2021-03-03 09:22:58', b'0', NULL, NULL, NULL, 'member/advance/withdrawApply', 'ios-alert', 2, 'withdrawApply', '1367042490443497472', 'withdrawApply', 1.00, '提现申请', NULL);
|
||||
|
||||
64
DB/version4.2.3to4.2.4.sql
Normal file
64
DB/version4.2.3to4.2.4.sql
Normal file
@@ -0,0 +1,64 @@
|
||||
/** 新增已退货数量 **/
|
||||
ALTER TABLE li_order_item ADD return_goods_number int DEFAULT 0 COMMENT '退货数量 ';
|
||||
|
||||
|
||||
-- 促销重构sql
|
||||
ALTER TABLE li_coupon DROP COLUMN promotion_status;
|
||||
|
||||
ALTER TABLE li_coupon_activity DROP COLUMN promotion_status;
|
||||
ALTER TABLE li_coupon_activity ADD `scope_id` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '范围关联的ID';
|
||||
ALTER TABLE li_coupon_activity ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT 'PORTION_GOODS' COMMENT '关联范围类型';
|
||||
|
||||
ALTER TABLE li_full_discount DROP COLUMN promotion_status;
|
||||
ALTER TABLE li_full_discount ADD `scope_id` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT '范围关联的ID';
|
||||
ALTER TABLE li_full_discount ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT 'PORTION_GOODS' COMMENT '关联范围类型';
|
||||
|
||||
ALTER TABLE li_kanjia_activity_goods DROP COLUMN promotion_status;
|
||||
ALTER TABLE li_kanjia_activity_goods ADD `scope_id` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT '范围关联的ID';
|
||||
ALTER TABLE li_kanjia_activity_goods ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT 'PORTION_GOODS' COMMENT '关联范围类型';
|
||||
ALTER TABLE li_kanjia_activity_goods ADD `goods_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL;
|
||||
|
||||
ALTER TABLE li_pintuan DROP COLUMN promotion_status;
|
||||
ALTER TABLE li_pintuan ADD `scope_id` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT '范围关联的ID';
|
||||
ALTER TABLE li_pintuan ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT 'PORTION_GOODS' COMMENT '关联范围类型';
|
||||
|
||||
ALTER TABLE li_points_goods DROP COLUMN promotion_status;
|
||||
ALTER TABLE li_points_goods ADD `scope_id` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT '范围关联的ID';
|
||||
ALTER TABLE li_points_goods ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT 'PORTION_GOODS' COMMENT '关联范围类型';
|
||||
ALTER TABLE li_points_goods ADD `original_price` double(10,2) DEFAULT NULL COMMENT '原价';
|
||||
ALTER TABLE li_points_goods ADD `thumbnail` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '缩略图';
|
||||
ALTER TABLE li_points_goods ADD `goods_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '商品编号';
|
||||
ALTER TABLE li_points_goods ADD `goods_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '货品名称';
|
||||
|
||||
ALTER TABLE li_promotion_goods DROP COLUMN promotion_status;
|
||||
ALTER TABLE li_promotion_goods ADD `scope_id` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT '范围关联的ID';
|
||||
ALTER TABLE li_promotion_goods ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT 'PORTION_GOODS' COMMENT '关联范围类型';
|
||||
ALTER TABLE li_promotion_goods ADD `original_price` double(10,2) DEFAULT NULL COMMENT '原价';
|
||||
ALTER TABLE li_promotion_goods ADD `points` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '兑换积分';
|
||||
ALTER TABLE li_promotion_goods ADD `goods_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '商品编号';
|
||||
|
||||
ALTER TABLE li_seckill DROP COLUMN promotion_status;
|
||||
ALTER TABLE li_seckill ADD `scope_id` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT '范围关联的ID';
|
||||
ALTER TABLE li_seckill ADD `scope_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT 'PORTION_GOODS' COMMENT '关联范围类型';
|
||||
|
||||
ALTER TABLE li_full_discount RENAME COLUMN is_coupon TO coupon_flag;
|
||||
ALTER TABLE li_full_discount RENAME COLUMN is_free_freight TO free_freight_flag;
|
||||
ALTER TABLE li_full_discount RENAME COLUMN is_full_minus TO full_minus_flag;
|
||||
ALTER TABLE li_full_discount RENAME COLUMN is_full_rate TO full_rate_flag;
|
||||
ALTER TABLE li_full_discount RENAME COLUMN is_gift TO gift_flag;
|
||||
ALTER TABLE li_full_discount RENAME COLUMN is_point TO point_flag;
|
||||
|
||||
ALTER TABLE li_member_coupon RENAME COLUMN is_platform TO platform_flag;
|
||||
|
||||
ALTER TABLE li_goods RENAME COLUMN is_auth TO auth_flag;
|
||||
|
||||
ALTER TABLE li_goods_sku RENAME COLUMN is_promotion TO promotion_flag;
|
||||
ALTER TABLE li_goods_sku RENAME COLUMN is_auth TO auth_flag;
|
||||
|
||||
|
||||
-- 增加会员表索引
|
||||
ALTER TABLE li_member ADD INDEX query_mobile (`mobile`) COMMENT 'query_member';
|
||||
-- 会员签到唯一索引 惠券查询索引
|
||||
ALTER TABLE li_member_sign ADD INDEX query_create_time (`create_time`) COMMENT 'query_create_time';
|
||||
ALTER TABLE li_member_sign ADD INDEX query_member_id (`member_id`) COMMENT 'query_member_id';
|
||||
ALTER TABLE li_member_sign add unique uk_member_day (member_id, create_time) COMMENT 'uk_member_day';
|
||||
521
DB/version4.2.4to4.2.5.sql
Normal file
521
DB/version4.2.4to4.2.5.sql
Normal file
@@ -0,0 +1,521 @@
|
||||
/**增加店铺发货信息**/
|
||||
ALTER TABLE li_store_detail ADD `sales_consignor_address_id` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '发货地址id';
|
||||
ALTER TABLE li_store_detail ADD `sales_consignor_address_path` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '发货地址名称';
|
||||
ALTER TABLE li_store_detail ADD `sales_consignor_detail` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '发货详细地址';
|
||||
ALTER TABLE li_store_detail ADD `sales_consignor_mobile` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '发货人手机';
|
||||
ALTER TABLE li_store_detail ADD `sales_consignor_name` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '发货人姓名';
|
||||
|
||||
/**增加电子面单店铺信息**/
|
||||
ALTER TABLE `li_store_logistics` ADD `customer_name` varchar(255) DEFAULT NULL COMMENT '客户代码';
|
||||
ALTER TABLE `li_store_logistics` ADD `customer_pwd` varchar(255) DEFAULT NULL COMMENT '客户密码';
|
||||
ALTER TABLE `li_store_logistics` ADD `month_code` varchar(255) DEFAULT NULL COMMENT '月结号/密钥';
|
||||
ALTER TABLE `li_store_logistics` ADD `send_site` varchar(255) DEFAULT NULL COMMENT '归属网点';
|
||||
ALTER TABLE `li_store_logistics` ADD `send_staff` varchar(255) DEFAULT NULL COMMENT '收件快递员';
|
||||
ALTER TABLE `li_store_logistics` ADD `face_sheet_flag` bit(1) DEFAULT NULL COMMENT '是否使用电子面单';
|
||||
ALTER TABLE `li_store_logistics` ADD `pay_type` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '支付方式';
|
||||
ALTER TABLE `li_store_logistics` ADD `exp_type` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '快递类型';
|
||||
|
||||
/** 店铺--默认页面是否开启**/
|
||||
ALTER TABLE li_store ADD page_show bit(1) DEFAULT NULL COMMENT '默认页面是否开启';
|
||||
|
||||
/** 创建店员表 **/
|
||||
/*
|
||||
Navicat Premium Data Transfer
|
||||
|
||||
Source Server : lilishop
|
||||
Source Server Type : MySQL
|
||||
Source Server Version : 80025
|
||||
Source Host : 192.168.0.116:3306
|
||||
Source Schema : zhimai1
|
||||
|
||||
Target Server Type : MySQL
|
||||
Target Server Version : 80025
|
||||
File Encoding : 65001
|
||||
|
||||
Date: 03/03/2022 19:30:20
|
||||
*/
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for li_clerk
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `li_clerk`;
|
||||
CREATE TABLE `li_clerk` (
|
||||
`id` bigint NOT NULL COMMENT 'ID',
|
||||
`create_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime(6) NULL DEFAULT NULL COMMENT '创建时间',
|
||||
`delete_flag` bit(1) NULL DEFAULT NULL COMMENT '删除标志 true/false 删除/未删除',
|
||||
`update_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime(6) NULL DEFAULT NULL COMMENT '更新时间',
|
||||
`clerk_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '店员名称',
|
||||
`member_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '会员id',
|
||||
`store_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '店铺id',
|
||||
`department_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '部门id',
|
||||
`role_ids` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '角色',
|
||||
`shopkeeper` bit(1) NULL DEFAULT NULL COMMENT '是否是店主',
|
||||
`is_super` bit(1) NULL DEFAULT NULL COMMENT '是否是超级管理员 超级管理员/普通管理员',
|
||||
`status` bit(1) NULL DEFAULT NULL COMMENT '状态',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic;
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
||||
|
||||
/** 店员角色**/
|
||||
/*
|
||||
Navicat Premium Data Transfer
|
||||
|
||||
Source Server : lilishop
|
||||
Source Server Type : MySQL
|
||||
Source Server Version : 80025
|
||||
Source Host : 192.168.0.116:3306
|
||||
Source Schema : zhimai1
|
||||
|
||||
Target Server Type : MySQL
|
||||
Target Server Version : 80025
|
||||
File Encoding : 65001
|
||||
|
||||
Date: 03/03/2022 19:30:39
|
||||
*/
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for li_clerk_role
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `li_clerk_role`;
|
||||
CREATE TABLE `li_clerk_role` (
|
||||
`id` bigint NOT NULL COMMENT 'ID',
|
||||
`clerk_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '店员唯一id',
|
||||
`role_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '角色唯一id',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic;
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
||||
|
||||
/** 店铺部门 **/
|
||||
/*
|
||||
Navicat Premium Data Transfer
|
||||
|
||||
Source Server : lilishop
|
||||
Source Server Type : MySQL
|
||||
Source Server Version : 80025
|
||||
Source Host : 192.168.0.116:3306
|
||||
Source Schema : zhimai1
|
||||
|
||||
Target Server Type : MySQL
|
||||
Target Server Version : 80025
|
||||
File Encoding : 65001
|
||||
|
||||
Date: 03/03/2022 19:31:39
|
||||
*/
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for li_store_department
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `li_store_department`;
|
||||
CREATE TABLE `li_store_department` (
|
||||
`id` bigint NOT NULL COMMENT 'ID',
|
||||
`create_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime(6) NULL DEFAULT NULL COMMENT '创建时间',
|
||||
`delete_flag` bit(1) NULL DEFAULT NULL COMMENT '删除标志 true/false 删除/未删除',
|
||||
`update_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime(6) NULL DEFAULT NULL COMMENT '更新时间',
|
||||
`title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '部门名称',
|
||||
`store_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '店铺id',
|
||||
`parent_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '父id',
|
||||
`sort_order` decimal(20, 2) NULL DEFAULT NULL COMMENT '排序值',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic;
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
||||
/** 部门角色关联 **/
|
||||
/*
|
||||
Navicat Premium Data Transfer
|
||||
|
||||
Source Server : lilishop
|
||||
Source Server Type : MySQL
|
||||
Source Server Version : 80025
|
||||
Source Host : 192.168.0.116:3306
|
||||
Source Schema : zhimai1
|
||||
|
||||
Target Server Type : MySQL
|
||||
Target Server Version : 80025
|
||||
File Encoding : 65001
|
||||
|
||||
Date: 03/03/2022 19:32:01
|
||||
*/
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for li_store_department_role
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `li_store_department_role`;
|
||||
CREATE TABLE `li_store_department_role` (
|
||||
`id` bigint NOT NULL COMMENT 'ID',
|
||||
`create_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime(6) NULL DEFAULT NULL COMMENT '创建时间',
|
||||
`delete_flag` bit(1) NULL DEFAULT NULL COMMENT '删除标志 true/false 删除/未删除',
|
||||
`update_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime(6) NULL DEFAULT NULL COMMENT '更新时间',
|
||||
`role_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '角色id',
|
||||
`department_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '部门id',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic;
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
||||
/**店铺角色菜单**/
|
||||
/*
|
||||
Navicat Premium Data Transfer
|
||||
|
||||
Source Server : lilishop
|
||||
Source Server Type : MySQL
|
||||
Source Server Version : 80025
|
||||
Source Host : 192.168.0.116:3306
|
||||
Source Schema : zhimai1
|
||||
|
||||
Target Server Type : MySQL
|
||||
Target Server Version : 80025
|
||||
File Encoding : 65001
|
||||
|
||||
Date: 03/03/2022 19:34:42
|
||||
*/
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for li_store_menu_role
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `li_store_menu_role`;
|
||||
CREATE TABLE `li_store_menu_role` (
|
||||
`id` bigint NOT NULL COMMENT 'ID',
|
||||
`create_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime(6) NULL DEFAULT NULL COMMENT '创建时间',
|
||||
`delete_flag` bit(1) NULL DEFAULT NULL COMMENT '删除标志 true/false 删除/未删除',
|
||||
`update_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime(6) NULL DEFAULT NULL COMMENT '更新时间',
|
||||
`role_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '角色id',
|
||||
`menu_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '菜单',
|
||||
`store_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '店铺id',
|
||||
`is_super` bit(1) NULL DEFAULT NULL COMMENT '是否拥有操作数据权限,为否则只有查看权限',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic;
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
||||
|
||||
/**店铺角色**/
|
||||
/*
|
||||
Navicat Premium Data Transfer
|
||||
|
||||
Source Server : lilishop
|
||||
Source Server Type : MySQL
|
||||
Source Server Version : 80025
|
||||
Source Host : 192.168.0.116:3306
|
||||
Source Schema : zhimai1
|
||||
|
||||
Target Server Type : MySQL
|
||||
Target Server Version : 80025
|
||||
File Encoding : 65001
|
||||
|
||||
Date: 03/03/2022 19:32:59
|
||||
*/
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for li_store_role
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `li_store_role`;
|
||||
CREATE TABLE `li_store_role` (
|
||||
`id` bigint NOT NULL COMMENT 'ID',
|
||||
`create_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime(6) NULL DEFAULT NULL COMMENT '创建时间',
|
||||
`delete_flag` bit(1) NULL DEFAULT NULL COMMENT '删除标志 true/false 删除/未删除',
|
||||
`update_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime(6) NULL DEFAULT NULL COMMENT '更新时间',
|
||||
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '角色名称',
|
||||
`store_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '店铺id',
|
||||
`default_role` bit(1) NULL DEFAULT NULL COMMENT '是否为注册默认角色',
|
||||
`description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '备注',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = DYNAMIC;
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
||||
|
||||
/*
|
||||
Navicat Premium Data Transfer
|
||||
|
||||
Source Server : lilishop
|
||||
Source Server Type : MySQL
|
||||
Source Server Version : 80025
|
||||
Source Host : 192.168.0.116:3306
|
||||
Source Schema : zhimai1
|
||||
|
||||
Target Server Type : MySQL
|
||||
Target Server Version : 80025
|
||||
File Encoding : 65001
|
||||
|
||||
Date: 02/03/2022 09:57:49
|
||||
*/
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for li_menu
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `li_menu`;
|
||||
CREATE TABLE `li_menu` (
|
||||
`id` bigint NOT NULL COMMENT 'ID',
|
||||
`create_by` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
|
||||
`delete_flag` bit(1) NULL DEFAULT NULL COMMENT '删除标志 true/false 删除/未删除',
|
||||
`update_by` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
|
||||
`description` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '说明备注',
|
||||
`front_route` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '前端路由',
|
||||
`icon` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '图标',
|
||||
`level` int NULL DEFAULT NULL COMMENT '层级',
|
||||
`name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '菜单/权限名称',
|
||||
`parent_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '父id',
|
||||
`path` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '赋权API地址,正则表达式',
|
||||
`sort_order` decimal(10, 2) NULL DEFAULT NULL COMMENT '排序值',
|
||||
`title` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '菜单标题',
|
||||
`front_component` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件地址',
|
||||
`permission` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '权限url',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of li_menu
|
||||
-- ----------------------------
|
||||
INSERT INTO `li_menu` VALUES (1348810750596767744, 'admin', '2021-01-12 09:55:17', b'0', 'admin', '2021-01-15 09:42:50', 'null', '1', 'ios-american-football', 0, 'settings', '0', '1', 2.00, '设置', 'null', NULL);
|
||||
INSERT INTO `li_menu` VALUES (1348810864748945408, 'admin', '2021-01-12 09:55:45', b'0', 'admin', '2021-03-15 20:57:12', 'null', 'null', 'ios-american-football', 0, 'log', '0', 'null', 3.00, '日志', 'null', '/manager/setting/log*');
|
||||
INSERT INTO `li_menu` VALUES (1349237129847005184, 'admin', '2021-01-13 14:09:34', b'0', 'admin', '2021-01-15 09:43:16', 'null', 'Main', 'ios-american-football', 1, 'sys', '1348810750596767744', '/sys', 1.00, '系统设置', 'null', NULL);
|
||||
INSERT INTO `li_menu` VALUES (1349237207378714624, 'admin', '2021-01-13 14:09:53', b'0', 'admin', '2021-07-27 16:07:49', 'null', 'Main', 'ios-american-football', 1, 'member', '1348810750596767744', '/member', 0.00, '用户管理', 'null', '/manager/permission/department*,/manager/passport/user*,/manager/permission/role*,/manager/permission/menu*,/manager/passport/user/admin/edit*');
|
||||
INSERT INTO `li_menu` VALUES (1349237928434098176, 'admin', '2021-01-13 14:13:03', b'0', 'admin', '2021-07-27 16:09:11', 'null', 'Main', 'ios-american-football', 1, 'log', '1348810864748945408', '/log', 1.00, '系统监控', 'null', '/manager/log*');
|
||||
INSERT INTO `li_menu` VALUES (1349246048900243456, 'admin', '2021-01-13 14:45:00', b'0', 'admin', '2021-07-27 16:07:57', 'null', 'sys/setting-manage/settingManage', 'ios-american-football', 2, 'setting', '1349237129847005184', 'setting', 1.00, '系统设置', 'null', '/manager/system/setting/get*,/manager/system/setting/put*,/manager/setting/setting*');
|
||||
INSERT INTO `li_menu` VALUES (1349246347597602816, 'admin', '2021-01-13 14:46:12', b'0', 'admin', '2021-07-27 16:08:03', 'null', 'sys/oss-manage/ossManage', 'ios-american-football', 2, 'oss-manage', '1349237129847005184', 'oss-manage', 3.00, 'OSS资源', '', '/manager/common/file*');
|
||||
INSERT INTO `li_menu` VALUES (1349246468775239680, 'admin', '2021-01-13 14:46:41', b'0', 'admin', '2021-07-27 16:08:14', 'null', 'region/index', 'ios-american-football', 2, 'region', '1349237129847005184', 'region', 4.00, '行政地区', 'null', '/manager/region*');
|
||||
INSERT INTO `li_menu` VALUES (1349246671158796288, 'admin', '2021-01-13 14:47:29', b'0', 'admin', '2021-07-27 16:08:09', 'null', 'logistics/index', 'ios-american-football', 2, 'logistics', '1349237129847005184', 'logistics', 5.00, '物流公司', 'null', '/manager/other/logistics*');
|
||||
INSERT INTO `li_menu` VALUES (1349246896661356544, 'admin', '2021-01-13 14:48:23', b'0', 'admin', '2021-07-27 16:08:23', 'null', 'sys/setting-manage/settingManage', 'ios-american-football', 2, 'authLogin', '1349237129847005184', 'authLogin', 6.00, '信任登录', 'null', '/manager/system/setting/get*,/manager/system/setting/put*,/manager/setting/setting*\r\n');
|
||||
INSERT INTO `li_menu` VALUES (1349247081504333824, 'admin', '2021-01-13 14:49:07', b'0', 'admin', '2021-07-27 16:08:45', 'null', 'sys/setting-manage/settingManage', 'ios-american-football', 2, 'pay', '1349237129847005184', 'pay', 7.00, '支付设置', 'null', '/manager/system/setting/get*,/manager/system/setting/put*,/manager/system/setting*');
|
||||
INSERT INTO `li_menu` VALUES (1349247640584085504, 'admin', '2021-01-13 14:51:20', b'0', 'admin', '2021-07-27 16:08:56', 'null', 'sensitiveWords/index', 'ios-american-football', 2, 'sensitiveWords', '1349237129847005184', 'sensitiveWords', 8.00, '敏感词', 'null', '/manager/other/sensitiveWords*');
|
||||
INSERT INTO `li_menu` VALUES (1349254815809298432, 'admin', '2021-01-13 15:19:51', b'0', 'admin', '2021-01-15 11:15:40', 'null', 'sys/user-manage/userManage', 'ios-american-football', 2, 'user-manage', '1349237207378714624', 'user-manage', 1.00, '用户管理', 'null', NULL);
|
||||
INSERT INTO `li_menu` VALUES (1349255214977015808, 'admin', '2021-01-13 15:21:26', b'0', 'admin', '2021-01-15 11:16:21', 'null', 'sys/department-manage/departmentManage', 'ios-american-football', 2, 'department-manage', '1349237207378714624', 'department-manage', 3.00, '部门管理', 'null', '/manager/permission/department*,/manager/permission/departmentRole*,');
|
||||
INSERT INTO `li_menu` VALUES (1349255404425338880, 'admin', '2021-01-13 15:22:11', b'0', 'admin', '2021-02-24 09:22:21', 'null', 'sys/role-manage/roleManage', 'ios-american-football', 2, 'role-manage', '1349237207378714624', 'role-manage', 4.00, '角色权限', 'null', '/manager/permission/role*,/manager/permission/roleMenu*');
|
||||
INSERT INTO `li_menu` VALUES (1349256082979840000, 'admin', '2021-01-13 15:24:53', b'0', 'admin', '2021-01-15 11:18:14', 'null', 'sys/log-manage/logManage', 'ios-american-football', 2, 'log-manage', '1349237928434098176', 'log-manage', 2.00, '日志管理', 'null', NULL);
|
||||
INSERT INTO `li_menu` VALUES (1357584224760102912, 'admin', '2021-02-05 06:57:57', b'0', 'admin', '2021-07-27 16:09:02', 'null', 'sys/app-version/appVersion', 'ios-american-football', 2, 'appVersion', '1349237129847005184', 'appVersion', 9.00, 'APP版本', 'null', '/manager/other/appVersion*');
|
||||
INSERT INTO `li_menu` VALUES (1357873097859923969, 'admin', '2021-02-24 09:53:02', b'0', 'admin', '2021-02-24 09:53:12', NULL, 'sys/menu-manage/menuManage', 'ios-american-football', 2, 'menuManage', '1349237207378714624', 'menu-manage', 2.00, '菜单管理', NULL, NULL);
|
||||
INSERT INTO `li_menu` VALUES (1367038467288072192, 'admin', '2021-03-03 09:05:44', b'0', 'admin', '2021-03-03 09:09:27', 'null', 'null', 'ios-person-add', 0, 'member', '0', 'null', 0.00, '会员', 'null', NULL);
|
||||
INSERT INTO `li_menu` VALUES (1367039534616805376, 'admin', '2021-03-03 09:09:58', b'0', 'admin', '2021-05-18 10:51:12', 'null', 'null', 'md-reorder', 0, 'order', '0', 'null', 0.00, '订单', 'null', NULL);
|
||||
INSERT INTO `li_menu` VALUES (1367039950368800768, 'admin', '2021-03-03 09:11:37', b'0', NULL, NULL, NULL, NULL, 'ios-share', 0, 'goods', '0', NULL, 0.20, '商品', NULL, NULL);
|
||||
INSERT INTO `li_menu` VALUES (1367040067201138688, 'admin', '2021-03-03 09:12:05', b'0', 'admin', '2021-12-02 19:45:22', NULL, 'null', 'ios-hammer', 0, 'promotions', '0', 'null', 0.30, '促销', NULL, 'null');
|
||||
INSERT INTO `li_menu` VALUES (1367040599596728320, 'admin', '2021-03-03 09:14:12', b'0', 'admin', '2021-03-03 09:52:13', 'null', 'null', 'ios-color-palette', 0, 'operate', '0', 'null', 0.50, '运营', 'null', NULL);
|
||||
INSERT INTO `li_menu` VALUES (1367040819248234496, 'admin', '2021-03-03 09:15:04', b'0', 'lili_ftyy', '2022-03-01 15:13:04', NULL, 'null', 'ios-stats', 0, 'statistics', '0', 'null', 0.70, '统计', NULL, 'null');
|
||||
INSERT INTO `li_menu` VALUES (1367041332861730816, 'admin', '2021-03-03 09:17:07', b'0', NULL, NULL, NULL, 'Main', 'ios-aperture', 1, '/', '1367038467288072192', '/', 0.00, '会员管理', NULL, NULL);
|
||||
INSERT INTO `li_menu` VALUES (1367041461194850304, 'admin', '2021-03-03 09:17:37', b'0', 'admin', '2021-07-27 16:02:17', NULL, 'member/list/index', 'ios-aperture', 2, 'memberList', '1367041332861730816', 'memberList', 0.00, '会员列表', NULL, '/manager/common/file*,/manager/passport/member*');
|
||||
INSERT INTO `li_menu` VALUES (1367041575619657728, 'admin', '2021-03-03 09:18:05', b'0', 'admin', '2021-07-27 15:59:50', NULL, 'member/list/memberRecycle', 'ios-aperture', 2, 'memberRecycle', '1367041332861730816', 'memberRecycle', 1.00, '回收站', NULL, '/manager/member*');
|
||||
INSERT INTO `li_menu` VALUES (1367042490443497472, 'admin', '2021-03-03 09:21:43', b'0', NULL, NULL, NULL, 'Main', 'ios-aperture', 1, '/', '1367038467288072192', '/', 1.00, '预存款', NULL, NULL);
|
||||
INSERT INTO `li_menu` VALUES (1367042664410644480, 'admin', '2021-03-03 09:22:24', b'0', 'admin', '2021-07-27 16:02:44', 'null', 'member/advance/walletLog', 'ios-aperture', 2, 'walletLog', '1367042490443497472', 'walletLog', 0.00, '会员资金', 'null', '/manager/wallet/log*');
|
||||
INSERT INTO `li_menu` VALUES (1367042804944994304, 'admin', '2021-03-03 09:22:58', b'0', 'admin', '2021-07-27 16:02:48', NULL, 'member/advance/recharge', 'ios-alert', 2, 'recharge', '1367042490443497472', 'recharge', 1.00, '充值记录', NULL, '/manager/wallet/recharge*');
|
||||
INSERT INTO `li_menu` VALUES (1367042804944994305, 'admin', '2021-03-03 09:22:58', b'0', 'admin', '2021-07-27 16:02:52', NULL, 'member/advance/withdrawApply', 'ios-alert', 2, 'withdrawApply', '1367042490443497472', 'withdrawApply', 1.00, '提现申请', NULL, '/manager/wallet/withdrawApply*');
|
||||
INSERT INTO `li_menu` VALUES (1367042917113266176, 'admin', '2021-03-03 09:23:25', b'0', NULL, NULL, NULL, 'Main', 'ios-aperture', 1, 'commont', '1367038467288072192', '/', 0.00, '评价', NULL, NULL);
|
||||
INSERT INTO `li_menu` VALUES (1367043020976816128, 'admin', '2021-03-03 09:23:49', b'0', 'admin', '2021-07-27 16:02:35', NULL, 'goods/goods-review/index', 'md-aperture', 2, 'goodsReview', '1367042917113266176', 'goodsReview', 0.00, '会员评价', NULL, '/manager/memberEvaluation*');
|
||||
INSERT INTO `li_menu` VALUES (1367043443917848576, 'admin', '2021-03-03 09:25:30', b'0', 'admin', '2021-07-27 16:03:00', NULL, 'Main', 'md-aperture', 1, 'order', '1367039534616805376', '/', 0.00, '订单', NULL, '/manager/orders*');
|
||||
INSERT INTO `li_menu` VALUES (1367043505771249664, 'admin', '2021-03-03 09:25:45', b'0', NULL, NULL, NULL, 'Main', 'md-aperture', 1, 'aftersale', '1367039534616805376', '/', 0.00, '售后', NULL, NULL);
|
||||
INSERT INTO `li_menu` VALUES (1367043642379730944, 'admin', '2021-03-03 09:26:17', b'0', NULL, NULL, NULL, 'order/order/orderList', 'ios-aperture', 2, 'orderList', '1367043443917848576', 'orderList', 0.00, '商品订单', NULL, '/manager/order/order*');
|
||||
INSERT INTO `li_menu` VALUES (1367043791105556480, 'admin', '2021-03-03 09:26:53', b'0', NULL, NULL, NULL, 'order/order/fictitiousOrderList', 'ios-aperture', 2, 'fictitiousOrderList', '1367043443917848576', 'fictitiousOrderList', 1.00, '虚拟订单', NULL, '/manager/order/order*');
|
||||
INSERT INTO `li_menu` VALUES (1367043980407078912, 'admin', '2021-03-03 09:27:38', b'0', 'admin', '2021-07-27 16:03:43', NULL, 'order/after-order/afterSaleOrder', 'md-alert', 2, 'afterSaleOrder', '1367043505771249664', 'afterSaleOrder', 0.00, '售后管理', NULL, '/manager/order/afterSale*');
|
||||
INSERT INTO `li_menu` VALUES (1367044121163726848, 'admin', '2021-03-03 09:28:12', b'0', 'admin', '2021-07-27 16:03:48', NULL, 'order/after-order/orderComplaint', 'md-alert', 2, 'orderComplaint', '1367043505771249664', 'orderComplaint', 2.00, '交易投诉', NULL, '/manager/order/complain*');
|
||||
INSERT INTO `li_menu` VALUES (1367044247978508288, 'admin', '2021-03-03 09:28:42', b'0', 'admin', '2021-07-27 16:03:52', NULL, 'order/after-order/afterSale', 'md-aperture', 2, 'afterSaleReason', '1367043505771249664', 'afterSaleReason', 3.00, '售后原因', NULL, '/manager/order/afterSaleReason*');
|
||||
INSERT INTO `li_menu` VALUES (1367044376391319552, 'admin', '2021-03-03 09:29:12', b'0', 'admin', '2021-07-27 16:04:08', NULL, 'Main', 'md-aperture', 1, 'goodsManager', '1367039950368800768', '/', 0.00, '商品管理', NULL, '/manager/goods*');
|
||||
INSERT INTO `li_menu` VALUES (1367044657296441344, 'admin', '2021-03-03 09:30:19', b'0', NULL, NULL, NULL, 'Main', 'ios-aperture', 1, 'association', '1367039950368800768', '/', 1.00, '关联管理', NULL, NULL);
|
||||
INSERT INTO `li_menu` VALUES (1367045529720061952, 'admin', '2021-03-03 09:33:47', b'0', 'admin', '2021-07-27 15:38:46', NULL, 'goods/goods-info/goods', 'md-aperture', 2, 'managerGoods', '1367044376391319552', 'managerGoods', 0.00, '平台商品', NULL, 'null');
|
||||
INSERT INTO `li_menu` VALUES (1367045630710513664, 'admin', '2021-03-03 09:34:11', b'0', 'admin', '2021-07-27 15:38:56', NULL, 'goods/goods-info/goodsApply', 'ios-alert', 2, 'applyGoods', '1367044376391319552', 'applyGoods', 1.00, '商品审核', NULL, 'null');
|
||||
INSERT INTO `li_menu` VALUES (1367045794284175360, 'admin', '2021-03-03 09:34:50', b'0', 'admin', '2021-07-27 16:04:18', NULL, 'goods/goods-manage/category', 'md-alert', 2, 'goodsCategory', '1367044657296441344', 'goodsCategory', 0.00, '商品分类', NULL, '/manager/goods/category*,/manager/goods/brand*,/manager/goods/spec*,/manager/goods/parameters*');
|
||||
INSERT INTO `li_menu` VALUES (1367045921434501120, 'admin', '2021-03-03 09:35:21', b'0', 'admin', '2021-07-27 16:04:23', NULL, 'goods/goods-manage/brand', 'md-alert', 2, 'goodsBrand', '1367044657296441344', 'goodsBrand', 1.00, '品牌列表', NULL, '/manager/goods/brand*');
|
||||
INSERT INTO `li_menu` VALUES (1367046068369358848, 'admin', '2021-03-03 09:35:56', b'0', 'admin', '2021-07-27 16:04:27', NULL, 'goods/goods-manage/spec', 'md-aperture', 2, 'goodsSpec', '1367044657296441344', 'goodsSpec', 2.00, '规格列表', NULL, '/manager/goods/spec*');
|
||||
INSERT INTO `li_menu` VALUES (1367046266214678528, 'admin', '2021-03-03 09:36:43', b'0', 'admin', '2021-07-27 16:04:32', NULL, 'goods-unit/index', 'md-alert', 2, 'goodsUnit', '1367044657296441344', 'goodsUnit', 4.00, '计量单位', NULL, '/manager/goods/goodsUnit*');
|
||||
INSERT INTO `li_menu` VALUES (1367048084701315072, 'admin', '2021-03-03 09:43:57', b'0', 'admin', '2021-03-03 09:52:17', 'null', 'null', 'ios-pricetags', 0, 'shop', '0', 'null', 0.40, '店铺', 'null', NULL);
|
||||
INSERT INTO `li_menu` VALUES (1367048684339986432, 'admin', '2021-03-03 09:46:20', b'0', NULL, NULL, NULL, 'Main', 'md-aperture', 1, 'shopManager', '1367048084701315072', '/', 0.00, '店铺管理', NULL, NULL);
|
||||
INSERT INTO `li_menu` VALUES (1367048754229673984, 'admin', '2021-03-03 09:46:36', b'0', NULL, NULL, NULL, 'Main', 'md-aperture', 1, 'bill', '1367048084701315072', '/', 0.00, ' 店铺结算', NULL, NULL);
|
||||
INSERT INTO `li_menu` VALUES (1367048832210173952, 'admin', '2021-03-03 09:46:55', b'0', 'admin', '2021-07-27 16:05:30', NULL, 'seller/shop/shopList', 'md-aperture', 2, 'shopList', '1367048684339986432', 'shopList', 0.00, '店铺列表', NULL, '/manager/order/order*,/manager/store*');
|
||||
INSERT INTO `li_menu` VALUES (1367048967635861504, 'admin', '2021-03-03 09:47:27', b'0', 'admin', '2021-07-27 16:05:32', NULL, 'seller/shop/shopAuditList', 'md-alert', 2, 'shopAuth', '1367048684339986432', 'shopAuth', 1.00, '店铺审核', NULL, '/manager/store*');
|
||||
INSERT INTO `li_menu` VALUES (1367049068122996736, 'admin', '2021-03-03 09:47:51', b'0', 'admin', '2021-07-27 16:05:36', NULL, 'seller/bill/bill', 'md-alert', 2, 'billList', '1367048754229673984', 'billList', 0.00, '店铺结算', NULL, '/manager/order/bill*');
|
||||
INSERT INTO `li_menu` VALUES (1367049214198022144, 'admin', '2021-03-03 09:48:26', b'0', 'admin', '2021-12-02 19:45:28', NULL, 'Main', 'md-aperture', 1, 'promotionsManager', '1367040067201138688', '/', 0.00, '促销管理', NULL, 'null');
|
||||
INSERT INTO `li_menu` VALUES (1367049384792948736, 'admin', '2021-03-03 09:49:07', b'0', 'admin', '2021-12-02 19:54:12', NULL, 'promotions/coupon/coupon', 'md-alert', 2, 'promotions/coupon', '1367049214198022144', 'promotions/coupon', 0.00, '优惠券', NULL, '/manager/promotion/coupon*');
|
||||
INSERT INTO `li_menu` VALUES (1367049500782231552, 'admin', '2021-03-03 09:49:34', b'0', 'admin', '2021-12-02 19:41:37', 'null', 'promotions/full-discount/full-discount', 'md-alert', 2, 'promotions/full-discount', '1367049214198022144', 'promotions/full-discount', 1.00, '满额活动', 'null', '/manager/promotion/fullDiscount*');
|
||||
INSERT INTO `li_menu` VALUES (1367049611578966016, 'admin', '2021-03-03 09:50:01', b'0', 'admin', '2021-12-02 20:16:10', 'null', 'promotions/seckill/seckill', 'md-alert', 2, 'promotions/seckill', '1367049214198022144', 'promotions/seckill', 2.00, '秒杀活动', 'null', '/manager/promotion/seckill*');
|
||||
INSERT INTO `li_menu` VALUES (1367049712657498112, 'admin', '2021-03-03 09:50:25', b'0', 'admin', '2021-12-02 20:22:04', 'null', 'promotions/pintuan/pintuan', 'md-alert', 2, 'promotions/pintuan', '1367049214198022144', 'promotions/pintuan', 3.00, '拼团活动', 'null', '/manager/promotion/pintuan*');
|
||||
INSERT INTO `li_menu` VALUES (1367050250249830400, 'admin', '2021-03-03 09:52:33', b'0', 'admin', '2021-03-22 20:38:14', 'null', 'Main', 'md-aperture', 1, 'document', '1367040599596728320', '/', 2.00, '文章管理', 'null', NULL);
|
||||
INSERT INTO `li_menu` VALUES (1367050320584114176, 'admin', '2021-03-03 09:52:50', b'0', 'admin', '2021-07-27 16:05:49', NULL, 'Main', 'md-aperture', 1, 'floor', '1367040599596728320', '/', 0.00, '楼层装修', NULL, '/manager/pageData*,/manager/file*,/manager/article-category*,/manager/article*,/manager/promotion*,/manager/goods*,/manager/store*');
|
||||
INSERT INTO `li_menu` VALUES (1367050530030878720, 'admin', '2021-03-03 09:53:40', b'0', 'admin', '2021-03-04 01:05:57', 'null', 'page-decoration/floorList', 'md-alert', 2, 'pcFloor', '1367050320584114176', 'pcFloor', 0.00, 'PC端', 'null', '/manager/other/pageData*');
|
||||
INSERT INTO `li_menu` VALUES (1367050673312497664, 'admin', '2021-03-03 09:54:14', b'0', 'admin', '2021-03-04 01:06:04', 'null', 'page-decoration/wap/wapList', 'md-aperture', 2, 'wapList', '1367050320584114176', 'wapList', 1.00, '移动端', 'null', '/manager/other/pageData*');
|
||||
INSERT INTO `li_menu` VALUES (1367050829697122304, 'admin', '2021-03-03 09:54:51', b'0', 'admin', '2021-07-27 16:06:32', 'null', 'page/article-manage/hotWords', 'md-aperture', 2, 'hotKeyWord', '1367050250249830400', 'hotKeyWord', 0.00, '搜索热词', 'null', '/manager/hotwords*');
|
||||
INSERT INTO `li_menu` VALUES (1367050939084570624, 'admin', '2021-03-03 09:55:17', b'0', 'admin', '2021-07-27 16:06:38', NULL, 'page/article-manage/ArticleCategory', 'md-aperture', 2, 'article-category', '1367050250249830400', 'article-category', 1.00, '文章分类', NULL, '/manager/other/articleCategory*');
|
||||
INSERT INTO `li_menu` VALUES (1367051048232943616, 'admin', '2021-03-03 09:55:43', b'0', 'admin', '2021-07-27 16:06:42', NULL, 'page/article-manage/articleList', 'md-alert', 2, 'articleList', '1367050250249830400', 'articleList', 3.00, '文章管理', NULL, '/manager/other/article*,/manager/other/articleCategory*');
|
||||
INSERT INTO `li_menu` VALUES (1367052616634204160, 'admin', '2021-03-03 10:01:57', b'0', 'admin', '2021-07-27 16:07:38', NULL, 'Main', 'md-aperture', 1, 'statistics', '1367040819248234496', '/', 0.00, '统计', NULL, '/manager/store*,/manager/member*');
|
||||
INSERT INTO `li_menu` VALUES (1367052705725415424, 'admin', '2021-03-03 10:02:18', b'0', 'admin', '2021-03-11 22:11:05', 'null', 'statistics/member', 'md-alert', 2, 'memberStatistics', '1367052616634204160', 'memberStatistics', 0.00, '会员统计', 'null', NULL);
|
||||
INSERT INTO `li_menu` VALUES (1367052805503713280, 'admin', '2021-03-03 10:02:42', b'0', 'admin', '2021-03-11 22:11:14', 'null', 'statistics/order', 'md-alert', 2, 'orderStatistics', '1367052616634204160', 'orderStatistics', 1.00, '订单统计', 'null', NULL);
|
||||
INSERT INTO `li_menu` VALUES (1367052915314786304, 'admin', '2021-03-03 10:03:08', b'0', 'admin', '2021-03-11 22:11:23', 'null', 'statistics/goods', 'md-alert', 2, 'goodsStatistics', '1367052616634204160', 'goodsStatistics', 2.00, '商品统计', 'null', NULL);
|
||||
INSERT INTO `li_menu` VALUES (1367053087121866752, 'admin', '2021-03-03 10:03:49', b'0', 'admin', '2021-03-11 22:11:34', 'null', 'statistics/traffic', 'md-alert', 2, 'trafficStatistics', '1367052616634204160', 'trafficStatistics', 4.00, '流量统计', 'null', NULL);
|
||||
INSERT INTO `li_menu` VALUES (1372807928452481024, 'admin', '2021-03-19 02:11:30', b'0', NULL, NULL, NULL, 'Main', 'ios-aperture', 1, 'flow', '1367039534616805376', '/', 3.00, '流水', NULL, NULL);
|
||||
INSERT INTO `li_menu` VALUES (1372808148565360640, 'admin', '2021-03-19 02:12:23', b'0', 'admin', '2021-07-27 16:03:57', NULL, 'order/flow/paymentLog', 'md-alert', 2, 'paymentLog', '1372807928452481024', 'paymentLog', 1.00, '收款记录', NULL, '/manager/order/paymentLog*');
|
||||
INSERT INTO `li_menu` VALUES (1372808352295288832, 'admin', '2021-03-19 02:13:11', b'0', 'admin', '2021-07-27 16:04:01', NULL, 'order/flow/refundLog', 'ios-aperture', 2, 'refundLog', '1372807928452481024', 'refundLog', 2.00, '退款流水', NULL, '/manager/order/refundLog*');
|
||||
INSERT INTO `li_menu` VALUES (1373166892465782784, 'admin', '2021-03-20 01:57:54', b'0', 'admin', '2021-03-22 20:13:48', 'null', 'Main', 'ios-aperture', 1, '/', '1367038467288072192', '/', 0.00, '积分', 'null', NULL);
|
||||
INSERT INTO `li_menu` VALUES (1373167227385151488, 'admin', '2021-03-20 01:59:14', b'0', 'admin', '2021-07-27 16:02:40', 'null', 'member/point/point', 'ios-aperture', 2, 'point', '1373166892465782784', 'point', 0.00, '积分历史', 'null', '/manager/member/memberPointsHistory*');
|
||||
INSERT INTO `li_menu` VALUES (1373791578371391488, 'admin', '2021-03-21 19:20:11', b'0', 'admin', '2021-07-27 16:05:38', NULL, 'seller/bill/accountStatementBill', 'md-alert', 2, 'accountStatementBill', '1367048754229673984', 'accountStatementBill', 0.00, '商家对账', NULL, '/manager/order/bill*');
|
||||
INSERT INTO `li_menu` VALUES (1374154349697040384, 'admin', '2021-03-22 19:21:42', b'0', 'admin', '2021-07-27 16:06:55', 'null', 'Main', 'md-aperture', 1, 'feedback', '1367040599596728320', '/', 3.00, '意见反馈', 'null', '/manager/other/feedback*');
|
||||
INSERT INTO `li_menu` VALUES (1374155741123837952, 'admin', '2021-03-22 19:27:14', b'0', 'admin', '2021-07-27 15:41:40', 'null', 'page/feedback/feedback', 'md-aperture', 2, 'feedback', '1374154349697040384', 'feedback', 0.00, '意见反馈', 'null', 'null');
|
||||
INSERT INTO `li_menu` VALUES (1374173575405109248, 'admin', '2021-03-22 20:38:06', b'0', 'admin', '2021-03-22 20:52:58', 'null', 'Main', 'ios-analytics', 1, 'distributionManager', '1367040599596728320', '/', 1.00, '分销管理', 'null', NULL);
|
||||
INSERT INTO `li_menu` VALUES (1374177618072436736, 'admin', '2021-03-22 20:54:10', b'0', 'admin', '2021-07-27 16:05:58', 'null', 'distribution/distributionSetting', 'ios-basketball', 2, 'distributionSetting', '1374173575405109248', 'distributionSetting', 0.00, '分销设置', 'null', '/manager/system/setting/put/DISTRIBUTION_SETTING*,/manager/system/setting/get/DISTRIBUTION_SETTING*');
|
||||
INSERT INTO `li_menu` VALUES (1374177789581721600, 'admin', '2021-03-22 20:54:51', b'0', 'admin', '2021-07-27 16:06:15', 'null', 'distribution/distributionGoods', 'ios-chatbubbles', 2, 'distributionGoods', '1374173575405109248', 'distributionGoods', 3.00, '分销商品', 'null', '/manager/distribution/goods*');
|
||||
INSERT INTO `li_menu` VALUES (1374177910411231232, 'admin', '2021-03-22 20:55:19', b'0', 'admin', '2021-07-27 16:06:20', 'null', 'distribution/distributionOrder', 'ios-cloudy', 2, 'distributionOrder', '1374173575405109248', 'distributionOrder', 4.00, '分销订单', 'null', '/manager/distribution/order*,/manager/store*');
|
||||
INSERT INTO `li_menu` VALUES (1374178079181635584, 'admin', '2021-03-22 20:56:00', b'0', 'admin', '2021-07-27 16:06:05', 'null', 'distribution/distributionApply', 'md-egg', 2, 'distributionApply', '1374173575405109248', 'distributionApply', 1.00, '分销申请', 'null', '/manager/distribution*');
|
||||
INSERT INTO `li_menu` VALUES (1374178303975358464, 'admin', '2021-03-22 20:56:53', b'0', 'admin', '2021-07-27 16:06:08', 'null', 'distribution/distribution', 'md-person', 2, 'distribution', '1374173575405109248', 'distribution', 2.00, '分销员', 'null', '/manager/distribution*');
|
||||
INSERT INTO `li_menu` VALUES (1374916594269945856, 'admin', '2021-03-24 21:50:35', b'0', 'admin', '2021-07-27 16:08:51', NULL, 'sys/slider/slider', 'ios-aperture', 2, 'slider', '1349237129847005184', 'slider', 7.00, '验证码', NULL, '/manager/other/verificationSource*');
|
||||
INSERT INTO `li_menu` VALUES (1376450531517530112, 'admin', '2021-03-29 03:25:55', b'0', NULL, NULL, NULL, 'Main', 'md-basketball', 1, 'notice', '1367040599596728320', '/', 5.00, '站内信', NULL, NULL);
|
||||
INSERT INTO `li_menu` VALUES (1376450662098796544, 'admin', '2021-03-29 03:26:26', b'0', 'admin', '2021-07-27 16:07:23', NULL, 'sys/message/noticeMessageTemplate', 'ios-american-football', 2, 'noticeMessageTemplate', '1376450531517530112', 'noticeMessageTemplate', 1.00, '站内信', NULL, '/manager/other/message*');
|
||||
INSERT INTO `li_menu` VALUES (1376450766817984512, 'admin', '2021-03-29 03:26:51', b'0', 'admin', '2021-03-29 03:27:25', 'null', 'Main', 'md-checkmark', 1, 'sms', '1367040599596728320', '/', 6.00, '短信管理', 'null', NULL);
|
||||
INSERT INTO `li_menu` VALUES (1376450876423536640, 'admin', '2021-03-29 03:27:17', b'0', 'admin', '2021-07-27 16:07:29', NULL, 'sys/message/sms', 'ios-timer', 2, 'sms', '1376450766817984512', 'sms', 1.00, '短信', NULL, '/manager/sms/sms*,/manager/passport/member*');
|
||||
INSERT INTO `li_menu` VALUES (1384035281702748160, 'admin', '2021-04-19 14:45:00', b'0', 'admin', '2021-07-27 16:08:18', 'null', 'member/message-manage/weChatMessageManager', 'md-aperture', 2, 'message-manage', '1349237129847005184', 'message-manage', 5.00, '微信消息', 'null', '/manager/wechat/wechatMessage*');
|
||||
INSERT INTO `li_menu` VALUES (1403988156444962818, 'admin', '2021-06-13 16:10:36', b'0', 'admin', '2021-12-02 19:54:37', 'null', 'promotions/coupon-activity/coupon', '', 2, 'promotions/coupon-activity', '1367049214198022144', 'promotions/coupon-activity', 0.00, '券活动', 'null', '/manager/promotion/couponActivity*');
|
||||
INSERT INTO `li_menu` VALUES (1407601962899230721, 'admin', '2021-06-23 15:30:35', b'0', 'admin', '2021-07-27 16:05:08', NULL, 'Main', '', 1, 'liveManage', '1367040067201138688', '/', 2.00, '直播管理', NULL, '/manager/broadcast*');
|
||||
INSERT INTO `li_menu` VALUES (1407602049759072258, 'admin', '2021-06-23 15:30:55', b'0', 'admin', '2021-12-07 10:54:54', NULL, 'promotions/live/live', '', 2, 'promotions/live', '1407601962899230721', 'promotions/live', 1.00, '直播管理', NULL, 'null');
|
||||
INSERT INTO `li_menu` VALUES (1407602441964244994, 'admin', '2021-06-23 15:32:29', b'0', NULL, NULL, NULL, 'Main', '', 1, 'pointManage', '1367040067201138688', '/', 3.00, '积分活动', NULL, NULL);
|
||||
INSERT INTO `li_menu` VALUES (1407602516912263170, 'admin', '2021-06-23 15:32:47', b'0', 'admin', '2021-12-03 19:18:30', NULL, 'promotions/points-goods/points-goods', '', 2, 'promotions/points-goods', '1407602441964244994', 'promotions/points-goods', 1.00, '积分商品', NULL, '/manager/promotion/pointsGoods*,/manager/goods*');
|
||||
INSERT INTO `li_menu` VALUES (1407602673334636546, 'admin', '2021-06-23 15:33:24', b'0', 'admin', '2021-12-03 19:19:23', NULL, 'promotions/points-goods-category/points-goods-category', '', 2, 'promotions/points-goods-category', '1407602441964244994', 'promotions/points-goods-category', 2.00, '积分分类', NULL, '/manager/promotion/pointsGoodsCategory*');
|
||||
INSERT INTO `li_menu` VALUES (1410862675914764290, 'admin', '2021-07-02 15:27:29', b'0', 'admin', '2021-07-27 16:06:26', 'null', 'distribution/distributionCash', '', 2, 'distributionCash', '1374173575405109248', 'distributionCash', 5.00, '分销提现', 'null', '/manager/distribution/cash*');
|
||||
INSERT INTO `li_menu` VALUES (1419926569920536578, 'admin', '2021-07-27 15:44:10', b'0', 'admin', '2021-07-27 16:07:10', NULL, 'customWords/index', NULL, 2, 'customWords', '1367050250249830400', 'customWords', 4.00, 'ES分词', NULL, '/manager/other/customWords*');
|
||||
INSERT INTO `li_menu` VALUES (1430799171593535490, 'admin', '2021-08-26 15:48:00', b'0', 'admin', '2021-12-02 20:21:34', NULL, 'promotions/kanjia/kanjia-activity-goods', NULL, 2, 'promotions/kanjia', '1367049214198022144', 'promotions/kanjia', 6.00, '砍价活动', NULL, '/manager/promotion/kanJiaGoods*');
|
||||
INSERT INTO `li_menu` VALUES (1495665663207432193, 'admin', '2022-02-21 15:44:17', b'0', 'admin', '2022-02-21 15:45:44', NULL, 'distribution/distrbutionGrade', NULL, 2, 'distrbutionGrade', '1374173575405109248', 'distrbutionGrade', 0.00, '分销等级', NULL, '/manager/distrbutionGrade*');
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
||||
|
||||
|
||||
/*
|
||||
Navicat Premium Data Transfer
|
||||
|
||||
Source Server : lilishop
|
||||
Source Server Type : MySQL
|
||||
Source Server Version : 80025
|
||||
Source Host : 192.168.0.116:3306
|
||||
Source Schema : zhimai1
|
||||
|
||||
Target Server Type : MySQL
|
||||
Target Server Version : 80025
|
||||
File Encoding : 65001
|
||||
|
||||
Date: 01/03/2022 15:36:03
|
||||
*/
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for li_store_menu
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `li_store_menu`;
|
||||
CREATE TABLE `li_store_menu` (
|
||||
`id` bigint NOT NULL COMMENT 'ID',
|
||||
`create_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime(6) NULL DEFAULT NULL COMMENT '创建时间',
|
||||
`delete_flag` bit(1) NULL DEFAULT NULL COMMENT '删除标志 true/false 删除/未删除',
|
||||
`update_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
|
||||
`description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '说明备注',
|
||||
`front_route` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '前端路由',
|
||||
`icon` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '图标',
|
||||
`level` int NULL DEFAULT NULL COMMENT '层级',
|
||||
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '菜单/权限名称',
|
||||
`parent_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '父id',
|
||||
`path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '赋权API地址,正则表达式',
|
||||
`sort_order` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '排序值',
|
||||
`title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '菜单标题',
|
||||
`permission` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '权限url',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of li_store_menu
|
||||
-- ----------------------------
|
||||
INSERT INTO `li_store_menu` VALUES (1348810750596767744, NULL, '2022-01-11 22:35:33.000000', b'0', NULL, '2022-01-11 22:36:52', NULL, 'Main', 'ios-american-football', 0, 'goods', '0', '/', '1', '商品', NULL);
|
||||
INSERT INTO `li_store_menu` VALUES (1348810864748945408, NULL, '2022-01-11 22:35:37.000000', b'0', NULL, '2022-01-11 22:36:55', NULL, 'Main', 'ios-american-football', 1, 'Main', '1348810750596767744', '/', '1.1', '商品管理', '');
|
||||
INSERT INTO `li_store_menu` VALUES (1349237129847005184, NULL, '2022-01-11 22:35:40.000000', b'0', NULL, '2022-01-11 22:36:59', NULL, 'goods-operation', 'ios-american-football', 2, 'goods-operation', '1348810864748945408', '/goods-operation', '1.11', '商品发布', '/store/goods/category*,/store/goods/categorySpec*,/store/goods/categoryParameters*,/store/goods/draftGoods*,/store/goods/label*,/store/goods/goods*,/store/goods/goodsUnit*,/store/goods/spec*');
|
||||
INSERT INTO `li_store_menu` VALUES (1349237207378714624, NULL, '2022-01-11 22:35:42.000000', b'0', NULL, '2022-01-11 22:37:02', NULL, 'goods/goods-seller/goods', 'ios-american-football', 2, 'goods', '1348810864748945408', 'goods', '1.12', '商品列表', NULL);
|
||||
INSERT INTO `li_store_menu` VALUES (1349237928434098176, NULL, '2022-01-11 22:35:45.000000', b'0', NULL, '2022-01-11 22:37:05', NULL, 'goods/goods-seller/draftGoods', 'ios-american-football', 2, 'template-goods', '1348810864748945408', 'template-goods', '1.13', '商品模板', NULL);
|
||||
INSERT INTO `li_store_menu` VALUES (1349246048900243456, NULL, '2022-01-11 22:35:48.000000', b'0', NULL, '2022-01-11 22:37:08', NULL, 'goods/goods-manage/category', 'ios-american-football', 2, 'category', '1348810864748945408', 'category', '1.14', '店铺分类', NULL);
|
||||
INSERT INTO `li_store_menu` VALUES (1349246347597602816, NULL, '2022-01-11 22:35:51.000000', b'0', NULL, '2022-01-11 22:37:11', NULL, 'Main', 'ios-american-football', 0, 'order', '0', '/', '2', '订单', NULL);
|
||||
INSERT INTO `li_store_menu` VALUES (1349246468775239680, NULL, '2022-01-11 22:38:28.000000', b'0', NULL, '2022-01-11 22:38:31', NULL, 'Main', 'ios-american-football', 1, 'Main', '1349246347597602816', '/', '2.1', '订单管理', NULL);
|
||||
INSERT INTO `li_store_menu` VALUES (1349246671158796288, NULL, '2022-01-11 22:38:42.000000', b'0', NULL, '2022-01-11 22:38:35', NULL, 'order/order/orderList', 'ios-american-football', 2, 'orderList', '1349246468775239680', 'orderList', '2.11', '商品订单', '/store/order/order*');
|
||||
INSERT INTO `li_store_menu` VALUES (1349246896661356544, NULL, '2022-01-11 22:40:27.000000', b'0', NULL, '2022-01-11 22:40:34', NULL, 'order/order/virtualOrderList', 'ios-american-football', 2, 'virtualOrderList', '1349246468775239680', 'virtualOrderList', '2.12', '虚拟订单', '/store/order/order*');
|
||||
INSERT INTO `li_store_menu` VALUES (1349247081504333824, NULL, '2022-01-11 22:41:47.000000', b'0', NULL, '2022-01-11 22:41:50', NULL, 'Main', 'ios-american-football', 1, 'Main', '1349246347597602816', '/', '2.2', '评价管理', NULL);
|
||||
INSERT INTO `li_store_menu` VALUES (1349247640584085504, NULL, '2022-01-11 22:43:29.000000', b'0', NULL, '2022-01-11 22:45:47', NULL, 'member/memberComment', 'ios-american-football', 2, 'memberComment', '1349247081504333824', 'memberComment', '2.21', '评价管理', '/store/member/evaluation*');
|
||||
INSERT INTO `li_store_menu` VALUES (1349254815809298432, NULL, '2022-01-11 22:45:35.000000', b'0', NULL, '2022-01-11 22:45:50', NULL, 'Main', 'ios-american-football', 1, 'Main', '1349246347597602816', '/', '2.3', '售后管理', NULL);
|
||||
INSERT INTO `li_store_menu` VALUES (1349255214977015808, NULL, '2022-01-11 22:49:22.000000', b'0', NULL, '2022-01-11 22:49:27', NULL, 'order/after-order/returnGoodsOrder', 'ios-american-football', 2, 'returnGoodsOrder', '1349254815809298432', 'returnGoodsOrder', '2.31', '退货管理', '/store/order/afterSale*');
|
||||
INSERT INTO `li_store_menu` VALUES (1349255404425338880, NULL, '2022-01-11 22:51:20.000000', b'0', NULL, '2022-01-11 22:51:22', NULL, 'order/after-order/returnMoneyOrder', 'ios-american-football', 2, 'returnMoneyOrder', '1349254815809298432', 'returnMoneyOrder', '2.32', '退款管理', '/store/order/afterSale*');
|
||||
INSERT INTO `li_store_menu` VALUES (1349256082979840000, NULL, '2022-01-11 22:52:50.000000', b'0', NULL, '2022-01-11 22:52:55', NULL, 'order/after-order/orderComplaint', 'ios-american-football', 2, 'orderComplaint', '1349254815809298432', 'orderComplaint', '2.33', '投诉管理', '/store/order/complain*');
|
||||
INSERT INTO `li_store_menu` VALUES (1357584224760102912, NULL, '2022-01-11 23:02:20.000000', b'0', NULL, '2022-01-11 23:02:25', NULL, 'Main', 'ios-american-football', 0, 'bill', '0', '/', '3', '财务', NULL);
|
||||
INSERT INTO `li_store_menu` VALUES (1357873097859923969, NULL, '2022-01-11 23:04:13.000000', b'0', NULL, '2022-01-11 23:04:17', NULL, 'Main', 'ios-american-football', 1, 'Main', '1357584224760102912', '/', '3.1', '财务管理', '');
|
||||
INSERT INTO `li_store_menu` VALUES (1367038467288072192, NULL, '2022-01-11 23:06:11.000000', b'0', NULL, '2022-01-11 23:06:16', NULL, 'shop/bill/accountStatementBill', 'ios-american-football', 2, 'accountStatementBill', '1357873097859923969', 'accountStatementBill', '3.11', '财务对账', '/store/order/bill*');
|
||||
INSERT INTO `li_store_menu` VALUES (1367039534616805376, NULL, '2022-01-11 23:07:54.000000', b'0', NULL, '2022-01-11 23:07:57', NULL, 'shop/bill/storeBill', 'ios-american-football', 2, 'storeBill', '1357873097859923969', 'storeBill', '3.12', '店铺结算', '/store/order/bill*');
|
||||
INSERT INTO `li_store_menu` VALUES (1367039950368800768, NULL, '2022-01-11 23:09:26.000000', b'0', NULL, '2022-01-11 23:09:29', NULL, 'Main', 'ios-american-football', 1, 'Main', '1357584224760102912', '/', '3.2', '发票管理', NULL);
|
||||
INSERT INTO `li_store_menu` VALUES (1367040067201138688, NULL, '2022-01-11 23:11:14.000000', b'0', NULL, '2022-01-11 23:11:18', NULL, 'order/receiptManager/receipt', 'ios-american-football', 2, 'receipt', '1367039950368800768', 'receipt', '3.21', '发票管理', '/store/trade/receipt*');
|
||||
INSERT INTO `li_store_menu` VALUES (1367040599596728320, NULL, '2022-01-11 23:12:49.000000', b'0', NULL, '2022-01-11 23:12:52', NULL, 'Main', 'ios-american-football', 0, 'promotion', '0', '/', '4', '营销', NULL);
|
||||
INSERT INTO `li_store_menu` VALUES (1367040819248234496, NULL, '2022-01-11 23:14:35.000000', b'0', NULL, '2022-01-11 23:14:38', NULL, 'Main', 'ios-american-football', 1, 'Main', '1367040599596728320', '/', '4.1', '平台活动', NULL);
|
||||
INSERT INTO `li_store_menu` VALUES (1367041332861730816, NULL, '2022-01-11 23:15:42.000000', b'0', NULL, '2022-01-11 23:15:48', NULL, 'promotion/pintuan/pintuan', 'ios-american-football', 2, 'pintuan', '1367040819248234496', 'pintuan', '4.11', '拼团活动', '/store/promotion/pintuan*');
|
||||
INSERT INTO `li_store_menu` VALUES (1367041461194850304, NULL, '2022-01-11 23:17:32.000000', b'0', NULL, '2022-01-11 23:17:44', NULL, 'promotion/seckill/seckill', 'ios-american-football', 2, 'seckill', '1367040819248234496', 'seckill', '4.12', '秒杀活动', '/store/promotion/seckill*');
|
||||
INSERT INTO `li_store_menu` VALUES (1367041575619657728, NULL, '2022-01-11 23:20:19.000000', b'0', NULL, '2022-01-11 23:20:24', NULL, 'Main', 'ios-american-football', 1, 'Main', '1367040599596728320', '/', '4.2', '直播活动', '');
|
||||
INSERT INTO `li_store_menu` VALUES (1367042490443497472, NULL, '2022-01-11 23:21:13.000000', b'0', NULL, '2022-01-11 23:21:22', NULL, 'promotion/live/live', 'ios-american-football', 2, 'live', '1367041575619657728', 'live', '4.21', '直播管理', '/store/broadcast/studio*');
|
||||
INSERT INTO `li_store_menu` VALUES (1367042664410644480, NULL, '2022-01-11 23:22:42.000000', b'0', NULL, '2022-01-11 23:22:59', NULL, 'promotion/live/liveGoods', 'ios-american-football', 2, 'liveGoods', '1367041575619657728', 'liveGoods', '4.22', '直播商品', '/store/broadcast/commodity*');
|
||||
INSERT INTO `li_store_menu` VALUES (1367042804944994304, NULL, '2022-01-11 23:24:24.000000', b'0', NULL, '2022-01-11 23:24:38', NULL, 'Main', 'ios-american-football', 1, 'Main', '1367040599596728320', '/', '4.3', '商家活动', NULL);
|
||||
INSERT INTO `li_store_menu` VALUES (1367042804944994305, NULL, '2022-01-11 23:24:29.000000', b'0', NULL, '2022-01-11 23:24:42', NULL, 'promotion/full-discount/full-discount', 'ios-american-football', 2, 'full-cut', '1367042804944994304', 'full-discount', '4.31', '满额活动', '/store/promotion/fullDiscount*');
|
||||
INSERT INTO `li_store_menu` VALUES (1367042917113266176, NULL, '2022-01-11 23:26:45.000000', b'0', NULL, '2022-01-11 23:26:50', NULL, 'promotion/coupon/coupon', 'ios-american-football', 2, 'coupon', '1367042804944994304', 'coupon', '4.32', '优惠券', '/store/promotion/coupon*');
|
||||
INSERT INTO `li_store_menu` VALUES (1367043020976816128, NULL, '2022-01-11 23:28:50.000000', b'0', NULL, '2022-01-11 23:29:02', NULL, 'Main', 'ios-american-football', 1, 'Main', '1367040599596728320', '/', '4.4', '分销管理', NULL);
|
||||
INSERT INTO `li_store_menu` VALUES (1367043443917848576, NULL, '2022-01-11 23:28:53.000000', b'0', NULL, '2022-01-11 23:29:04', NULL, 'distribution/distributionGoods', 'ios-american-football', 2, 'distributionGoods', '1367043020976816128', 'distributionGoods', '4.41', '分销商品', '/store/distribution/goods*');
|
||||
INSERT INTO `li_store_menu` VALUES (1367043505771249664, NULL, '2022-01-11 23:28:56.000000', b'0', NULL, '2022-01-11 23:29:07', NULL, 'distribution/distributionOrder', 'ios-american-football', 2, 'distributionOrder', '1367043020976816128', 'distributionOrderdistributionOrder', '4.42', '分销订单', '/store/distribution/order*');
|
||||
INSERT INTO `li_store_menu` VALUES (1367044121163726848, NULL, '2022-01-12 21:47:03.000000', b'0', NULL, '2022-01-12 21:47:25', NULL, 'Main', 'ios-american-football', 0, 'statistics', '0', '/', '5', '统计', NULL);
|
||||
INSERT INTO `li_store_menu` VALUES (1367044247978508288, NULL, '2022-01-12 21:47:19.000000', b'0', NULL, '2022-01-12 21:47:28', NULL, 'Main', 'ios-american-football', 1, 'Main', '1367044121163726848', '/', '5.1', '统计管理', NULL);
|
||||
INSERT INTO `li_store_menu` VALUES (1367044376391319552, NULL, '2022-01-12 21:49:45.000000', b'0', NULL, '2022-01-12 21:50:01', NULL, 'statistics/goods', 'ios-american-football', 2, 'goodsStatistics', '1367044247978508288', 'goodsStatistics', '5.11', '商品统计', '/store/statistics/goods*');
|
||||
INSERT INTO `li_store_menu` VALUES (1367044657296441344, NULL, '2022-01-12 21:49:48.000000', b'0', NULL, '2022-01-12 21:49:58', NULL, 'statistics/order', 'ios-american-football', 2, 'orderStatistics', '1367044247978508288', 'orderStatistics', '5.12', '订单统计', '/store/statistics/order*,/store/statistics/order*,/store/statistics/order*,/store/statistics/order*');
|
||||
INSERT INTO `li_store_menu` VALUES (1367045529720061952, NULL, '2022-01-12 21:49:51.000000', b'0', NULL, '2022-01-12 21:50:03', NULL, 'statistics/traffic', 'ios-american-football', 2, 'trafficStatistics', '1367044247978508288', 'trafficStatistics', '5.13', '流量统计', '/store/statistics/view*');
|
||||
INSERT INTO `li_store_menu` VALUES (1367045630710513664, NULL, '2022-01-12 21:52:59.000000', b'0', NULL, '2022-01-12 21:53:09', NULL, 'Main', 'ios-american-football', 0, 'settings', '0', '/', '6', '设置', NULL);
|
||||
INSERT INTO `li_store_menu` VALUES (1367045794284175360, NULL, '2022-01-12 21:53:03.000000', b'0', NULL, '2022-01-12 21:53:12', NULL, 'Main', 'ios-american-football', 1, 'Main', '1367045630710513664', '/', '6.1', '配送设置', NULL);
|
||||
INSERT INTO `li_store_menu` VALUES (1367045921434501120, NULL, '2022-01-12 21:55:49.000000', b'0', NULL, '2022-01-12 21:55:52', NULL, 'shop/ship/shipTemplate', 'ios-american-football', 2, 'shipTemplate', '1367045794284175360', 'shipTemplate', '6.11', '配送模板', '/store/setting/freightTemplate*');
|
||||
INSERT INTO `li_store_menu` VALUES (1367046068369358848, NULL, '2022-01-12 21:58:05.000000', b'0', NULL, '2022-01-12 21:58:13', NULL, 'shop/ship/logistics', 'ios-american-football', 2, 'logistics', '1367045794284175360', 'logistics', '6.12', '物流公司', '/store/other/logistics*');
|
||||
INSERT INTO `li_store_menu` VALUES (1367046266214678528, NULL, '2022-01-12 21:59:07.000000', b'0', NULL, '2022-01-12 21:59:43', NULL, 'Main', 'ios-american-football', 1, 'Main', '1367045630710513664', '/', '6.2', '店铺管理', NULL);
|
||||
INSERT INTO `li_store_menu` VALUES (1367048084701315072, NULL, '2022-01-12 21:59:32.000000', b'0', NULL, '2022-01-12 21:59:48', NULL, 'shop/shopSetting', 'ios-american-football', 2, 'shopSetting', '1367046266214678528', 'shopSetting', '6.21', '店铺设置', NULL);
|
||||
INSERT INTO `li_store_menu` VALUES (1367048684339986432, NULL, '2022-01-12 21:59:36.000000', b'0', NULL, '2022-01-12 21:59:51', NULL, 'shop/shopAddress', 'ios-american-football', 2, 'shopAddress', '1367046266214678528', 'shopAddress', '6.22', '自提管理', '/store/member/storeAddress*');
|
||||
INSERT INTO `li_store_menu` VALUES (1367048754229673984, NULL, '2022-01-12 22:02:11.000000', b'0', NULL, '2022-01-12 22:04:36', NULL, 'Main', 'ios-american-football', 0, 'Main', '0', '/', '7', '消息', NULL);
|
||||
INSERT INTO `li_store_menu` VALUES (1367048832210173952, NULL, '2022-01-12 22:02:49.000000', b'0', NULL, '2022-01-12 22:04:39', NULL, 'Main', 'ios-american-football', 1, 'Main', '1367048754229673984', '/', '7.1', '系统消息', NULL);
|
||||
INSERT INTO `li_store_menu` VALUES (1367048967635861503, NULL, '2022-02-18 16:08:30.000000', b'0', NULL, '2022-02-18 16:08:36', NULL, 'Main', 'ios-american-football', 1, 'Main', '1367045630710513664', '/', '6.3', '店员设置', '');
|
||||
INSERT INTO `li_store_menu` VALUES (1367048967635861504, NULL, '2022-01-12 22:02:51.000000', b'0', NULL, '2022-01-12 22:04:45', NULL, 'message', 'ios-american-football', 2, 'message_index', '1367048832210173952', 'message', '7.11', '系统消息', '/store/message/storeMessage*');
|
||||
INSERT INTO `li_store_menu` VALUES (1367048967635861505, NULL, '2022-02-18 16:12:18.000000', b'0', NULL, '2022-02-18 16:12:21', NULL, 'shop/system/clerk/clerkManage', 'ios-american-football', 2, '\nclerkManage', '1367048967635861503', '\nclerkManage', '6.31', '店员管理', '/store/department*,/store/clerk*,/store/role*,/store/department*');
|
||||
INSERT INTO `li_store_menu` VALUES (1367048967635861506, NULL, '2022-02-18 16:25:27.000000', NULL, NULL, '2022-02-18 16:25:31', NULL, 'shop/system/department/storeDepartmentManage', 'ios-american-football', 2, 'storeDepartmentManage', '1367048967635861503', 'storeDepartmentManage', '6.32', '部门管理', '/store/department*');
|
||||
INSERT INTO `li_store_menu` VALUES (1367048967635861507, NULL, '2022-02-18 16:27:28.000000', NULL, NULL, '2022-02-18 16:27:30', NULL, 'shop/system/role/storeRoleManage', 'ios-american-football', 2, 'storeRoleManage', '1367048967635861503', 'storeRoleManage', '6.33', '角色权限', '/store/role*');
|
||||
INSERT INTO `li_store_menu` VALUES (1367048967635861510, NULL, '2022-03-07 14:45:10.000000', b'0', NULL, '2022-03-07 14:45:13', NULL, 'shop/floorList', 'ios-american-football', 2, 'floorList', '1367046266214678528', 'floorList', '6.23', 'PC端', '/store/other/pageData*');
|
||||
INSERT INTO `li_store_menu` VALUES (1367048967635861511, NULL, '2022-03-07 15:13:52.000000', b'0', NULL, '2022-03-07 15:13:55', NULL, 'shop/wap/wapList', 'ios-american-football', 2, 'wapList', '1367046266214678528', 'wapList', '6.24', '移动端', '/store/other/pageData*');
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
||||
|
||||
insert li_clerk(id,create_by,create_time,store_id,clerk_name,member_id,shopkeeper,is_super,`status`) select id,member_name,current_date(),id,member_name,member_id ,TRUE,TRUE,TRUE from li_store
|
||||
|
||||
|
||||
91
DB/version4.2.5to4.3.sql
Normal file
91
DB/version4.2.5to4.3.sql
Normal file
@@ -0,0 +1,91 @@
|
||||
|
||||
/** 优惠券活动增加领取周期字段 **/
|
||||
ALTER TABLE li_coupon_activity ADD coupon_frequency_enum varchar(255) COMMENT '领取周期';
|
||||
-- 会员优惠券标识
|
||||
CREATE TABLE `li_member_coupon_sign` (
|
||||
`id` bigint NOT NULL,
|
||||
`coupon_activity_Id` bigint NULL DEFAULT NULL COMMENT '优惠券活动id',
|
||||
`member_id` bigint NULL DEFAULT NULL COMMENT '会员id',
|
||||
`invalid_time` datetime NULL DEFAULT NULL COMMENT '过期时间',
|
||||
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = DYNAMIC;
|
||||
|
||||
/**
|
||||
IM聊天
|
||||
*/
|
||||
CREATE TABLE `li_im_talk` (
|
||||
`id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`create_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`delete_flag` bit(1) DEFAULT NULL COMMENT '删除标志',
|
||||
`update_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '修改者',
|
||||
`update_time` datetime(6) DEFAULT NULL COMMENT '修改时间',
|
||||
`user_id1` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '用户1Id',
|
||||
`user_id2` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '用户2Id',
|
||||
`name1` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '用户1名称',
|
||||
`name2` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '用户2名称',
|
||||
`face1` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '用户1头像',
|
||||
`face2` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '用户2头像',
|
||||
`top1` bit(1) DEFAULT NULL COMMENT '用户1置顶标识',
|
||||
`top2` bit(1) DEFAULT NULL COMMENT '用户2置顶标识',
|
||||
`disable1` bit(1) DEFAULT NULL COMMENT '用户1禁用标识',
|
||||
`disable2` bit(1) DEFAULT NULL COMMENT '用户2禁用标识',
|
||||
`store_flag1` bit(1) DEFAULT NULL COMMENT '用户1店铺标识',
|
||||
`store_flag2` bit(1) DEFAULT NULL COMMENT '用户2店铺标识',
|
||||
`last_talk_time` datetime DEFAULT NULL COMMENT '最后聊天时间',
|
||||
`last_talk_message` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT '最后的消息',
|
||||
`last_message_type` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '最后消息类型',
|
||||
`talk_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '聊天Id',
|
||||
`tenant_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '坐席Id',
|
||||
`tenant_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '坐席名称',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
|
||||
/**
|
||||
IM消息
|
||||
*/
|
||||
CREATE TABLE `li_im_message` (
|
||||
`id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`create_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`delete_flag` bit(1) DEFAULT NULL COMMENT '删除标识',
|
||||
`update_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '修改者',
|
||||
`update_time` datetime(6) DEFAULT NULL COMMENT '修改标识',
|
||||
`from_user` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '发送用户Id',
|
||||
`to_user` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '接收用户Id',
|
||||
`is_read` bit(1) DEFAULT NULL COMMENT '已读标识',
|
||||
`message_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '聊天类型',
|
||||
`text` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT '聊天内容',
|
||||
`talk_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '聊天Id',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
订单增加自提信息
|
||||
*/
|
||||
ALTER TABLE li_order ADD `store_address_path` varchar(255) DEFAULT NULL;
|
||||
ALTER TABLE li_order ADD `store_address_center` varchar(255) DEFAULT NULL;
|
||||
ALTER TABLE li_order ADD `store_address_mobile` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL;
|
||||
|
||||
/**
|
||||
店铺是否开启自提
|
||||
*/
|
||||
ALTER TABLE li_store ADD `self_pick_flag` bit(1) DEFAULT NULL;
|
||||
/**
|
||||
历史足迹增加店铺Id
|
||||
*/
|
||||
ALTER TABLE li_foot_print ADD `store_id` varchar(255) DEFAULT NULL COMMENT '店铺ID';
|
||||
|
||||
|
||||
|
||||
/**
|
||||
用户提现申请增加字段
|
||||
*/
|
||||
ALTER TABLE li_member_withdraw_apply ADD `real_name` varchar(255) DEFAULT NULL;
|
||||
ALTER TABLE li_member_withdraw_apply ADD `connect_number` varchar(255) DEFAULT NULL;
|
||||
ALTER TABLE li_member_withdraw_apply ADD `error_message` text DEFAULT NULL;
|
||||
173
DB/version4.3to4.4.sql
Normal file
173
DB/version4.3to4.4.sql
Normal file
@@ -0,0 +1,173 @@
|
||||
CREATE TABLE `li_file_directory`
|
||||
(
|
||||
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
`create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '创建者',
|
||||
`update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
`update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '更新者',
|
||||
`delete_flag` tinyint(1) NULL DEFAULT 0 COMMENT '删除标志 true/false 删除/未删除',
|
||||
`directory_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '文件目录类型',
|
||||
`directory_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '拥有者名称',
|
||||
`owner_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '拥有者id',
|
||||
`parent_id` bigint NULL DEFAULT NULL COMMENT '父分类ID',
|
||||
`level` int NULL DEFAULT NULL COMMENT '层级',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE = InnoDB
|
||||
AUTO_INCREMENT = 1698937596963311619
|
||||
CHARACTER SET = utf8mb4
|
||||
COLLATE = utf8mb4_0900_ai_ci COMMENT = '文件夹'
|
||||
ROW_FORMAT = DYNAMIC;
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
||||
ALTER TABLE li_file
|
||||
ADD file_directory_id varchar(255) COMMENT '文件夹ID';
|
||||
|
||||
/**
|
||||
订单包裹
|
||||
*/
|
||||
CREATE TABLE `li_order_package` (
|
||||
`id` bigint NOT NULL COMMENT 'ID',
|
||||
`create_by` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime(6) DEFAULT NULL COMMENT '创建时间',
|
||||
`delete_flag` bit(1) DEFAULT NULL COMMENT '是否删除',
|
||||
`update_by` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '修改者',
|
||||
`update_time` datetime(6) DEFAULT NULL COMMENT '修改时间',
|
||||
`package_no` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '包裹单号',
|
||||
`order_sn` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '订单编号',
|
||||
`logistics_no` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '发货单号',
|
||||
`logistics_code` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '物流公司CODE',
|
||||
`logistics_name` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '物流公司名称',
|
||||
`consignee_mobile` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '收件人手机',
|
||||
`status` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '状态',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin ROW_FORMAT=DYNAMIC;
|
||||
|
||||
/**
|
||||
分包货物
|
||||
*/
|
||||
CREATE TABLE `li_order_package_item` (
|
||||
`id` bigint NOT NULL COMMENT 'ID',
|
||||
`create_by` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime(6) DEFAULT NULL COMMENT '创建时间',
|
||||
`delete_flag` bit(1) DEFAULT NULL COMMENT '是否删除',
|
||||
`update_by` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '修改者',
|
||||
`update_time` datetime(6) DEFAULT NULL COMMENT '修改时间',
|
||||
`package_no` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '包裹单号',
|
||||
`order_sn` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '订单编号',
|
||||
`order_item_sn` varchar(255) COLLATE utf8mb3_bin DEFAULT NULL COMMENT '子订单编号',
|
||||
`deliver_number` int DEFAULT NULL COMMENT '发货数量',
|
||||
`logistics_time` datetime(6) DEFAULT NULL COMMENT '发货时间',
|
||||
`goods_name` varchar(255) COLLATE utf8mb3_bin DEFAULT NULL,
|
||||
`thumbnail` varchar(255) COLLATE utf8mb3_bin DEFAULT NULL,
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin ROW_FORMAT=DYNAMIC;
|
||||
|
||||
/*
|
||||
订单货物增加发货数量
|
||||
*/
|
||||
ALTER TABLE li_order_item ADD `deliver_number` int DEFAULT NULL COMMENT '发货数量';
|
||||
|
||||
/*
|
||||
sku增加预警库存
|
||||
*/
|
||||
ALTER TABLE li_goods_sku ADD `alert_quantity` int DEFAULT NULL COMMENT '预警库存';
|
||||
/*
|
||||
增加库存预警菜单
|
||||
*/
|
||||
INSERT INTO `lilishop`.`li_store_menu`(`id`, `create_by`, `create_time`, `delete_flag`, `update_by`, `update_time`, `description`, `front_route`, `icon`, `level`, `name`, `parent_id`, `path`, `sort_order`, `title`, `permission`) VALUES (1349237928434098177, NULL, '2022-01-11 22:35:45.000000', b'0', NULL, '2022-01-11 22:37:05', NULL, 'goods/goods-seller/alertQuantity', 'ios-american-football', 2, 'alert-goods-quantity', '1348810864748945408', 'alert-goods-quantity', '1.14', '库存预警', NULL);
|
||||
|
||||
/**
|
||||
交易唤醒表,增加交易流水详情
|
||||
*/
|
||||
ALTER TABLE li_order_item ADD `is_refund` varchar(255) DEFAULT NULL COMMENT '是否退款';
|
||||
|
||||
/**
|
||||
交易表增加订单状态字段
|
||||
*/
|
||||
ALTER TABLE li_order_item ADD `refund_price` decimal(10,2) DEFAULT NULL COMMENT '退款金额';
|
||||
|
||||
/**
|
||||
结算单表,增加砍价/积分退款金额字段
|
||||
*/
|
||||
ALTER TABLE li_bill ADD `point_refund_settlement_price` decimal(10,2) DEFAULT NULL COMMENT '退货积分补贴返还';
|
||||
ALTER TABLE li_bill ADD `kanjia_refund_settlement_price` decimal(10,2) DEFAULT NULL COMMENT '退货砍价补贴返还';
|
||||
|
||||
UPDATE li_bill b
|
||||
SET b.point_refund_settlement_price =IFNULL((
|
||||
SELECT
|
||||
SUM( point_settlement_price )
|
||||
FROM
|
||||
li_store_flow sf
|
||||
WHERE
|
||||
sf.flow_type = 'REFUND'
|
||||
AND sf.store_id=b.store_id
|
||||
AND sf.create_time BETWEEN b.start_time
|
||||
AND b.end_time),0);
|
||||
|
||||
UPDATE li_bill b
|
||||
SET b.kanjia_refund_settlement_price =IFNULL((
|
||||
SELECT
|
||||
SUM( kanjia_settlement_price )
|
||||
FROM
|
||||
li_store_flow sf
|
||||
WHERE
|
||||
sf.flow_type = 'REFUND'
|
||||
AND sf.store_id=b.store_id
|
||||
AND sf.create_time BETWEEN b.start_time
|
||||
AND b.end_time),0);
|
||||
|
||||
/**
|
||||
文件表增加拥有者名称
|
||||
*/
|
||||
ALTER TABLE li_file ADD `owner_name` varchar(255) DEFAULT NULL COMMENT '拥有者名称';
|
||||
|
||||
/**
|
||||
初始化文件拥有者名称
|
||||
*/
|
||||
UPDATE li_file f JOIN li_store s ON f.owner_id = s.id
|
||||
SET f.owner_name = s.store_name
|
||||
WHERE user_enums = 'STORE';
|
||||
|
||||
UPDATE li_file f JOIN li_admin_user a ON f.owner_id = a.id
|
||||
SET f.owner_name = a.nick_name
|
||||
WHERE user_enums = 'MANAGER';
|
||||
|
||||
UPDATE li_file f JOIN li_member m ON f.owner_id = m.id
|
||||
SET f.owner_name = m.nick_name
|
||||
WHERE user_enums = 'MEMBER';
|
||||
|
||||
ALTER TABLE `li_order`
|
||||
ADD COLUMN `seller_remark` varchar(255) NULL COMMENT '商家订单备注' AFTER `remark`;
|
||||
|
||||
|
||||
ALTER TABLE `li_distribution_cash`
|
||||
ADD COLUMN `name` varchar(255) NULL COMMENT '会员姓名';
|
||||
ALTER TABLE `li_distribution_cash`
|
||||
ADD COLUMN `id_number` varchar(255) NULL COMMENT '身份证号' ;
|
||||
ALTER TABLE `li_distribution_cash`
|
||||
ADD COLUMN `settlement_bank_account_name` varchar(255) NULL COMMENT '结算银行开户行名称' ;
|
||||
ALTER TABLE `li_distribution_cash`
|
||||
ADD COLUMN `settlement_bank_account_num` varchar(255) NULL COMMENT '结算银行开户账号' ;
|
||||
ALTER TABLE `li_distribution_cash`
|
||||
ADD COLUMN `settlement_bank_branch_name` varchar(255) NULL COMMENT '结算银行开户支行名称' ;
|
||||
|
||||
ALTER TABLE `li_distribution` ADD `distribution_order_price` decimal(10,2) DEFAULT NULL COMMENT '分销订单金额';
|
||||
|
||||
ALTER TABLE `li_distribution_order` ADD `refund_num` int DEFAULT NULL COMMENT '退款商品数量';
|
||||
|
||||
ALTER TABLE `li_store_flow` ADD `bill_time` datetime(6) DEFAULT NULL COMMENT '结算时间';
|
||||
ALTER TABLE `li_store_flow` ADD `full_refund` bit(1) DEFAULT NULL COMMENT '是否全部退款';
|
||||
ALTER TABLE `li_store_flow` ADD `profit_sharing_status` varchar(255) NULL COMMENT '分账状态';
|
||||
ALTER TABLE `li_store_flow` ADD `profit_sharing` varchar(255) NULL COMMENT '分账详情';
|
||||
|
||||
|
||||
|
||||
INSERT INTO `lilishop`.`li_setting` (`id`, `create_by`, `create_time`, `delete_flag`, `update_by`, `update_time`, `setting_value`) VALUES ('CONNECT_SETTING', 'admin', '2024-07-07 13:55:38.686000', b'0', NULL, NULL, '{\"callbackUrl\":\"https://buyer-api.pickmall.cn\",\"pc\":\"https://pc-b2b2c.pickmall.cn\",\"wap\":\"https://m-b2b2c.pickmall.cn\"}');
|
||||
UPDATE `lilishop`.`li_setting` SET `create_by` = 'admin', `create_time` = '2021-01-23 02:18:03.299000', `delete_flag` = b'0', `update_by` = 'admin', `update_time` = '2024-07-07 13:53:44.732000', `setting_value` = '{\"accessKeyId\":\"test\",\"tencentSdkAppId\":\"null\",\"registerTemplateCode\":\"SMS_205755298\",\"huaweiSender\":\"null\",\"signName\":\"lili\",\"tencentSecretId\":\"null\",\"huaweiAppKey\":\"null\",\"isTestModel\":\"true\",\"tencentSecretKey\":\"null\",\"type\":\"ALI\",\"accessSecret\":\"test\",\"tencentSignName\":\"null\",\"huaweiSignature\":\"null\",\"payPasswordTemplateCode\":\"SMS_205755301\",\"walletPasswordTemplateCode\":\"SMS_205755297\",\"findPasswordTemplateCode\":\"SMS_205755301\",\"huaweiAppSecret\":\"null\",\"loginTemplateCode\":\"SMS_205755300\"}' WHERE `id` = 'SMS_SETTING';
|
||||
|
||||
|
||||
|
||||
ALTER TABLE li_store_logistics ADD `partner_name` varchar(255) DEFAULT NULL COMMENT '电子面单客户账户名称';
|
||||
|
||||
|
||||
143
LICENSE
143
LICENSE
@@ -1,5 +1,5 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
GNU AFFERO GENERAL PUBLIC LICENSE
|
||||
Version 3, 19 November 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
@@ -7,17 +7,15 @@
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
The GNU Affero General Public License is a free, copyleft license for
|
||||
software and other kinds of works, specifically designed to ensure
|
||||
cooperation with the community in the case of network server software.
|
||||
|
||||
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
|
||||
our General Public Licenses are 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.
|
||||
software for all its users.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
@@ -26,44 +24,34 @@ 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.
|
||||
Developers that use our General Public Licenses protect your rights
|
||||
with two steps: (1) assert copyright on the software, and (2) offer
|
||||
you this License which gives you legal permission to copy, distribute
|
||||
and/or modify the software.
|
||||
|
||||
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.
|
||||
A secondary benefit of defending all users' freedom is that
|
||||
improvements made in alternate versions of the program, if they
|
||||
receive widespread use, become available for other developers to
|
||||
incorporate. Many developers of free software are heartened and
|
||||
encouraged by the resulting cooperation. However, in the case of
|
||||
software used on network servers, this result may fail to come about.
|
||||
The GNU General Public License permits making a modified version and
|
||||
letting the public access it on a server without ever releasing its
|
||||
source code to the public.
|
||||
|
||||
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.
|
||||
The GNU Affero General Public License is designed specifically to
|
||||
ensure that, in such cases, the modified source code becomes available
|
||||
to the community. It requires the operator of a network server to
|
||||
provide the source code of the modified version running there to the
|
||||
users of that server. Therefore, public use of a modified version, on
|
||||
a publicly accessible server, gives the public access to the source
|
||||
code of the modified version.
|
||||
|
||||
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.
|
||||
An older license, called the Affero General Public License and
|
||||
published by Affero, was designed to accomplish similar goals. This is
|
||||
a different license, not a version of the Affero GPL, but Affero has
|
||||
released a new version of the Affero GPL which permits relicensing under
|
||||
this license.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
@@ -72,7 +60,7 @@ modification follow.
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
"This License" refers to version 3 of the GNU Affero General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
@@ -549,35 +537,45 @@ 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.
|
||||
13. Remote Network Interaction; Use with the GNU General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, if you modify the
|
||||
Program, your modified version must prominently offer all users
|
||||
interacting with it remotely through a computer network (if your version
|
||||
supports such interaction) an opportunity to receive the Corresponding
|
||||
Source of your version by providing access to the Corresponding Source
|
||||
from a network server at no charge, through some standard or customary
|
||||
means of facilitating copying of software. This Corresponding Source
|
||||
shall include the Corresponding Source for any work covered by version 3
|
||||
of the GNU General Public License that is incorporated pursuant to the
|
||||
following paragraph.
|
||||
|
||||
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
|
||||
under version 3 of the GNU 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.
|
||||
but the work with which it is combined will remain governed by version
|
||||
3 of the GNU General Public License.
|
||||
|
||||
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
|
||||
the GNU Affero 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
|
||||
Program specifies that a certain numbered version of the GNU Affero 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
|
||||
GNU Affero 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
|
||||
versions of the GNU Affero 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.
|
||||
|
||||
@@ -635,40 +633,29 @@ the "copyright" line and a pointer to where the full notice is found.
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
it under the terms of the GNU Affero 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.
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
<program> Copyright (C) <year> <name of author>
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, your program's commands
|
||||
might be different; for a GUI interface, you would use an "about box".
|
||||
If your software can interact with users remotely through a computer
|
||||
network, you should also make sure that it provides a way for users to
|
||||
get its source. For example, if your program is a web application, its
|
||||
interface could display a "Source" link that leads users to an archive
|
||||
of the code. There are many ways you could offer source, and different
|
||||
solutions will be better for different programs; see section 13 for the
|
||||
specific requirements.
|
||||
|
||||
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
|
||||
For more information on this, and how to apply and follow the GNU AGPL, see
|
||||
<http://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||
|
||||
286
README.md
286
README.md
@@ -1,210 +1,166 @@
|
||||
## 🔥 Lilishop B2B2C商城系统
|
||||
# Lilishop B2B2C 商城系统
|
||||
|
||||
##### 🌹 开源不易,如有帮助请点Star
|
||||
[](https://github.com/hongyehuicheng/lilishop)
|
||||
[](https://gitee.com/beijing_hongye_huicheng/lilishop)
|
||||
[](https://www.gnu.org/licenses/agpl-3.0.html)
|
||||
[](https://spring.io/projects/spring-boot)
|
||||
[](https://vuejs.org/)
|
||||
[](https://uniapp.dcloud.io/)
|
||||
|
||||
---
|
||||
|
||||
### 1. 项目简介
|
||||
|
||||
#### 欢迎交流需求,交流业务,交流技术(基础问题自行解决,进群先看文档后提问)
|
||||
**Lilishop** 是一款功能完善的B2B2C多商户商城系统,采用前后端分离架构,全端代码开源。后端基于 **SpringBoot** 构建,具备高内聚、低耦合的特性,支持分布式部署。前端覆盖PC、H5、小程序和APP,基于 **Vue** 和 **uni-app** 开发。
|
||||
|
||||
##### 交流 qq 1群 961316482(已满)
|
||||
- **官方网站**: <https://pickmall.cn>
|
||||
- **官方文档**: <https://docs.pickmall.cn>
|
||||
- **Gitee 仓库**: <https://gitee.com/beijing_hongye_huicheng/lilishop>
|
||||
- **GitHub 仓库**: <https://github.com/lilishop/lilishop>
|
||||
|
||||
##### 交流 qq 2群 875294241
|
||||
> **聚合版**: 为简化部署,我们提供了API聚合版,仅需启动单个JAR包即可运行。详情请访问:[lilishop-simplify](https://gitee.com/beijing_hongye_huicheng/lilishop-simplify)
|
||||
|
||||
---
|
||||
|
||||
### 2. 核心特性
|
||||
|
||||
##### 体验 公众号/小程序/APP 体验,扫描二维码
|
||||
- **全端覆盖**: 一套代码库支持PC、H5、小程序、APP,降低开发和维护成本。
|
||||
- **商家入驻**: 支持多商家入驻,构建平台化电商生态。
|
||||
- **分布式架构**: 后端API服务化,支持独立部署和弹性伸缩。
|
||||
- **前后端分离**: 清晰的职责划分,便于团队协作和独立开发。
|
||||
- **容器化支持**: 提供Docker镜像和docker-compose配置,实现一键部署。
|
||||
- **功能完善**: 涵盖会员、订单、商品、促销、店铺、运营、统计等完整电商业务模块。
|
||||
|
||||

|
||||
---
|
||||
|
||||
[](https://gitee.com/beijing_hongye_huicheng/lilishop/stargazers)
|
||||

|
||||
### 3. 在线演示
|
||||
|
||||
**注意**: 演示站手机验证码统一为 `111111`。演示环境部署于 `master` 分支。
|
||||
|
||||
### 🔥 商城介绍
|
||||
**官网**:https://pickmall.cn
|
||||
- **平台管理端**: <https://admin-b2b2c.pickmall.cn>
|
||||
- 账号: `admin`
|
||||
- 密码: `123456`
|
||||
- **店铺管理端**: <https://store-b2b2c.pickmall.cn>
|
||||
- 账号: `13011111111`
|
||||
- 密码: `111111`
|
||||
- **商城PC端**: <https://pc-b2b2c.pickmall.cn>
|
||||
- **移动端 (H5/小程序/APP)**:
|
||||

|
||||
|
||||
Lilishop商城系统支持商家入驻,后端基于SpringBoot 研发,前端使用 Vue、uniapp开发, **系统全端全部代码开源**
|
||||
---
|
||||
|
||||
商城前后端分离,支持分布式部署,各个API独立,并且有独立的消费者。
|
||||
### 4. 快速开始
|
||||
|
||||
商城包含 会员模块、**第三方登录模块**、**第三方支付模块**、**楼层装修模块**、订单模块、商品模块、促销模块、分销模块、文章模块、系统设置模块、流量分析模块和平台运营模块
|
||||
#### 环境准备与部署
|
||||
详细的本地部署指南,请参考官方文档:
|
||||
[**部署文档 -> 环境准备**](https://docs.pickmall.cn/deploy/%E8%BF%90%E8%A1%8C%E7%8E%AF%E5%A2%83%E5%87%86%E5%A4%87.html)
|
||||
|
||||
商城包含各种中间件、搜索引擎、多级缓存、分布式事务、分布式任务调度等,支持Docker,支持k8s。是一款高性能、支持分布式、支持扩展的商城系统。
|
||||
#### 数据库初始化
|
||||
- **推荐方式**: 使用项目提供的 `docker-compose` 配置,可自动完成数据库(MySQL, Redis, Elasticsearch等)的部署与初始化。
|
||||
- **手动方式**: 如果您选择手动部署,SQL脚本位于以下地址。请确保获取与您代码版本一致的SQL文件。
|
||||
[**数据库脚本 (Gitee)**](https://gitee.com/beijing_hongye_huicheng/docker/tree/master/init/mysql)
|
||||
|
||||
### 商城 API/消费者 聚合版
|
||||
api不需要单独部署,只需启动一个jar包就可以正常运转 如有需要,可以点击跳转
|
||||
https://gitee.com/beijing_hongye_huicheng/lilishop-simplify
|
||||
---
|
||||
|
||||
### ☃️ 商城 开发/使用/常见问题 帮助文档
|
||||
### 5. 技术架构
|
||||
|
||||
https://docs.pickmall.cn
|
||||
#### 5.1 架构图
|
||||

|
||||
|
||||
### 💧 开源商城项目地址(gitee)
|
||||
#### 5.2 后端技术栈
|
||||
|
||||
**API(商城所有API)**:https://gitee.com/beijing_hongye_huicheng/lilishop.git
|
||||
| 技术 | 选型 | 备注/用途 |
|
||||
| :-------------- | :-------------- | :--------- |
|
||||
| 核心框架 | Spring Boot | 简化应用开发 |
|
||||
| ORM框架 | Mybatis-Plus | 数据持久化 |
|
||||
| 数据库 | MySQL | 关系型数据存储 |
|
||||
| 消息队列 | RocketMQ | 异步任务与解耦 |
|
||||
| 缓存 | Redis, MongoDB | 数据缓存与存储 |
|
||||
| 搜索引擎 | Elasticsearch | 商品搜索 |
|
||||
| 安全框架 | Spring Security | 认证与授权 |
|
||||
| 分库分表 | ShardingSphere | 数据水平扩展 |
|
||||
| 定时任务 | XXL-Job | 分布式任务调度 |
|
||||
| 认证方案 | JWT | Token |
|
||||
|
||||
**UI(平台管理端/商家端/买家PC端)**: https://gitee.com/beijing_hongye_huicheng/lilishop-ui.git
|
||||
#### 5.3 前端技术栈
|
||||
|
||||
**uniapp(商城移动端,支持小程序/APP/H5)**:https://gitee.com/beijing_hongye_huicheng/lilishop-uniapp.git
|
||||
**管理端 (平台/商家)**
|
||||
|
||||
**docker一键部署(商城部署脚本)**:https://gitee.com/beijing_hongye_huicheng/docker.git
|
||||
| 技术 | 选型 | 备注/用途 |
|
||||
| :--------- | :--------- | :--------- |
|
||||
| JS框架 | Vue.js | 核心框架 |
|
||||
| UI库 | iView | 界面组件 |
|
||||
| 状态管理 | Vuex | 全局状态管理 |
|
||||
| 路由 | Vue Router | 页面路由 |
|
||||
| HTTP客户端 | axios | API请求 |
|
||||
|
||||
### 💧 开源商城项目地址(github)
|
||||
**移动端 (H5/小程序/APP)**
|
||||
|
||||
**API(商城所有API)**:https://github.com/hongyehuicheng/lilishop.git
|
||||
| 技术 | 选型 | 备注/用途 |
|
||||
| :-------- | :------ | :------------- |
|
||||
| 核心框架 | uni-app | 跨平台开发框架 |
|
||||
| UI库 | uViewUI | 丰富的组件库 |
|
||||
| CSS预处理 | SCSS | 样式开发 |
|
||||
|
||||
**UI(平台管理端/商家端/买家PC端)**: https://github.com/hongyehuicheng/lilishop-ui.git
|
||||
### 功能列表
|
||||
|
||||
**uniapp(商城移动端,支持小程序/APP/H5)**:https://github.com/hongyehuicheng/lilishop-uniapp.git
|
||||
### 6. 功能清单
|
||||
|
||||
**docker一键部署(商城部署脚本)**:https://github.com/hongyehuicheng/docker.git
|
||||
#### 6.1 平台管理端
|
||||
|
||||
| 模块 | 主要功能 |
|
||||
| :--- | :--------------------------------------------------------------------- |
|
||||
| 首页 | 数据看板、待办事项 |
|
||||
| 会员 | 会员管理、会员评价、积分管理、资金流水、充值管理 |
|
||||
| 订单 | 商品订单、虚拟订单、售后处理、订单投诉、收款与退款流水 |
|
||||
| 商品 | 商品管理、商品审核、分类、品牌、规格、计量单位管理 |
|
||||
| 促销 | 优惠券、秒杀、砍价、拼团、积分商品等营销活动 |
|
||||
| 店铺 | 店铺管理、入驻审核、结算管理、店铺对账 |
|
||||
| 运营 | 页面装修、分销管理、文章管理、意见反馈、站内信、短信配置 |
|
||||
| 统计 | 会员、订单、流量、商品销量等多维度统计 |
|
||||
| 设置 | 权限、角色、部门、管理员、系统参数、OSS、支付、物流、敏感词等基础配置 |
|
||||
|
||||
#### 6.2 商家端
|
||||
|
||||
☃️ UI 项目下3个文件夹 buyer:买家PC端,seller:商家端,manager:后台管理端
|
||||
| 模块 | 主要功能 |
|
||||
| :--- | :----------------------------------------------------------- |
|
||||
| 首页 | 店铺看板、待办事项、公告 |
|
||||
| 商品 | 商品发布、商品管理、运费模板、店铺内分类 |
|
||||
| 订单 | 订单处理、评价管理、投诉处理、退款/退货申请 |
|
||||
| 财务 | 店铺对账、结算管理、发票管理 |
|
||||
| 促销 | 优惠券、满减、秒杀、拼团、分销商品管理 |
|
||||
| 统计 | 订单统计、流量分析、商品销量排行 |
|
||||
| 设置 | 物流配送、自提点、店铺信息、PC/移动端装修、店员与权限管理 |
|
||||
|
||||
---
|
||||
|
||||
### 💧 演示地址(手机验证码为 ‘111111’)
|
||||
### 7. 界面展示
|
||||
|
||||
**平台管理端**:https://admin-b2b2c.pickmall.cn 账号:admin/123456
|
||||
#### 移动端
|
||||
<img src="https://static.pickmall.cn/images/other/app.gif" alt="移动端功能展示" width="300"/>
|
||||
|
||||
**店铺管理端**:https://store-b2b2c.pickmall.cn 账号:13011111111/111111
|
||||
#### 平台管理端
|
||||

|
||||
|
||||
**商城PC页面**:https://pc-b2b2c.pickmall.cn
|
||||
---
|
||||
|
||||
**商城移动端(请使浏览器手机模式,或者用手机浏览器打开)**:https://m-b2b2c.pickmall.cn
|
||||
### 8. 开源与授权
|
||||
|
||||
**商城 小程序/公众号/APP(支持ios、android)**:扫描二维码
|
||||
1. **开源协议**: 本项目遵循 `AGPL-3.0` 开源协议。
|
||||
2. **使用范围**: 仅允许用于个人学习、研究和非商业用途。
|
||||
3. **禁止行为**: 禁止将本项目的代码和资源用于任何形式的商业销售。
|
||||
4. **商业授权**: 如需商业使用,必须获得官方授权。授权为一次性永久授权,并提供持续的版本升级服务。详情请联系官网客服。
|
||||
5. **软件著作权**: 本软件受国家计算机软件著作权保护(登记号:2021SR0805085)。
|
||||
|
||||

|
||||
---
|
||||
|
||||
### 🚙 3行命令搭建本地商城(注:只能本机访问,前端镜像固定访问 127.0.0.1,如果是非本机体验,请自行下载源码操作镜像)
|
||||
### 9. 社区与支持
|
||||
|
||||
温馨提示:由于服务中间件较多,如果笔记本环境启动内存没有32g可能无法启动成功(macbookpro 2020 16g内存启动无法成功),台式机在16g内存、AMD 3700x 的ubuntu系统成功运行。
|
||||
我们欢迎任何形式的交流与贡献。在提问前,请先查阅 [官方文档](https://docs.pickmall.cn/) 和 [常见问题](https://docs.pickmall.cn/faq/常见问题.html),并参考 [《提问的智慧》](https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/master/README-zh_CN.md) 以便高效沟通。
|
||||
|
||||
##### docker环境安装 [点击跳转](https://docs.pickmall.cn/deploy/%E8%BF%90%E8%A1%8C%E7%8E%AF%E5%A2%83%E5%87%86%E5%A4%87.html)
|
||||
|
||||
##### 下载docker-compose脚本
|
||||
`git clone https://gitee.com/beijing_hongye_huicheng/docker.git `
|
||||
|
||||
##### 部署商城所需中间件
|
||||
`docker-compose up -d`
|
||||
|
||||
##### 部署商城应用
|
||||
`docker-compose -f docker-compose-application.yml up -d`
|
||||
|
||||
PS:商城数据库非docker部署
|
||||
https://gitee.com/beijing_hongye_huicheng/docker/tree/master/init/mysql
|
||||
|
||||
这里有与tag版本一致的sql,根据tag获取sql,如果使用master代码
|
||||
|
||||
##### 商城 API/UI 地址
|
||||
|
||||
| API | 地址 |
|
||||
| -------------- | --------------- |
|
||||
| 买家API | http://127.0.0.1:8888 |
|
||||
| 商家API | http://127.0.0.1:8889 |
|
||||
| 管理端API | http://127.0.0.1:8887 |
|
||||
| 通用API | http://127.0.0.1:8890 |
|
||||
|
||||
| 前端演示 | 地址 |
|
||||
| -------------- | --------------- |
|
||||
| 商城PC端 | http://127.0.0.1:10000 |
|
||||
| 商城H5端 | http://127.0.0.1:10001 |
|
||||
| 卖家端 | http://127.0.0.1:10002 |
|
||||
| 平台管理端 | http://127.0.0.1:10003 |
|
||||
|
||||
其他小程序/app等需自行打包。
|
||||
|
||||
|
||||
|
||||
### ⚾️ 功能列表
|
||||
|
||||
|
||||
|
||||
#### 🥎 平台管理端功能
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
#### 🥎 卖家功能
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
### 🧩 商城前端功能展示
|
||||
|
||||
#### ⚽️ 商城移动端
|
||||
|
||||
<img src="https://pickmall.cn/assets/imgs/other/app.gif" alt="移动端功能展示" style="zoom:50%;" />
|
||||
|
||||
#### ⚽️ 平台管理端
|
||||
|
||||

|
||||
|
||||
|
||||
### 技术选型
|
||||
|
||||
#### 🥅 架构图
|
||||
|
||||

|
||||
|
||||
##### 🕹 后台技术选型
|
||||
|
||||
| 说明 | 框架 | 说明 | |
|
||||
| -------------- | --------------- | -------------- | ------------- |
|
||||
| 基础框架 | Spring Boot | MVC框架 | Spring MVC |
|
||||
| 持久框架 | Mybatis-Plus | 程序构建 | Maven |
|
||||
| 关系型数据库 | MySQL | 消息中间件AMQP | RocketMQ |
|
||||
| 缓存 | Redis +MongoDB | 搜索引擎 | Elasticsearch |
|
||||
| 安全框架 | Spring Security | 数据库连接池 | Druid |
|
||||
| 数据库分库分表 | sharding | 定时任务 | xxl-job |
|
||||
| 负载均衡 | Nginx | 静态资源 | 阿里云OSS |
|
||||
| 短信 | 阿里云短信 | 认证 | JWT |
|
||||
| 日志处理 | Log4j | 接口规范 | RESTful |
|
||||
|
||||
##### 🖥 前端-运营后台、店铺后台
|
||||
|
||||
| 说明 | 框架 | 说明 | 框架 |
|
||||
| ---------- | ---------- | ---------- | ------- |
|
||||
| 构建工具 | webpack | JS版本 | ES6 |
|
||||
| 基础JS框架 | Vue.js | 视频播放器 | Dplayer |
|
||||
| 路由管理 | Vue Router | 状态管理 | Vuex |
|
||||
| 基础UI库 | iView | UI界面基于 | iView |
|
||||
| 网络请求 | axios | | |
|
||||
|
||||
##### 📱前端-移动端
|
||||
|
||||
| 说明 | 架构 | 说明 | 架构 |
|
||||
| --------- | ------- | -------- | ------- |
|
||||
| 基础UI库 | uViewui | 基础框架 | uni-app |
|
||||
| CSS预处理 | scss | 地图引擎 | amap |
|
||||
|
||||
### 🌟 版本升级
|
||||
|
||||
```
|
||||
商城后续会持续版本升级,修复bug,完善功能,覆盖更多业务场景 o2o/b2b/s2b2b2c/跨境电商
|
||||
|
||||
后续会考虑推出微服务商城系统/商城中台等
|
||||
```
|
||||
|
||||
|
||||
### ⚠️ 开源须知
|
||||
1.仅允许用于个人学习研究使用.
|
||||
|
||||
2.禁止将本开源的代码和资源进行任何形式任何名义的出售.
|
||||
|
||||
3.软件受国家计算机软件著作权保护(登记号:2021SR0805085)。
|
||||
|
||||
4.限制商用,如果需要商业使用请联系我们。QQ3409056806.
|
||||
|
||||
|
||||
### 🐧 交流群
|
||||
|
||||
##### 官方qq 1群 961316482(已满)
|
||||
##### 官方qq 2群 875294241
|
||||
- **微信交流群**:
|
||||

|
||||
|
||||
- **社区贡献内容**:
|
||||
- 清晨敲代码的分析: <https://blog.csdn.net/vaevaevae233/category_12103567.html>
|
||||
- DeepWiki: <https://deepwiki.com/lilishop/lilishop>
|
||||
@@ -32,10 +32,10 @@
|
||||
<artifactId>logstash-logback-encoder</artifactId>
|
||||
<version>${logstash-logback-encoder}</version>
|
||||
</dependency>
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>org.springframework.boot</groupId>-->
|
||||
<!-- <artifactId>spring-boot-starter-mail</artifactId>-->
|
||||
<!-- </dependency> -->
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>org.springframework.boot</groupId>-->
|
||||
<!-- <artifactId>spring-boot-starter-mail</artifactId>-->
|
||||
<!-- </dependency> -->
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
|
||||
@@ -16,5 +16,6 @@ spring.mail.username=1814994716@qq.com
|
||||
spring.mail.password=abcdefg123456!@#$%^
|
||||
# 日志文件路径
|
||||
logging.file.path=lili-logs/admin
|
||||
lili.data.logstash.server=106.124.130.167:4560
|
||||
# 文件格式
|
||||
logging.pattern.file=%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(${PID}){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wEx
|
||||
|
||||
@@ -29,6 +29,7 @@ public class BuyerApiApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
System.setProperty("es.set.netty.runtime.available.processors", "false");
|
||||
System.setProperty("rocketmq.client.logUseSlf4j","true");
|
||||
SpringApplication.run(BuyerApiApplication.class, args);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package cn.lili.controller.other.distribution;
|
||||
package cn.lili.controller.distribution;
|
||||
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
@@ -24,7 +24,7 @@ import org.springframework.web.bind.annotation.*;
|
||||
*/
|
||||
@RestController
|
||||
@Api(tags = "买家端,分销员接口")
|
||||
@RequestMapping("/buyer/distribution")
|
||||
@RequestMapping("/buyer/distribution/distribution")
|
||||
public class DistributionBuyerController {
|
||||
|
||||
/**
|
||||
@@ -1,5 +1,6 @@
|
||||
package cn.lili.controller.other.distribution;
|
||||
package cn.lili.controller.distribution;
|
||||
|
||||
import cn.lili.common.aop.annotation.PreventDuplicateSubmissions;
|
||||
import cn.lili.common.enums.ResultCode;
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.exception.ServiceException;
|
||||
@@ -13,6 +14,7 @@ import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
@@ -33,6 +35,7 @@ import javax.validation.constraints.NotNull;
|
||||
@RestController
|
||||
@Api(tags = "买家端,分销商品佣金提现接口")
|
||||
@RequestMapping("/buyer/distribution/cash")
|
||||
@Validated
|
||||
public class DistributionCashBuyerController {
|
||||
|
||||
/**
|
||||
@@ -47,15 +50,16 @@ public class DistributionCashBuyerController {
|
||||
private DistributionCashService distributorCashService;
|
||||
|
||||
|
||||
@PreventDuplicateSubmissions
|
||||
@ApiOperation(value = "分销员提现")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "price", value = "申请金额", required = true, paramType = "query", dataType = "double")
|
||||
})
|
||||
@PostMapping
|
||||
public ResultMessage<Object> cash(@Max(value = 1000, message = "提现金额单次最多允许提现1000元")
|
||||
public ResultMessage<Object> cash(@Validated @Max(value = 9999, message = "提现金额单次最多允许提现9999元")
|
||||
@Min(value = 1, message = "提现金额单次最少提现金额为1元")
|
||||
@NotNull @ApiIgnore Double price) {
|
||||
if (distributionCashService.cash(price)) {
|
||||
if (Boolean.TRUE.equals(distributionCashService.cash(price))) {
|
||||
return ResultUtil.success();
|
||||
}
|
||||
throw new ServiceException(ResultCode.ERROR);
|
||||
@@ -1,5 +1,6 @@
|
||||
package cn.lili.controller.other.distribution;
|
||||
package cn.lili.controller.distribution;
|
||||
|
||||
import cn.lili.common.aop.annotation.PreventDuplicateSubmissions;
|
||||
import cn.lili.common.enums.ResultCode;
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.exception.ServiceException;
|
||||
@@ -29,7 +30,7 @@ import javax.validation.constraints.NotNull;
|
||||
*/
|
||||
@RestController
|
||||
@Api(tags = "买家端,分销商品接口")
|
||||
@RequestMapping("/buyer/distributionGoods")
|
||||
@RequestMapping("/buyer/distribution/goods")
|
||||
public class DistributionGoodsBuyerController {
|
||||
|
||||
/**
|
||||
@@ -50,6 +51,7 @@ public class DistributionGoodsBuyerController {
|
||||
return ResultUtil.data(distributionGoodsService.goodsPage(distributionGoodsSearchParams));
|
||||
}
|
||||
|
||||
@PreventDuplicateSubmissions
|
||||
@ApiOperation(value = "选择分销商品")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "distributionGoodsId", value = "分销ID", required = true, dataType = "String", paramType = "path"),
|
||||
@@ -57,17 +59,17 @@ public class DistributionGoodsBuyerController {
|
||||
})
|
||||
@GetMapping(value = "/checked/{distributionGoodsId}")
|
||||
public ResultMessage<Object> distributionCheckGoods(
|
||||
@NotNull(message = "分销商品不能为空") @PathVariable("distributionGoodsId") String distributionGoodsId,Boolean checked) {
|
||||
Boolean result=false;
|
||||
if(checked){
|
||||
result=distributionSelectedGoodsService.add(distributionGoodsId);
|
||||
}else {
|
||||
result=distributionSelectedGoodsService.delete(distributionGoodsId);
|
||||
@NotNull(message = "分销商品不能为空") @PathVariable("distributionGoodsId") String distributionGoodsId, Boolean checked) {
|
||||
Boolean result = false;
|
||||
if (checked) {
|
||||
result = distributionSelectedGoodsService.add(distributionGoodsId);
|
||||
} else {
|
||||
result = distributionSelectedGoodsService.delete(distributionGoodsId);
|
||||
}
|
||||
//判断操作结果
|
||||
if(result){
|
||||
if (result) {
|
||||
return ResultUtil.success(ResultCode.SUCCESS);
|
||||
}else{
|
||||
} else {
|
||||
throw new ServiceException(ResultCode.ERROR);
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package cn.lili.controller.other.distribution;
|
||||
package cn.lili.controller.distribution;
|
||||
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
@@ -25,7 +25,7 @@ import java.util.List;
|
||||
*/
|
||||
@RestController
|
||||
@Api(tags = "买家端,商品分类接口")
|
||||
@RequestMapping("/buyer/category")
|
||||
@RequestMapping("/buyer/goods/category")
|
||||
public class CategoryBuyerController {
|
||||
/**
|
||||
* 商品分类
|
||||
|
||||
@@ -6,6 +6,7 @@ import cn.lili.common.exception.ServiceException;
|
||||
import cn.lili.common.vo.PageVO;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.goods.entity.dos.Goods;
|
||||
import cn.lili.modules.goods.entity.dos.GoodsSku;
|
||||
import cn.lili.modules.goods.entity.dto.GoodsSearchParams;
|
||||
import cn.lili.modules.goods.entity.vos.GoodsVO;
|
||||
import cn.lili.modules.goods.service.GoodsService;
|
||||
@@ -14,17 +15,17 @@ import cn.lili.modules.search.entity.dos.EsGoodsIndex;
|
||||
import cn.lili.modules.search.entity.dos.EsGoodsRelatedInfo;
|
||||
import cn.lili.modules.search.entity.dto.EsGoodsSearchDTO;
|
||||
import cn.lili.modules.search.service.EsGoodsSearchService;
|
||||
import cn.lili.modules.search.service.HotWordsService;
|
||||
import cn.lili.modules.statistics.aop.PageViewPoint;
|
||||
import cn.lili.modules.statistics.aop.enums.PageViewEnum;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.elasticsearch.core.SearchPage;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
@@ -43,7 +44,7 @@ import java.util.Map;
|
||||
@Slf4j
|
||||
@Api(tags = "买家端,商品接口")
|
||||
@RestController
|
||||
@RequestMapping("/buyer/goods")
|
||||
@RequestMapping("/buyer/goods/goods")
|
||||
public class GoodsBuyerController {
|
||||
|
||||
/**
|
||||
@@ -62,6 +63,9 @@ public class GoodsBuyerController {
|
||||
@Autowired
|
||||
private EsGoodsSearchService goodsSearchService;
|
||||
|
||||
@Autowired
|
||||
private HotWordsService hotWordsService;
|
||||
|
||||
@ApiOperation(value = "通过id获取商品信息")
|
||||
@ApiImplicitParam(name = "goodsId", value = "商品ID", required = true, paramType = "path", dataType = "Long")
|
||||
@GetMapping(value = "/get/{goodsId}")
|
||||
@@ -98,12 +102,17 @@ public class GoodsBuyerController {
|
||||
return ResultUtil.data(goodsService.queryByParams(goodsSearchParams));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "获取商品sku列表")
|
||||
@GetMapping("/sku")
|
||||
public ResultMessage<List<GoodsSku>> getSkuByPage(GoodsSearchParams goodsSearchParams) {
|
||||
return ResultUtil.data(goodsSkuService.getGoodsSkuByList(goodsSearchParams));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "从ES中获取商品信息")
|
||||
@GetMapping("/es")
|
||||
public ResultMessage<SearchPage<EsGoodsIndex>> getGoodsByPageFromEs(EsGoodsSearchDTO goodsSearchParams, PageVO pageVO) {
|
||||
public ResultMessage<Page<EsGoodsIndex>> getGoodsByPageFromEs(EsGoodsSearchDTO goodsSearchParams, PageVO pageVO) {
|
||||
pageVO.setNotConvert(true);
|
||||
SearchPage<EsGoodsIndex> esGoodsIndices = goodsSearchService.searchGoods(goodsSearchParams, pageVO);
|
||||
return ResultUtil.data(esGoodsIndices);
|
||||
return ResultUtil.data(goodsSearchService.searchGoodsByPage(goodsSearchParams, pageVO));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "从ES中获取相关商品品牌名称,分类名称及属性")
|
||||
@@ -117,7 +126,7 @@ public class GoodsBuyerController {
|
||||
@ApiOperation(value = "获取搜索热词")
|
||||
@GetMapping("/hot-words")
|
||||
public ResultMessage<List<String>> getGoodsHotWords(Integer count) {
|
||||
List<String> hotWords = goodsSearchService.getHotWords(count);
|
||||
List<String> hotWords = hotWordsService.getHotWords(count);
|
||||
return ResultUtil.data(hotWords);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
package cn.lili.controller.member;
|
||||
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.security.context.UserContext;
|
||||
import cn.lili.common.vo.PageVO;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.member.entity.dto.FootPrintQueryParams;
|
||||
import cn.lili.modules.member.service.FootprintService;
|
||||
import cn.lili.modules.search.entity.dos.EsGoodsIndex;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.apache.catalina.User;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@@ -23,7 +27,7 @@ import java.util.List;
|
||||
*/
|
||||
@RestController
|
||||
@Api(tags = "买家端,浏览历史接口")
|
||||
@RequestMapping("/buyer/footprint")
|
||||
@RequestMapping("/buyer/member/footprint")
|
||||
public class FootprintController {
|
||||
|
||||
/**
|
||||
@@ -34,8 +38,9 @@ public class FootprintController {
|
||||
|
||||
@ApiOperation(value = "分页获取")
|
||||
@GetMapping
|
||||
public ResultMessage<List<EsGoodsIndex>> getByPage(PageVO page) {
|
||||
return ResultUtil.data(footprintService.footPrintPage(page));
|
||||
public ResultMessage<IPage<EsGoodsIndex>> getByPage(FootPrintQueryParams params) {
|
||||
params.setMemberId(UserContext.getCurrentUser().getId());
|
||||
return ResultUtil.data(footprintService.footPrintPage(params));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "根据id删除")
|
||||
@@ -60,4 +65,10 @@ public class FootprintController {
|
||||
return ResultUtil.data(footprintService.getFootprintNum());
|
||||
}
|
||||
|
||||
|
||||
@GetMapping("/history")
|
||||
@ApiOperation(value = "获取会员的历史足迹")
|
||||
public ResultMessage<IPage<EsGoodsIndex>> getMemberHistory(FootPrintQueryParams params) {
|
||||
return ResultUtil.data(footprintService.footPrintPage(params));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
package cn.lili.controller.member;
|
||||
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.security.OperationalJudgment;
|
||||
import cn.lili.common.security.context.UserContext;
|
||||
import cn.lili.common.vo.PageVO;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.member.entity.dos.MemberAddress;
|
||||
import cn.lili.modules.member.service.MemberAddressService;
|
||||
import cn.lili.modules.system.utils.OperationalJudgment;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
@@ -26,7 +26,7 @@ import java.util.Objects;
|
||||
*/
|
||||
@RestController
|
||||
@Api(tags = "买家端,会员地址接口")
|
||||
@RequestMapping("/buyer/memberAddress")
|
||||
@RequestMapping("/buyer/member/address")
|
||||
public class MemberAddressBuyerController {
|
||||
|
||||
/**
|
||||
@@ -59,7 +59,7 @@ public class MemberAddressBuyerController {
|
||||
public ResultMessage<MemberAddress> addShippingAddress(@Valid MemberAddress shippingAddress) {
|
||||
//添加会员地址
|
||||
shippingAddress.setMemberId(Objects.requireNonNull(UserContext.getCurrentUser()).getId());
|
||||
if(shippingAddress.getIsDefault()==null){
|
||||
if(Objects.isNull(shippingAddress.getIsDefault())){
|
||||
shippingAddress.setIsDefault(false);
|
||||
}
|
||||
return ResultUtil.data(memberAddressService.saveMemberAddress(shippingAddress));
|
||||
@@ -68,6 +68,8 @@ public class MemberAddressBuyerController {
|
||||
@ApiOperation(value = "修改会员收件地址")
|
||||
@PutMapping
|
||||
public ResultMessage<MemberAddress> editShippingAddress(@Valid MemberAddress shippingAddress) {
|
||||
OperationalJudgment.judgment(memberAddressService.getById(shippingAddress.getId()));
|
||||
shippingAddress.setMemberId(Objects.requireNonNull(UserContext.getCurrentUser()).getId());
|
||||
return ResultUtil.data(memberAddressService.updateMemberAddress(shippingAddress));
|
||||
}
|
||||
|
||||
|
||||
@@ -1,96 +0,0 @@
|
||||
package cn.lili.controller.member;
|
||||
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.vo.PageVO;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.member.service.GoodsCollectionService;
|
||||
import cn.lili.modules.member.service.StoreCollectionService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* 买家端,会员收藏接口
|
||||
*
|
||||
* @author Chopper
|
||||
* @since 2020/11/17 2:32 下午
|
||||
*/
|
||||
@RestController
|
||||
@Api(tags = "买家端,会员收藏接口")
|
||||
@RequestMapping("/buyer/member/collection")
|
||||
public class MemberCollectionController {
|
||||
|
||||
/**
|
||||
* 会员商品收藏
|
||||
*/
|
||||
@Autowired
|
||||
private GoodsCollectionService goodsCollectionService;
|
||||
/**
|
||||
* 会员店铺
|
||||
*/
|
||||
@Autowired
|
||||
private StoreCollectionService storeCollectionService;
|
||||
|
||||
/**
|
||||
* 商品收藏关键字
|
||||
*/
|
||||
private String goods="GOODS";
|
||||
|
||||
@ApiOperation(value = "查询会员收藏列表")
|
||||
@ApiImplicitParam(name = "type", value = "类型", dataType = "String", paramType = "path", example = "GOODS:商品,STORE:店铺")
|
||||
@GetMapping("/{type}")
|
||||
public ResultMessage<Object> goodsList(@PathVariable String type, PageVO page) {
|
||||
if (goods.equals(type)) {
|
||||
return ResultUtil.data(goodsCollectionService.goodsCollection(page));
|
||||
}
|
||||
return ResultUtil.data(storeCollectionService.storeCollection(page));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "添加会员收藏")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "type", value = "类型", dataType = "String", paramType = "path", example = "GOODS:商品,STORE:店铺"),
|
||||
@ApiImplicitParam(name = "num", value = "值", dataType = "Long", paramType = "path")
|
||||
})
|
||||
@PostMapping("/add/{type}/{id}")
|
||||
public ResultMessage<Object> addGoodsCollection(@PathVariable String type,
|
||||
@NotNull(message = "值不能为空") @PathVariable String id) {
|
||||
if (goods.equals(type)) {
|
||||
return ResultUtil.data(goodsCollectionService.addGoodsCollection(id));
|
||||
}
|
||||
return ResultUtil.data(storeCollectionService.addStoreCollection(id));
|
||||
|
||||
}
|
||||
|
||||
@ApiOperation(value = "删除会员收藏")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "type", value = "类型", dataType = "String", paramType = "path", example = "GOODS:商品,STORE:店铺"),
|
||||
@ApiImplicitParam(name = "num", value = "值", dataType = "Long", paramType = "path")
|
||||
})
|
||||
@DeleteMapping(value = "/delete/{type}/{id}")
|
||||
public ResultMessage<Object> deleteGoodsCollection(@PathVariable String type,
|
||||
@NotNull(message = "值不能为空") @PathVariable String id) {
|
||||
if (goods.equals(type)) {
|
||||
return ResultUtil.data(goodsCollectionService.deleteGoodsCollection(id));
|
||||
}
|
||||
return ResultUtil.data(storeCollectionService.deleteStoreCollection(id));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "查询会员是否收藏")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "type", value = "类型", dataType = "String", paramType = "path", example = "GOODS:商品,STORE:店铺"),
|
||||
@ApiImplicitParam(name = "id", value = "值", dataType = "String", paramType = "path")
|
||||
})
|
||||
@GetMapping(value = "/isCollection/{type}/{id}")
|
||||
public ResultMessage<Boolean> isCollection(@PathVariable String type,
|
||||
@NotNull(message = "值不能为空") @PathVariable String id) {
|
||||
if (goods.equals(type)) {
|
||||
return ResultUtil.data(this.goodsCollectionService.isCollection(id));
|
||||
}
|
||||
return ResultUtil.data(this.storeCollectionService.isCollection(id));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
package cn.lili.controller.member;
|
||||
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.vo.PageVO;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.member.service.GoodsCollectionService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* 买家端,会员收藏接口
|
||||
*
|
||||
* @author Chopper
|
||||
* @since 2020/11/17 2:32 下午
|
||||
*/
|
||||
@RestController
|
||||
@Api(tags = "买家端,会员商品收藏接口")
|
||||
@RequestMapping("/buyer/member/collection")
|
||||
public class MemberCollectionGoodsController {
|
||||
|
||||
/**
|
||||
* 会员商品收藏
|
||||
*/
|
||||
@Autowired
|
||||
private GoodsCollectionService goodsCollectionService;
|
||||
|
||||
@ApiOperation(value = "查询会员收藏列表")
|
||||
@GetMapping("/GOODS")
|
||||
public ResultMessage<Object> goodsList(PageVO page) {
|
||||
return ResultUtil.data(goodsCollectionService.goodsCollection(page));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "添加会员收藏")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "num", value = "值", dataType = "Long", paramType = "path")
|
||||
})
|
||||
@PostMapping("/add/GOODS/{id}")
|
||||
public ResultMessage<Object> addGoodsCollection(@NotNull(message = "值不能为空") @PathVariable String id) {
|
||||
return ResultUtil.data(goodsCollectionService.addGoodsCollection(id));
|
||||
|
||||
}
|
||||
|
||||
@ApiOperation(value = "删除会员收藏")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "type", value = "类型", dataType = "String", paramType = "path", example = "GOODS:商品,STORE:店铺"),
|
||||
@ApiImplicitParam(name = "num", value = "值", dataType = "Long", paramType = "path")
|
||||
})
|
||||
@DeleteMapping(value = "/delete/GOODS/{id}")
|
||||
public ResultMessage<Object> deleteGoodsCollection(@NotNull(message = "值不能为空") @PathVariable String id) {
|
||||
return ResultUtil.data(goodsCollectionService.deleteGoodsCollection(id));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "查询会员是否收藏")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "type", value = "类型", dataType = "String", paramType = "path", example = "GOODS:商品,STORE:店铺"),
|
||||
@ApiImplicitParam(name = "id", value = "值", dataType = "String", paramType = "path")
|
||||
})
|
||||
@GetMapping(value = "/isCollection/GOODS/{id}")
|
||||
public ResultMessage<Boolean> isCollection(@NotNull(message = "值不能为空") @PathVariable String id) {
|
||||
return ResultUtil.data(this.goodsCollectionService.isCollection(id));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
package cn.lili.controller.member;
|
||||
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.vo.PageVO;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.member.service.StoreCollectionService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* 买家端,会员收藏接口
|
||||
*
|
||||
* @author Chopper
|
||||
* @since 2020/11/17 2:32 下午
|
||||
*/
|
||||
@RestController
|
||||
@Api(tags = "买家端,会员店铺收藏接口")
|
||||
@RequestMapping("/buyer/member/storeCollection")
|
||||
public class MemberCollectionStoreController {
|
||||
|
||||
/**
|
||||
* 会员店铺
|
||||
*/
|
||||
@Autowired
|
||||
private StoreCollectionService storeCollectionService;
|
||||
|
||||
@ApiOperation(value = "查询会员收藏列表")
|
||||
@GetMapping("/STORE")
|
||||
public ResultMessage<Object> goodsList(PageVO page) {
|
||||
return ResultUtil.data(storeCollectionService.storeCollection(page));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "添加会员收藏")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "num", value = "值", dataType = "Long", paramType = "path")
|
||||
})
|
||||
@PostMapping("/add/STORE/{id}")
|
||||
public ResultMessage<Object> addGoodsCollection(@NotNull(message = "值不能为空") @PathVariable String id) {
|
||||
return ResultUtil.data(storeCollectionService.addStoreCollection(id));
|
||||
|
||||
}
|
||||
|
||||
@ApiOperation(value = "删除会员收藏")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "num", value = "值", dataType = "Long", paramType = "path")
|
||||
})
|
||||
@DeleteMapping(value = "/delete/STORE/{id}")
|
||||
public ResultMessage<Object> deleteGoodsCollection(@NotNull(message = "值不能为空") @PathVariable String id) {
|
||||
return ResultUtil.data(storeCollectionService.deleteStoreCollection(id));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "查询会员是否收藏")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "id", value = "值", dataType = "String", paramType = "path")
|
||||
})
|
||||
@GetMapping(value = "/isCollection/STORE/{id}")
|
||||
public ResultMessage<Boolean> isCollection(@NotNull(message = "值不能为空") @PathVariable String id) {
|
||||
return ResultUtil.data(this.storeCollectionService.isCollection(id));
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package cn.lili.controller.member;
|
||||
|
||||
import cn.lili.common.aop.annotation.PreventDuplicateSubmissions;
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.enums.SwitchEnum;
|
||||
import cn.lili.common.security.context.UserContext;
|
||||
@@ -28,7 +29,7 @@ import javax.validation.constraints.NotNull;
|
||||
*/
|
||||
@RestController
|
||||
@Api(tags = "买家端,会员商品评价接口")
|
||||
@RequestMapping("/buyer/memberEvaluation")
|
||||
@RequestMapping("/buyer/member/evaluation")
|
||||
public class MemberEvaluationBuyerController {
|
||||
|
||||
/**
|
||||
@@ -37,16 +38,17 @@ public class MemberEvaluationBuyerController {
|
||||
@Autowired
|
||||
private MemberEvaluationService memberEvaluationService;
|
||||
|
||||
@PreventDuplicateSubmissions
|
||||
@ApiOperation(value = "添加会员评价")
|
||||
@PostMapping
|
||||
public ResultMessage<MemberEvaluationDTO> save(@Valid MemberEvaluationDTO memberEvaluationDTO) {
|
||||
return ResultUtil.data(memberEvaluationService.addMemberEvaluation(memberEvaluationDTO));
|
||||
return ResultUtil.data(memberEvaluationService.addMemberEvaluation(memberEvaluationDTO, true));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "查看会员评价详情")
|
||||
@ApiImplicitParam(name = "id", value = "评价ID", required = true, paramType = "path")
|
||||
@GetMapping(value = "/get/{id}")
|
||||
public ResultMessage<MemberEvaluationVO> save(@NotNull(message = "评价ID不能为空") @PathVariable("id") String id) {
|
||||
public ResultMessage<MemberEvaluationVO> get(@NotNull(message = "评价ID不能为空") @PathVariable("id") String id) {
|
||||
return ResultUtil.data(memberEvaluationService.queryById(id));
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package cn.lili.controller.member;
|
||||
|
||||
import cn.lili.cache.limit.annotation.LimitPoint;
|
||||
import cn.lili.common.aop.annotation.PreventDuplicateSubmissions;
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.member.entity.dos.MemberSign;
|
||||
@@ -27,6 +29,8 @@ public class MemberSignBuyerController {
|
||||
@Autowired
|
||||
private MemberSignService memberSignService;
|
||||
|
||||
|
||||
@PreventDuplicateSubmissions
|
||||
@PostMapping
|
||||
@ApiOperation(value = "会员签到")
|
||||
public ResultMessage<Boolean> memberSign() {
|
||||
|
||||
@@ -1,57 +0,0 @@
|
||||
package cn.lili.controller.member;
|
||||
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.vo.PageVO;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.system.entity.dos.ServiceNotice;
|
||||
import cn.lili.modules.system.service.ServiceNoticeService;
|
||||
import cn.lili.mybatis.util.PageUtil;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
|
||||
/**
|
||||
* 买家端,会员站服务消息接口
|
||||
*
|
||||
* @author Chopper
|
||||
* @since 2020/11/17 2:31 下午
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/service/notice")
|
||||
@Api(tags = "买家端,会员站服务消息接口")
|
||||
public class ServiceNoticeBuyerController {
|
||||
|
||||
/**
|
||||
* 服务消息
|
||||
*/
|
||||
@Autowired
|
||||
private ServiceNoticeService serviceNoticeService;
|
||||
|
||||
@ApiOperation(value = "获取消息详情")
|
||||
@ApiImplicitParam(name = "id", value = "商品ID", required = true, dataType = "Long", paramType = "path")
|
||||
@GetMapping(value = "/{id}")
|
||||
public ResultMessage<ServiceNotice> get(@PathVariable String id) {
|
||||
ServiceNotice serviceNotice = serviceNoticeService.getById(id);
|
||||
return ResultUtil.data(serviceNotice);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "分页获取服务消息")
|
||||
@GetMapping
|
||||
@ApiImplicitParam(name = "storeId", value = "商家id,默认为-1,代表平台消息,如果查询某商家发布的消息,传递商家id即可", dataType = "int", paramType = "query")
|
||||
public ResultMessage<IPage<ServiceNotice>> getByPage(PageVO page, String storeId) {
|
||||
ServiceNotice serviceNotice = new ServiceNotice();
|
||||
if (storeId == null) {
|
||||
storeId = "-1";
|
||||
}
|
||||
serviceNotice.setStoreId(storeId);
|
||||
IPage<ServiceNotice> data = serviceNoticeService.page(PageUtil.initPage(page));
|
||||
return ResultUtil.data(data);
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package cn.lili.controller.member;
|
||||
package cn.lili.controller.message;
|
||||
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.security.context.UserContext;
|
||||
@@ -23,7 +23,7 @@ import org.springframework.web.bind.annotation.*;
|
||||
*/
|
||||
@RestController
|
||||
@Api(tags = "买家端,会员站内消息接口")
|
||||
@RequestMapping("/buyer/member/message")
|
||||
@RequestMapping("/buyer/message/member")
|
||||
public class MemberMessageBuyerController {
|
||||
|
||||
/**
|
||||
@@ -1,19 +1,20 @@
|
||||
package cn.lili.controller.trade;
|
||||
package cn.lili.controller.order;
|
||||
|
||||
import cn.lili.common.aop.annotation.PreventDuplicateSubmissions;
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.security.OperationalJudgment;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.order.order.entity.dos.AfterSale;
|
||||
import cn.lili.modules.order.order.entity.dos.AfterSaleReason;
|
||||
import cn.lili.modules.order.order.entity.dto.AfterSaleDTO;
|
||||
import cn.lili.modules.order.order.entity.vo.AfterSaleApplyVO;
|
||||
import cn.lili.modules.order.order.entity.vo.AfterSaleSearchParams;
|
||||
import cn.lili.modules.order.order.entity.vo.AfterSaleVO;
|
||||
import cn.lili.modules.order.order.service.AfterSaleLogService;
|
||||
import cn.lili.modules.order.order.service.AfterSaleReasonService;
|
||||
import cn.lili.modules.order.order.service.AfterSaleService;
|
||||
import cn.lili.modules.order.trade.entity.dos.AfterSaleLog;
|
||||
import cn.lili.modules.order.aftersale.entity.dos.AfterSale;
|
||||
import cn.lili.modules.order.aftersale.entity.dos.AfterSaleLog;
|
||||
import cn.lili.modules.order.aftersale.entity.dos.AfterSaleReason;
|
||||
import cn.lili.modules.order.aftersale.entity.dto.AfterSaleDTO;
|
||||
import cn.lili.modules.order.aftersale.entity.vo.AfterSaleApplyVO;
|
||||
import cn.lili.modules.order.aftersale.entity.vo.AfterSaleSearchParams;
|
||||
import cn.lili.modules.order.aftersale.entity.vo.AfterSaleVO;
|
||||
import cn.lili.modules.order.aftersale.service.AfterSaleLogService;
|
||||
import cn.lili.modules.order.aftersale.service.AfterSaleReasonService;
|
||||
import cn.lili.modules.order.aftersale.service.AfterSaleService;
|
||||
import cn.lili.modules.store.entity.dto.StoreAfterSaleAddressDTO;
|
||||
import cn.lili.modules.system.utils.OperationalJudgment;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
@@ -35,7 +36,7 @@ import java.util.List;
|
||||
*/
|
||||
@RestController
|
||||
@Api(tags = "买家端,售后管理接口")
|
||||
@RequestMapping("/buyer/afterSale")
|
||||
@RequestMapping("/buyer/order/afterSale")
|
||||
public class AfterSaleBuyerController {
|
||||
|
||||
/**
|
||||
@@ -77,6 +78,7 @@ public class AfterSaleBuyerController {
|
||||
return ResultUtil.data(afterSaleService.getAfterSaleVO(sn));
|
||||
}
|
||||
|
||||
@PreventDuplicateSubmissions
|
||||
@PostMapping(value = "/save/{orderItemSn}")
|
||||
@ApiImplicitParam(name = "orderItemSn", value = "订单货物编号", required = true, paramType = "query")
|
||||
@ApiOperation(value = "申请售后")
|
||||
@@ -101,6 +103,7 @@ public class AfterSaleBuyerController {
|
||||
return ResultUtil.data(afterSaleService.buyerDelivery(afterSaleSn, logisticsNo, logisticsId, mDeliverTime));
|
||||
}
|
||||
|
||||
@PreventDuplicateSubmissions
|
||||
@ApiOperation(value = "售后,取消售后")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "afterSaleSn", value = "售后sn", required = true, dataType = "String", paramType = "path")
|
||||
@@ -1,8 +1,9 @@
|
||||
package cn.lili.controller.trade;
|
||||
package cn.lili.controller.order;
|
||||
|
||||
import cn.lili.common.aop.annotation.PreventDuplicateSubmissions;
|
||||
import cn.lili.common.enums.ResultCode;
|
||||
import cn.lili.common.exception.ServiceException;
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.exception.ServiceException;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.order.cart.entity.dto.TradeDTO;
|
||||
import cn.lili.modules.order.cart.entity.enums.CartTypeEnum;
|
||||
@@ -188,20 +189,38 @@ public class CartController {
|
||||
}
|
||||
}
|
||||
|
||||
@ApiOperation(value = "选择自提地址")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "storeAddressId", value = "自提地址id ", required = true, paramType = "query"),
|
||||
@ApiImplicitParam(name = "way", value = "购物车类型 ", paramType = "query")
|
||||
})
|
||||
@GetMapping("/storeAddress")
|
||||
public ResultMessage<Object> shippingSelfPickAddress(@NotNull(message = "自提地址ID不能为空") String storeAddressId,
|
||||
String way) {
|
||||
try {
|
||||
cartService.shippingSelfAddress(storeAddressId, way);
|
||||
return ResultUtil.success();
|
||||
} catch (ServiceException se) {
|
||||
log.error(ResultCode.SHIPPING_NOT_APPLY.message(), se);
|
||||
throw new ServiceException(ResultCode.SHIPPING_NOT_APPLY);
|
||||
} catch (Exception e) {
|
||||
log.error(ResultCode.CART_ERROR.message(), e);
|
||||
throw new ServiceException(ResultCode.CART_ERROR);
|
||||
}
|
||||
}
|
||||
|
||||
@ApiOperation(value = "选择配送方式")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "shippingMethod", value = "配送方式:SELF_PICK_UP(自提)," +
|
||||
"LOCAL_TOWN_DELIVERY(同城配送)," +
|
||||
"LOGISTICS(物流) ", required = true, paramType = "query"),
|
||||
@ApiImplicitParam(name = "selleId", value = "店铺id", paramType = "query"),
|
||||
@ApiImplicitParam(name = "way", value = "购物车类型 ", paramType = "query")
|
||||
})
|
||||
@GetMapping("/shippingMethod")
|
||||
@PutMapping("/shippingMethod")
|
||||
public ResultMessage<Object> shippingMethod(@NotNull(message = "配送方式不能为空") String shippingMethod,
|
||||
String selleId,
|
||||
String way) {
|
||||
try {
|
||||
cartService.shippingMethod(selleId, shippingMethod, way);
|
||||
cartService.shippingMethod( shippingMethod, way);
|
||||
return ResultUtil.success();
|
||||
} catch (ServiceException se) {
|
||||
log.error(se.getMsg(), se);
|
||||
@@ -212,6 +231,21 @@ public class CartController {
|
||||
}
|
||||
}
|
||||
|
||||
@ApiOperation(value = "获取用户可选择的物流方式")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "way", value = "购物车类型 ", paramType = "query")
|
||||
})
|
||||
@GetMapping("/shippingMethodList")
|
||||
public ResultMessage<Object> shippingMethodList(String way) {
|
||||
try {
|
||||
return ResultUtil.data(cartService.shippingMethodList(way));
|
||||
}
|
||||
catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return ResultUtil.error(ResultCode.ERROR);
|
||||
}
|
||||
}
|
||||
|
||||
@ApiOperation(value = "选择发票")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "way", value = "购物车购买:CART/立即购买:BUY_NOW/拼团购买:PINTUAN / 积分购买:POINT ", required = true, paramType = "query"),
|
||||
@@ -235,6 +269,7 @@ public class CartController {
|
||||
}
|
||||
|
||||
|
||||
@PreventDuplicateSubmissions
|
||||
@ApiOperation(value = "创建交易")
|
||||
@PostMapping(value = "/create/trade", consumes = "application/json", produces = "application/json")
|
||||
public ResultMessage<Object> crateTrade(@RequestBody TradeParams tradeParams) {
|
||||
@@ -246,7 +281,7 @@ public class CartController {
|
||||
throw se;
|
||||
} catch (Exception e) {
|
||||
log.error(ResultCode.ORDER_ERROR.message(), e);
|
||||
throw new ServiceException(ResultCode.ORDER_ERROR);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,18 +1,22 @@
|
||||
package cn.lili.controller.trade;
|
||||
package cn.lili.controller.order;
|
||||
|
||||
import cn.lili.common.aop.annotation.PreventDuplicateSubmissions;
|
||||
import cn.lili.common.enums.ResultCode;
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.exception.ServiceException;
|
||||
import cn.lili.common.security.AuthUser;
|
||||
import cn.lili.common.security.OperationalJudgment;
|
||||
import cn.lili.common.security.context.UserContext;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.order.order.entity.dos.Order;
|
||||
import cn.lili.modules.order.order.entity.dos.OrderPackage;
|
||||
import cn.lili.modules.order.order.entity.dto.OrderSearchParams;
|
||||
import cn.lili.modules.order.order.entity.enums.OrderStatusEnum;
|
||||
import cn.lili.modules.order.order.entity.vo.OrderDetailVO;
|
||||
import cn.lili.modules.order.order.entity.vo.OrderSimpleVO;
|
||||
import cn.lili.modules.order.order.service.OrderPackageService;
|
||||
import cn.lili.modules.order.order.service.OrderService;
|
||||
import cn.lili.modules.system.utils.OperationalJudgment;
|
||||
import cn.lili.modules.system.entity.vo.Traces;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
@@ -34,7 +38,7 @@ import java.util.Objects;
|
||||
*/
|
||||
@RestController
|
||||
@Api(tags = "买家端,订单接口")
|
||||
@RequestMapping("/buyer/orders")
|
||||
@RequestMapping("/buyer/order/order")
|
||||
public class OrderBuyerController {
|
||||
|
||||
/**
|
||||
@@ -43,6 +47,9 @@ public class OrderBuyerController {
|
||||
@Autowired
|
||||
private OrderService orderService;
|
||||
|
||||
@Autowired
|
||||
private OrderPackageService orderPackageService;
|
||||
|
||||
@ApiOperation(value = "查询会员订单列表")
|
||||
@GetMapping
|
||||
public ResultMessage<IPage<OrderSimpleVO>> queryMineOrder(OrderSearchParams orderSearchParams) {
|
||||
@@ -62,6 +69,7 @@ public class OrderBuyerController {
|
||||
return ResultUtil.data(orderDetailVO);
|
||||
}
|
||||
|
||||
@PreventDuplicateSubmissions
|
||||
@ApiOperation(value = "确认收货")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "orderSn", value = "订单编号", required = true, paramType = "path")
|
||||
@@ -80,6 +88,7 @@ public class OrderBuyerController {
|
||||
return ResultUtil.success();
|
||||
}
|
||||
|
||||
@PreventDuplicateSubmissions
|
||||
@ApiOperation(value = "取消订单")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "orderSn", value = "订单编号", required = true, dataType = "String", paramType = "path"),
|
||||
@@ -91,6 +100,7 @@ public class OrderBuyerController {
|
||||
return ResultUtil.success();
|
||||
}
|
||||
|
||||
@PreventDuplicateSubmissions
|
||||
@ApiOperation(value = "删除订单")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "orderSn", value = "订单编号", required = true, dataType = "String", paramType = "path")
|
||||
@@ -112,7 +122,18 @@ public class OrderBuyerController {
|
||||
return ResultUtil.data(orderService.getTraces(orderSn));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "查询地图版物流踪迹")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "orderSn", value = "订单编号", required = true, dataType = "String", paramType = "path")
|
||||
})
|
||||
@PostMapping(value = "/getMapTraces/{orderSn}")
|
||||
public ResultMessage<Object> getMapTraces(@NotBlank(message = "订单编号不能为空") @PathVariable String orderSn) {
|
||||
OperationalJudgment.judgment(orderService.getBySn(orderSn));
|
||||
return ResultUtil.data(orderService.getMapTraces(orderSn));
|
||||
}
|
||||
|
||||
|
||||
@PreventDuplicateSubmissions
|
||||
@ApiOperation(value = "开票")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "orderSn", value = "订单编号", required = true, dataType = "String", paramType = "path")
|
||||
@@ -123,5 +144,21 @@ public class OrderBuyerController {
|
||||
return ResultUtil.data(orderService.invoice(orderSn));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "查询物流踪迹")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "orderSn", value = "订单编号", required = true, dataType = "String", paramType = "path")
|
||||
})
|
||||
@GetMapping(value = "/getTracesList/{orderSn}")
|
||||
public ResultMessage<Object> getTracesList(@NotBlank(message = "订单编号不能为空") @PathVariable String orderSn) {
|
||||
return ResultUtil.data(orderPackageService.getOrderPackageVOList(orderSn));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "查看包裹列表")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "orderSn", value = "订单编号", required = true, dataType = "String", paramType = "path")
|
||||
})
|
||||
@GetMapping(value = "/getPackage/{orderSn}")
|
||||
public ResultMessage<Object> getPackage(@NotBlank(message = "订单编号不能为空") @PathVariable String orderSn) {
|
||||
return ResultUtil.data(orderPackageService.getOrderPackageVOList(orderSn));
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,9 @@
|
||||
package cn.lili.controller.trade;
|
||||
package cn.lili.controller.order;
|
||||
|
||||
import cn.lili.common.aop.annotation.PreventDuplicateSubmissions;
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.security.AuthUser;
|
||||
import cn.lili.common.security.OperationalJudgment;
|
||||
import cn.lili.common.security.context.UserContext;
|
||||
import cn.lili.common.vo.PageVO;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
@@ -13,7 +15,6 @@ import cn.lili.modules.order.order.entity.vo.OrderComplaintSearchParams;
|
||||
import cn.lili.modules.order.order.entity.vo.OrderComplaintVO;
|
||||
import cn.lili.modules.order.order.service.OrderComplaintCommunicationService;
|
||||
import cn.lili.modules.order.order.service.OrderComplaintService;
|
||||
import cn.lili.modules.system.utils.OperationalJudgment;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
@@ -33,7 +34,7 @@ import java.util.Objects;
|
||||
**/
|
||||
@RestController
|
||||
@Api(tags = "买家端,交易投诉接口")
|
||||
@RequestMapping("/buyer/complain")
|
||||
@RequestMapping("/buyer/order/complain")
|
||||
public class OrderComplaintBuyerController {
|
||||
|
||||
/**
|
||||
@@ -66,6 +67,7 @@ public class OrderComplaintBuyerController {
|
||||
|
||||
}
|
||||
|
||||
@PreventDuplicateSubmissions
|
||||
@ApiOperation(value = "添加交易投诉")
|
||||
@PostMapping
|
||||
public ResultMessage<OrderComplaint> add(@Valid OrderComplaintDTO orderComplaintDTO) {
|
||||
@@ -80,11 +82,12 @@ public class OrderComplaintBuyerController {
|
||||
@PostMapping("/communication")
|
||||
public ResultMessage<OrderComplaintCommunicationVO> addCommunication(@RequestParam String complainId, @RequestParam String content) {
|
||||
AuthUser currentUser = Objects.requireNonNull(UserContext.getCurrentUser());
|
||||
OrderComplaintCommunicationVO communicationVO = new OrderComplaintCommunicationVO(complainId, content, CommunicationOwnerEnum.BUYER.name(), currentUser.getId(), currentUser.getNickName());
|
||||
OrderComplaintCommunicationVO communicationVO = new OrderComplaintCommunicationVO(complainId, content, CommunicationOwnerEnum.BUYER.name(), currentUser.getNickName(), currentUser.getId());
|
||||
orderComplaintCommunicationService.addCommunication(communicationVO);
|
||||
return ResultUtil.data(communicationVO);
|
||||
}
|
||||
|
||||
@PreventDuplicateSubmissions
|
||||
@ApiOperation(value = "取消售后")
|
||||
@ApiImplicitParam(name = "id", value = "投诉单ID", required = true, paramType = "path")
|
||||
@PutMapping(value = "/status/{id}")
|
||||
@@ -1,5 +1,6 @@
|
||||
package cn.lili.controller.trade;
|
||||
package cn.lili.controller.order;
|
||||
|
||||
import cn.lili.common.aop.annotation.PreventDuplicateSubmissions;
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.vo.PageVO;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
@@ -41,6 +42,7 @@ public class ReceiptBuyerController {
|
||||
return ResultUtil.data(this.receiptService.getReceiptData(searchParams, pageVO));
|
||||
}
|
||||
|
||||
@PreventDuplicateSubmissions
|
||||
@ApiOperation(value = "保存发票信息")
|
||||
@PostMapping
|
||||
public ResultMessage<Receipt> save(@Valid Receipt receipt) {
|
||||
@@ -1,15 +1,16 @@
|
||||
package cn.lili.controller.trade;
|
||||
package cn.lili.controller.order;
|
||||
|
||||
import cn.lili.common.aop.annotation.PreventDuplicateSubmissions;
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.order.trade.entity.dos.Recharge;
|
||||
import cn.lili.modules.order.trade.service.RechargeService;
|
||||
import cn.lili.modules.wallet.entity.dos.Recharge;
|
||||
import cn.lili.modules.wallet.service.RechargeService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
@@ -26,18 +27,22 @@ import javax.validation.constraints.Min;
|
||||
@RestController
|
||||
@Api(tags = "买家端,预存款充值记录接口")
|
||||
@RequestMapping("/buyer/trade/recharge")
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Validated
|
||||
public class RechargeTradeBuyerController {
|
||||
|
||||
@Autowired
|
||||
private RechargeService rechargeService;
|
||||
|
||||
@PreventDuplicateSubmissions
|
||||
@PostMapping
|
||||
@ApiOperation(value = "创建余额充值订单")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "price", value = "充值金额", required = true, dataType = "double", paramType = "query")
|
||||
})
|
||||
public ResultMessage<Recharge> create(@Max(value = 10000, message = "充值金额单次最多允许充值10000元") @Min(value = 1, message = "充值金额单次最少充值金额为1元") Double price) {
|
||||
public ResultMessage<Recharge> create(
|
||||
@Max(value = 10000, message = "充值金额单次最多允许充值10000元")
|
||||
@Min(value = 1, message = "充值金额单次最少充值金额为1元")
|
||||
Double price) {
|
||||
Recharge recharge = this.rechargeService.recharge(price);
|
||||
return ResultUtil.data(recharge);
|
||||
}
|
||||
@@ -25,7 +25,7 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
*/
|
||||
@RestController
|
||||
@Api(tags = "买家端,APP版本")
|
||||
@RequestMapping("/buyer/appVersion")
|
||||
@RequestMapping("/buyer/other/appVersion")
|
||||
public class AppVersionBuyerController {
|
||||
|
||||
@Autowired
|
||||
|
||||
@@ -29,7 +29,7 @@ import java.util.List;
|
||||
*/
|
||||
@RestController
|
||||
@Api(tags = "买家端,文章接口")
|
||||
@RequestMapping("/buyer/article")
|
||||
@RequestMapping("/buyer/other/article")
|
||||
public class ArticleBuyerController {
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package cn.lili.controller.other;
|
||||
|
||||
import cn.lili.common.aop.annotation.PreventDuplicateSubmissions;
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.security.context.UserContext;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
@@ -22,7 +23,7 @@ import javax.validation.Valid;
|
||||
*/
|
||||
@RestController
|
||||
@Api(tags = "买家端,意见反馈接口")
|
||||
@RequestMapping("/buyer/feedback")
|
||||
@RequestMapping("/buyer/other/feedback")
|
||||
public class FeedbackBuyerController {
|
||||
|
||||
/**
|
||||
@@ -31,6 +32,7 @@ public class FeedbackBuyerController {
|
||||
@Autowired
|
||||
private FeedbackService feedbackService;
|
||||
|
||||
@PreventDuplicateSubmissions
|
||||
@ApiOperation(value = "添加意见反馈")
|
||||
@PostMapping()
|
||||
public ResultMessage<Object> save(@Valid Feedback feedback) {
|
||||
|
||||
@@ -21,7 +21,7 @@ import java.util.List;
|
||||
*/
|
||||
@RestController
|
||||
@Api(tags = "买家端,物流公司接口")
|
||||
@RequestMapping("/buyer/logistics")
|
||||
@RequestMapping("/buyer/other/logistics")
|
||||
public class LogisticsBuyerController {
|
||||
|
||||
@Autowired
|
||||
|
||||
@@ -2,17 +2,17 @@ package cn.lili.controller.other;
|
||||
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.page.entity.dos.PageData;
|
||||
import cn.lili.modules.page.entity.dto.PageDataDTO;
|
||||
import cn.lili.modules.page.entity.enums.PageEnum;
|
||||
import cn.lili.modules.page.entity.vos.PageDataVO;
|
||||
import cn.lili.modules.page.service.PageDataService;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
/**
|
||||
* 买家端,页面接口
|
||||
@@ -22,7 +22,7 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
*/
|
||||
@RestController
|
||||
@Api(tags = "买家端,页面接口")
|
||||
@RequestMapping("/buyer/pageData")
|
||||
@RequestMapping("/buyer/other/pageData")
|
||||
public class PageBuyerController {
|
||||
|
||||
/**
|
||||
@@ -36,12 +36,63 @@ public class PageBuyerController {
|
||||
public ResultMessage<PageDataVO> getIndex(@RequestParam String clientType) {
|
||||
PageDataDTO pageDataDTO = new PageDataDTO(PageEnum.INDEX.name());
|
||||
pageDataDTO.setPageClientType(clientType);
|
||||
return ResultUtil.data(pageService.getPageData(pageDataDTO));
|
||||
PageDataVO pageDataVO=pageService.getPageData(pageDataDTO);
|
||||
return ResultUtil.data(pageDataVO);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "获取页面数据")
|
||||
@GetMapping
|
||||
public ResultMessage<PageDataVO> get(PageDataDTO pageDataDTO) {
|
||||
return ResultUtil.data(pageService.getPageData(pageDataDTO));
|
||||
PageDataVO pageDataVO=pageService.getPageData(pageDataDTO);
|
||||
return ResultUtil.data(pageDataVO);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "获取店铺首页")
|
||||
@GetMapping("/getStore")
|
||||
public ResultMessage<PageDataVO> getShopPage(@RequestParam String clientType,String storeId) {
|
||||
PageDataDTO pageDataDTO = new PageDataDTO(PageEnum.STORE.name());
|
||||
pageDataDTO.setPageClientType(clientType);
|
||||
pageDataDTO.setNum(storeId);
|
||||
PageDataVO pageDataVO=pageService.getPageData(pageDataDTO);
|
||||
return ResultUtil.data(pageDataVO);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "获取页面数据")
|
||||
@ApiImplicitParam(name = "id", value = "id", required = true, dataType = "String", paramType = "path")
|
||||
@GetMapping("/get/{id}")
|
||||
public ResultMessage<PageData> getPage(@PathVariable("id") String id) {
|
||||
return ResultUtil.data(pageService.getSpecial(id));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "获取专题页面数据(根据消息内容得知)")
|
||||
@GetMapping("/getSpecial")
|
||||
public ResultMessage<PageData> getSpecial(@RequestParam String body) {
|
||||
String name = "";
|
||||
if (body.indexOf("』") >= 0 && body.indexOf("『") >= 0) {
|
||||
name = body.substring(body.indexOf("『") + 1, body.lastIndexOf("』"));
|
||||
} else if (body.indexOf("〉") >= 0 && body.indexOf("〈") >= 0) {
|
||||
name = body.substring(body.indexOf("〈") + 1, body.lastIndexOf("〉"));
|
||||
} else if (body.indexOf("」") >= 0 && body.indexOf("「") >= 0) {
|
||||
name = body.substring(body.indexOf("「") + 1, body.lastIndexOf("」"));
|
||||
} else if (body.indexOf("》") >= 0 && body.indexOf("《") >= 0) {
|
||||
name = body.substring(body.indexOf("《") + 1, body.lastIndexOf("》"));
|
||||
} else if (body.indexOf(")") >= 0 && body.indexOf("(") >= 0) {
|
||||
name = body.substring(body.indexOf("(") + 1, body.lastIndexOf(")"));
|
||||
} else if (body.indexOf("】") >= 0 && body.indexOf("【") >= 0) {
|
||||
name = body.substring(body.indexOf("【") + 1, body.lastIndexOf("】"));
|
||||
} else if (body.indexOf("}") >= 0 && body.indexOf("{") >= 0) {
|
||||
name = body.substring(body.indexOf("{") + 1, body.lastIndexOf("}"));
|
||||
} else if (body.indexOf("!") >= 0) {
|
||||
name = body.substring(body.indexOf("!") + 1, body.lastIndexOf("!"));
|
||||
} else if (body.indexOf("|") >= 0) {
|
||||
name = body.substring(body.indexOf("|") + 1, body.lastIndexOf("|"));
|
||||
}
|
||||
|
||||
PageData pageData = pageService.getOne(
|
||||
new LambdaQueryWrapper<PageData>()
|
||||
.eq(PageData::getPageType, PageEnum.SPECIAL.name())
|
||||
.eq(PageData::getName, name));
|
||||
return ResultUtil.data(pageData);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ package cn.lili.controller.other.broadcast;
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.vo.PageVO;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.goods.entity.dos.Studio;
|
||||
import cn.lili.modules.goods.entity.vos.StudioVO;
|
||||
import cn.lili.modules.goods.service.StudioService;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import io.swagger.annotations.Api;
|
||||
@@ -35,7 +35,7 @@ public class StudioController {
|
||||
@ApiImplicitParam(name = "status", value = "直播间状态", paramType = "query", dataType = "String")
|
||||
})
|
||||
@GetMapping
|
||||
public ResultMessage<IPage<Studio>> page(PageVO pageVO, Integer recommend, String status) {
|
||||
public ResultMessage<IPage<StudioVO>> page(PageVO pageVO, Integer recommend, String status) {
|
||||
return ResultUtil.data(studioService.studioList(pageVO, recommend, status));
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package cn.lili.controller.other.purchase;
|
||||
|
||||
import cn.lili.common.aop.annotation.PreventDuplicateSubmissions;
|
||||
import cn.lili.common.enums.ResultCode;
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.security.context.UserContext;
|
||||
@@ -29,7 +30,7 @@ import javax.validation.constraints.NotNull;
|
||||
*/
|
||||
@Api(tags = "买家端,采购接口")
|
||||
@RestController
|
||||
@RequestMapping("/buyer/purchase")
|
||||
@RequestMapping("/buyer/other/purchase/purchase")
|
||||
public class PurchaseBuyerController {
|
||||
|
||||
/**
|
||||
@@ -48,6 +49,8 @@ public class PurchaseBuyerController {
|
||||
return ResultUtil.data(goodsUnitService.page(PageUtil.initPage(pageVO)));
|
||||
}
|
||||
|
||||
|
||||
@PreventDuplicateSubmissions
|
||||
@ApiOperation(value = "添加采购单")
|
||||
@PostMapping
|
||||
public ResultMessage<PurchaseOrderVO> addPurchaseOrderVO(@RequestBody PurchaseOrderVO purchaseOrderVO) {
|
||||
@@ -74,6 +77,7 @@ public class PurchaseBuyerController {
|
||||
return ResultUtil.data(purchaseOrderService.page(purchaseOrderSearchParams));
|
||||
}
|
||||
|
||||
@PreventDuplicateSubmissions
|
||||
@ApiOperation(value = "关闭采购单")
|
||||
@ApiImplicitParam(name = "id", value = "采购单ID", required = true, dataType = "Long", paramType = "path")
|
||||
@PutMapping("/{id}")
|
||||
|
||||
@@ -27,7 +27,7 @@ import java.util.List;
|
||||
*/
|
||||
@Api(tags = "买家端,采购报价接口")
|
||||
@RestController
|
||||
@RequestMapping("/buyer/purchaseQuoted")
|
||||
@RequestMapping("/buyer/other/purchase/purchaseQuoted")
|
||||
public class PurchaseQuotedController {
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,22 +1,35 @@
|
||||
package cn.lili.controller.passport;
|
||||
|
||||
import cn.lili.common.enums.ResultCode;
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.exception.ServiceException;
|
||||
import cn.lili.common.security.AuthUser;
|
||||
import cn.lili.common.security.context.UserContext;
|
||||
import cn.lili.common.security.enums.UserEnums;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.member.entity.dos.Member;
|
||||
import cn.lili.modules.member.entity.dto.MemberEditDTO;
|
||||
import cn.lili.modules.member.entity.enums.QRCodeLoginSessionStatusEnum;
|
||||
import cn.lili.modules.member.entity.vo.QRLoginResultVo;
|
||||
import cn.lili.modules.member.service.MemberService;
|
||||
import cn.lili.modules.system.sms.SmsUtil;
|
||||
import cn.lili.modules.verification.enums.VerificationEnums;
|
||||
import cn.lili.modules.sms.SmsUtil;
|
||||
import cn.lili.modules.verification.entity.enums.VerificationEnums;
|
||||
import cn.lili.modules.verification.service.VerificationService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.context.request.async.DeferredResult;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
/**
|
||||
* 买家端,会员接口
|
||||
@@ -24,9 +37,10 @@ import javax.validation.constraints.NotNull;
|
||||
* @author Chopper
|
||||
* @since 2020/11/16 10:07 下午
|
||||
*/
|
||||
@Slf4j
|
||||
@RestController
|
||||
@Api(tags = "买家端,会员接口")
|
||||
@RequestMapping("/buyer/members")
|
||||
@RequestMapping("/buyer/passport/member")
|
||||
public class MemberBuyerController {
|
||||
|
||||
@Autowired
|
||||
@@ -37,6 +51,84 @@ public class MemberBuyerController {
|
||||
private VerificationService verificationService;
|
||||
|
||||
|
||||
@ApiOperation(value = "web-获取登录二维码")
|
||||
@PostMapping(value = "/pc_session", produces = "application/json;charset=UTF-8")
|
||||
public ResultMessage<Object> createPcSession() {
|
||||
return ResultUtil.data(memberService.createPcSession());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 长轮询:参考nacos
|
||||
*
|
||||
* @param token
|
||||
* @param beforeSessionStatus 上次记录的session状态
|
||||
* @return
|
||||
*/
|
||||
@ApiOperation(value = "web-二维码登录")
|
||||
@PostMapping(value = "/session_login/{token}", produces = "application/json;charset=UTF-8")
|
||||
public Object loginWithSession(@PathVariable("token") String token, Integer beforeSessionStatus) {
|
||||
log.info("receive login with session key {}", token);
|
||||
ResponseEntity<ResultMessage<Object>> timeoutResponseEntity =
|
||||
new ResponseEntity<>(ResultUtil.error(ResultCode.ERROR), HttpStatus.OK);
|
||||
int timeoutSecond = 20;
|
||||
DeferredResult<ResponseEntity<Object>> deferredResult = new DeferredResult<>(timeoutSecond * 1000L, timeoutResponseEntity);
|
||||
// 用于记录重试次数
|
||||
AtomicInteger retryCount = new AtomicInteger(0);
|
||||
CompletableFuture.runAsync(() -> {
|
||||
try {
|
||||
int i = 0;
|
||||
while (i < timeoutSecond) {
|
||||
QRLoginResultVo queryResult = memberService.loginWithSession(token);
|
||||
int status = queryResult.getStatus();
|
||||
if (status == beforeSessionStatus
|
||||
&& (QRCodeLoginSessionStatusEnum.WAIT_SCANNING.getCode() == status
|
||||
|| QRCodeLoginSessionStatusEnum.SCANNING.getCode() == status)) {
|
||||
//睡眠一秒种,继续等待结果
|
||||
//TimeUnit.SECONDS.sleep(1);
|
||||
|
||||
// 应用指数退避策略
|
||||
int baseSleepTime = 1000; // 基础退避时间(毫秒)
|
||||
int maxSleepTime = 10000; // 最大退避时间(毫秒)
|
||||
|
||||
int sleepTime = Math.min(maxSleepTime, baseSleepTime * (1 + retryCount.getAndIncrement()));
|
||||
int randomFactor = (int) (Math.random() * (sleepTime / 2)); // 随机化因子
|
||||
|
||||
TimeUnit.MILLISECONDS.sleep(sleepTime + randomFactor);
|
||||
} else {
|
||||
deferredResult.setResult(new ResponseEntity<>(ResultUtil.data(queryResult), HttpStatus.OK));
|
||||
break;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("获取登录状态异常,", e);
|
||||
deferredResult.setResult(new ResponseEntity<>(ResultUtil.error(ResultCode.ERROR), HttpStatus.OK));
|
||||
Thread.currentThread().interrupt();
|
||||
}
|
||||
});
|
||||
return deferredResult;
|
||||
}
|
||||
|
||||
@ApiOperation(value = "app扫码")
|
||||
@PostMapping(value = "/app_scanner", produces = "application/json;charset=UTF-8")
|
||||
public ResultMessage<Object> appScanner(String token) {
|
||||
return ResultUtil.data(memberService.appScanner(token));
|
||||
}
|
||||
|
||||
|
||||
@ApiOperation(value = "app扫码-登录确认:同意/拒绝")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "token", value = "sessionToken", required = true, paramType = "query"),
|
||||
@ApiImplicitParam(name = "code", value = "操作:0拒绝登录,1同意登录", required = true, paramType = "query")
|
||||
})
|
||||
@PostMapping(value = "/app_confirm", produces = "application/json;charset=UTF-8")
|
||||
public ResultMessage<Object> appSConfirm(String token, Integer code) {
|
||||
boolean flag = memberService.appSConfirm(token, code);
|
||||
return flag ? ResultUtil.success() : ResultUtil.error(ResultCode.ERROR);
|
||||
}
|
||||
|
||||
|
||||
@ApiOperation(value = "登录接口")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "username", value = "用户名", required = true, paramType = "query"),
|
||||
@@ -66,8 +158,37 @@ public class MemberBuyerController {
|
||||
public ResultMessage<Object> smsLogin(@NotNull(message = "手机号为空") @RequestParam String mobile,
|
||||
@NotNull(message = "验证码为空") @RequestParam String code,
|
||||
@RequestHeader String uuid) {
|
||||
smsUtil.verifyCode(mobile, VerificationEnums.LOGIN, uuid, code);
|
||||
if (smsUtil.verifyCode(mobile, VerificationEnums.LOGIN, uuid, code)) {
|
||||
return ResultUtil.data(memberService.mobilePhoneLogin(mobile));
|
||||
} else {
|
||||
throw new ServiceException(ResultCode.VERIFICATION_SMS_CHECKED_ERROR);
|
||||
}
|
||||
}
|
||||
|
||||
@ApiOperation(value = "绑定手机号")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "username", value = "用户名", required = true, paramType = "query"),
|
||||
@ApiImplicitParam(name = "mobile", value = "手机号", required = true, paramType = "query"),
|
||||
@ApiImplicitParam(name = "code", value = "验证码", required = true, paramType = "query"),
|
||||
})
|
||||
@PostMapping("/bindMobile")
|
||||
public ResultMessage<Object> bindMobile(@NotNull(message = "用户名不能为空") @RequestParam String username,
|
||||
@NotNull(message = "手机号为空") @RequestParam String mobile,
|
||||
@NotNull(message = "验证码为空") @RequestParam String code,
|
||||
@RequestHeader String uuid) {
|
||||
if (smsUtil.verifyCode(mobile, VerificationEnums.BIND_MOBILE, uuid, code)) {
|
||||
Member member = memberService.findByUsername(username);
|
||||
Member memberByMobile = memberService.findByMobile(mobile);
|
||||
if (member == null) {
|
||||
throw new ServiceException(ResultCode.USER_NOT_EXIST);
|
||||
}
|
||||
if(memberByMobile != null){
|
||||
throw new ServiceException(ResultCode.USER_MOBILE_REPEATABLE_ERROR);
|
||||
}
|
||||
return ResultUtil.data(memberService.changeMobile(member.getId(), mobile));
|
||||
} else {
|
||||
throw new ServiceException(ResultCode.VERIFICATION_SMS_CHECKED_ERROR);
|
||||
}
|
||||
}
|
||||
|
||||
@ApiOperation(value = "注册用户")
|
||||
@@ -84,8 +205,11 @@ public class MemberBuyerController {
|
||||
@RequestHeader String uuid,
|
||||
@NotNull(message = "验证码不能为空") @RequestParam String code) {
|
||||
|
||||
smsUtil.verifyCode(mobilePhone, VerificationEnums.REGISTER, uuid, code);
|
||||
if (smsUtil.verifyCode(mobilePhone, VerificationEnums.REGISTER, uuid, code)) {
|
||||
return ResultUtil.data(memberService.register(username, password, mobilePhone));
|
||||
} else {
|
||||
throw new ServiceException(ResultCode.VERIFICATION_SMS_CHECKED_ERROR);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -106,16 +230,17 @@ public class MemberBuyerController {
|
||||
@NotNull(message = "验证码为空") @RequestParam String code,
|
||||
@RequestHeader String uuid) {
|
||||
//校验短信验证码是否正确
|
||||
smsUtil.verifyCode(mobile, VerificationEnums.FIND_USER, uuid, code);
|
||||
if (smsUtil.verifyCode(mobile, VerificationEnums.FIND_USER, uuid, code)) {
|
||||
//校验是否通过手机号可获取会员,存在则将会员信息存入缓存,有效时间3分钟
|
||||
memberService.findByMobile(uuid, mobile);
|
||||
|
||||
return ResultUtil.success();
|
||||
} else {
|
||||
throw new ServiceException(ResultCode.VERIFICATION_SMS_CHECKED_ERROR);
|
||||
}
|
||||
}
|
||||
|
||||
@ApiOperation(value = "修改密码")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "mobile", value = "手机号", required = true, paramType = "query"),
|
||||
@ApiImplicitParam(name = "password", value = "是否保存登录", required = true, paramType = "query")
|
||||
})
|
||||
@PostMapping("/resetPassword")
|
||||
@@ -142,6 +267,31 @@ public class MemberBuyerController {
|
||||
return ResultUtil.data(memberService.modifyPass(password, newPassword));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "初始设置密码")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "newPassword", value = "新密码", required = true, paramType = "query")
|
||||
})
|
||||
@PutMapping("/canInitPassword")
|
||||
public ResultMessage<Object> canInitPassword() {
|
||||
return ResultUtil.data(memberService.canInitPass());
|
||||
}
|
||||
|
||||
@ApiOperation(value = "初始设置密码")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "newPassword", value = "新密码", required = true, paramType = "query")
|
||||
})
|
||||
@PutMapping("/initPassword")
|
||||
public ResultMessage<Object> initPassword(@NotNull(message = "密码不能为空") @RequestParam String password) {
|
||||
memberService.initPass(password);
|
||||
return ResultUtil.success();
|
||||
}
|
||||
|
||||
@ApiOperation(value = "注销账号")
|
||||
@PutMapping("/cancellation")
|
||||
public ResultMessage<Member> cancellation() {
|
||||
memberService.cancellation();
|
||||
return ResultUtil.success();
|
||||
}
|
||||
|
||||
@ApiOperation(value = "刷新token")
|
||||
@GetMapping("/refresh/{refreshToken}")
|
||||
@@ -149,4 +299,18 @@ public class MemberBuyerController {
|
||||
return ResultUtil.data(this.memberService.refreshToken(refreshToken));
|
||||
}
|
||||
|
||||
@GetMapping("/getImUser")
|
||||
@ApiOperation(value = "获取用户信息")
|
||||
public ResultMessage<Member> getImUser() {
|
||||
AuthUser authUser = UserContext.getCurrentUser();
|
||||
return ResultUtil.data(memberService.getById(authUser.getId()));
|
||||
}
|
||||
|
||||
@GetMapping("/getImUserDetail/{memberId}")
|
||||
@ApiImplicitParam(name = "memberId", value = "店铺Id", required = true, dataType = "String", paramType = "path")
|
||||
@ApiOperation(value = "获取用户信息")
|
||||
public ResultMessage<Member> getImUserDetail(@PathVariable String memberId) {
|
||||
return ResultUtil.data(memberService.getById(memberId));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ import java.util.List;
|
||||
*/
|
||||
@RestController
|
||||
@Api(tags = "买家端,app/小程序 联合登录")
|
||||
@RequestMapping("/buyer/connect/bind")
|
||||
@RequestMapping("/buyer/passport/connect/bind")
|
||||
public class ConnectBuyerBindController {
|
||||
|
||||
@Autowired
|
||||
|
||||
@@ -2,16 +2,16 @@ package cn.lili.controller.passport.connect;
|
||||
|
||||
|
||||
import cn.lili.common.enums.ResultCode;
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.exception.ServiceException;
|
||||
import cn.lili.common.security.token.Token;
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.utils.UuidUtils;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.connect.entity.dto.AuthCallback;
|
||||
import cn.lili.modules.connect.entity.dto.ConnectAuthUser;
|
||||
import cn.lili.modules.connect.request.AuthRequest;
|
||||
import cn.lili.modules.connect.service.ConnectService;
|
||||
import cn.lili.modules.connect.util.ConnectUtil;
|
||||
import cn.lili.modules.connect.util.UuidUtils;
|
||||
import cn.lili.modules.member.service.MemberService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
@@ -33,7 +33,7 @@ import java.io.IOException;
|
||||
@Slf4j
|
||||
@RestController
|
||||
@Api(tags = "买家端,web联合登录")
|
||||
@RequestMapping("/buyer/connect")
|
||||
@RequestMapping("/buyer/passport/connect/connect")
|
||||
public class ConnectBuyerWebController {
|
||||
|
||||
@Autowired
|
||||
@@ -47,7 +47,7 @@ public class ConnectBuyerWebController {
|
||||
|
||||
|
||||
@GetMapping("/login/web/{type}")
|
||||
@ApiOperation(value = "WEB信任登录授权")
|
||||
@ApiOperation(value = "WEB信任登录授权,包含PC、WAP")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "type", value = "登录方式:QQ,微信,微信_PC",
|
||||
allowableValues = "QQ,WECHAT,WECHAT_PC", paramType = "path")
|
||||
@@ -75,25 +75,13 @@ public class ConnectBuyerWebController {
|
||||
return connectUtil.getResult(state);
|
||||
}
|
||||
|
||||
@GetMapping("/register/auto")
|
||||
@ApiOperation(value = "WEB信任登录授权")
|
||||
public ResultMessage<Token> webAuthorize() {
|
||||
Token token = memberService.autoRegister();
|
||||
return ResultUtil.data(token);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "unionID登录")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "openId", value = "openid", required = true, paramType = "query"),
|
||||
@ApiImplicitParam(name = "type", value = "联合类型", required = true,
|
||||
allowableValues = "WECHAT,QQ,ALIPAY,WEIBO,APPLE", paramType = "query"),
|
||||
@ApiImplicitParam(name = "uniAccessToken", value = "联合登陆返回的accessToken", required = true, paramType = "query")
|
||||
})
|
||||
@GetMapping("/app/login")
|
||||
public ResultMessage<Token> unionLogin(ConnectAuthUser authUser, @RequestHeader("uuid") String uuid) {
|
||||
@ApiOperation(value = "APP-unionID登录")
|
||||
@PostMapping("/app/login")
|
||||
public ResultMessage<Token> unionLogin(@RequestBody ConnectAuthUser authUser, @RequestHeader("uuid") String uuid) {
|
||||
try {
|
||||
return ResultUtil.data(connectService.appLoginCallback(authUser, uuid));
|
||||
return ResultUtil.data(connectService.unionLoginCallback(authUser, uuid));
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
log.error("unionID登录错误", e);
|
||||
}
|
||||
return null;
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
package cn.lili.controller.passport.connect;
|
||||
|
||||
import cn.lili.common.security.token.Token;
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.security.token.Token;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.connect.entity.dto.WechatMPLoginParams;
|
||||
import cn.lili.modules.connect.service.ConnectService;
|
||||
import cn.lili.modules.message.entity.dos.WechatMPMessage;
|
||||
import cn.lili.modules.message.service.ShortLinkService;
|
||||
import cn.lili.modules.message.service.WechatMPMessageService;
|
||||
import cn.lili.modules.message.util.WechatMpCodeUtil;
|
||||
import cn.lili.modules.wechat.entity.dos.WechatMPMessage;
|
||||
import cn.lili.modules.wechat.service.WechatMPMessageService;
|
||||
import cn.lili.modules.wechat.util.WechatMpCodeUtil;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -26,7 +26,7 @@ import java.util.List;
|
||||
* @since 2021/2/19 09:28
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/buyer/mini-program")
|
||||
@RequestMapping("/buyer/passport/connect/miniProgram")
|
||||
@Api(tags = "买家端,小程序登录接口")
|
||||
public class MiniProgramBuyerController {
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ import javax.servlet.http.HttpServletResponse;
|
||||
@Slf4j
|
||||
@RestController
|
||||
@Api(tags = "买家端,收银台接口")
|
||||
@RequestMapping("/buyer/cashier")
|
||||
@RequestMapping("/buyer/payment/cashier")
|
||||
public class CashierController {
|
||||
|
||||
@Autowired
|
||||
|
||||
@@ -20,7 +20,7 @@ import javax.servlet.http.HttpServletRequest;
|
||||
*/
|
||||
@Api(tags = "买家端,退款回调")
|
||||
@RestController
|
||||
@RequestMapping("/buyer/cashier/refund")
|
||||
@RequestMapping("/buyer/payment/cashierRefund")
|
||||
public class CashierRefundController {
|
||||
|
||||
@Autowired
|
||||
|
||||
@@ -1,16 +1,22 @@
|
||||
package cn.lili.controller.member;
|
||||
package cn.lili.controller.promotion;
|
||||
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.security.AuthUser;
|
||||
import cn.lili.common.security.OperationalJudgment;
|
||||
import cn.lili.common.security.context.UserContext;
|
||||
import cn.lili.common.vo.PageVO;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.promotion.entity.dos.MemberCoupon;
|
||||
import cn.lili.modules.promotion.entity.vos.CouponSearchParams;
|
||||
import cn.lili.modules.promotion.entity.dto.CouponActivityTrigger;
|
||||
import cn.lili.modules.promotion.entity.dto.search.CouponSearchParams;
|
||||
import cn.lili.modules.promotion.entity.dto.search.MemberCouponSearchParams;
|
||||
import cn.lili.modules.promotion.entity.enums.CouponActivityTypeEnum;
|
||||
import cn.lili.modules.promotion.entity.enums.CouponGetEnum;
|
||||
import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum;
|
||||
import cn.lili.modules.promotion.entity.vos.CouponVO;
|
||||
import cn.lili.modules.promotion.service.CouponActivityService;
|
||||
import cn.lili.modules.promotion.service.CouponService;
|
||||
import cn.lili.modules.promotion.service.MemberCouponService;
|
||||
import cn.lili.modules.system.utils.OperationalJudgment;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
@@ -23,6 +29,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
@@ -42,22 +49,51 @@ public class CouponBuyerController {
|
||||
@Autowired
|
||||
private CouponService couponService;
|
||||
|
||||
/**
|
||||
* 优惠券活动
|
||||
*/
|
||||
@Autowired
|
||||
private CouponActivityService couponActivityService;
|
||||
|
||||
/**
|
||||
* 会员优惠券
|
||||
*/
|
||||
@Autowired
|
||||
private MemberCouponService memberCouponService;
|
||||
|
||||
@GetMapping("/activity")
|
||||
@ApiOperation(value = "自动领取优惠券")
|
||||
public ResultMessage<List<MemberCoupon>> activity() {
|
||||
if (UserContext.getCurrentUser() == null) {
|
||||
return ResultUtil.success();
|
||||
}
|
||||
List<MemberCoupon> memberCouponList = couponActivityService.trigger(
|
||||
CouponActivityTrigger.builder()
|
||||
.couponActivityTypeEnum(CouponActivityTypeEnum.AUTO_COUPON)
|
||||
.nickName(UserContext.getCurrentUser().getNickName())
|
||||
.userId(UserContext.getCurrentUser().getId())
|
||||
.build());
|
||||
memberCouponList.addAll(couponActivityService.trigger(
|
||||
CouponActivityTrigger.builder()
|
||||
.couponActivityTypeEnum(CouponActivityTypeEnum.SPECIFY)
|
||||
.nickName(UserContext.getCurrentUser().getNickName())
|
||||
.userId(UserContext.getCurrentUser().getId())
|
||||
.build()));
|
||||
return ResultUtil.data(memberCouponList);
|
||||
}
|
||||
|
||||
@GetMapping
|
||||
@ApiOperation(value = "获取可领取优惠券列表")
|
||||
public ResultMessage<IPage<CouponVO>> getCouponList(CouponSearchParams queryParam, PageVO page) {
|
||||
IPage<CouponVO> canUseCoupons = couponService.getCanReceiveCoupons(queryParam, page);
|
||||
queryParam.setPromotionStatus(PromotionsStatusEnum.START.name());
|
||||
queryParam.setGetType(CouponGetEnum.FREE.name());
|
||||
IPage<CouponVO> canUseCoupons = couponService.pageVOFindAll(queryParam, page);
|
||||
return ResultUtil.data(canUseCoupons);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "获取当前会员的优惠券列表")
|
||||
@GetMapping("/getCoupons")
|
||||
public ResultMessage<IPage<MemberCoupon>> getCoupons(CouponSearchParams param, PageVO pageVo) {
|
||||
public ResultMessage<IPage<MemberCoupon>> getCoupons(MemberCouponSearchParams param, PageVO pageVo) {
|
||||
AuthUser currentUser = Objects.requireNonNull(UserContext.getCurrentUser());
|
||||
param.setMemberId(currentUser.getId());
|
||||
return ResultUtil.data(memberCouponService.getMemberCoupons(param, pageVo));
|
||||
@@ -65,7 +101,7 @@ public class CouponBuyerController {
|
||||
|
||||
@ApiOperation(value = "获取当前会员的对于当前商品可使用的优惠券列表")
|
||||
@GetMapping("/canUse")
|
||||
public ResultMessage<IPage<MemberCoupon>> getCouponsByCanUse(CouponSearchParams param, Double totalPrice, PageVO pageVo) {
|
||||
public ResultMessage<IPage<MemberCoupon>> getCouponsByCanUse(MemberCouponSearchParams param, Double totalPrice, PageVO pageVo) {
|
||||
AuthUser currentUser = Objects.requireNonNull(UserContext.getCurrentUser());
|
||||
param.setMemberId(currentUser.getId());
|
||||
return ResultUtil.data(memberCouponService.getMemberCouponsByCanUse(param, totalPrice, pageVo));
|
||||
@@ -84,8 +120,7 @@ public class CouponBuyerController {
|
||||
@GetMapping("/receive/{couponId}")
|
||||
public ResultMessage<Object> receiveCoupon(@NotNull(message = "优惠券ID不能为空") @PathVariable("couponId") String couponId) {
|
||||
AuthUser currentUser = Objects.requireNonNull(UserContext.getCurrentUser());
|
||||
memberCouponService.checkCouponLimit(couponId, currentUser.getId());
|
||||
memberCouponService.receiveCoupon(couponId, currentUser.getId(), currentUser.getNickName());
|
||||
memberCouponService.receiveBuyerCoupon(couponId, currentUser.getId(), currentUser.getNickName());
|
||||
return ResultUtil.success();
|
||||
}
|
||||
|
||||
@@ -1,16 +1,20 @@
|
||||
package cn.lili.controller.promotion;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.core.text.CharSequenceUtil;
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.security.context.UserContext;
|
||||
import cn.lili.common.vo.PageVO;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.promotion.entity.dos.KanjiaActivity;
|
||||
import cn.lili.modules.promotion.entity.dos.KanjiaActivityLog;
|
||||
import cn.lili.modules.promotion.entity.dto.KanJiaActivityLogQuery;
|
||||
import cn.lili.modules.promotion.entity.dto.KanjiaActivityQuery;
|
||||
import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum;
|
||||
import cn.lili.modules.promotion.entity.vos.kanjia.*;
|
||||
import cn.lili.modules.promotion.entity.dto.search.KanJiaActivityLogQuery;
|
||||
import cn.lili.modules.promotion.entity.dto.search.KanjiaActivityGoodsParams;
|
||||
import cn.lili.modules.promotion.entity.dto.search.KanjiaActivityQuery;
|
||||
import cn.lili.modules.promotion.entity.dto.search.KanjiaActivitySearchParams;
|
||||
import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum;
|
||||
import cn.lili.modules.promotion.entity.vos.kanjia.KanjiaActivityGoodsListVO;
|
||||
import cn.lili.modules.promotion.entity.vos.kanjia.KanjiaActivityGoodsVO;
|
||||
import cn.lili.modules.promotion.entity.vos.kanjia.KanjiaActivityVO;
|
||||
import cn.lili.modules.promotion.service.KanjiaActivityGoodsService;
|
||||
import cn.lili.modules.promotion.service.KanjiaActivityLogService;
|
||||
import cn.lili.modules.promotion.service.KanjiaActivityService;
|
||||
@@ -52,9 +56,9 @@ public class KanjiaGoodsActivityBuyerController {
|
||||
@ApiOperation(value = "分页获取砍价商品")
|
||||
public ResultMessage<IPage<KanjiaActivityGoodsListVO>> kanjiaActivityGoodsPage(KanjiaActivityGoodsParams kanjiaActivityGoodsParams, PageVO page) {
|
||||
// 会员端查询到的肯定是已经开始的活动商品
|
||||
kanjiaActivityGoodsParams.setPromotionStatus(PromotionStatusEnum.START.name());
|
||||
kanjiaActivityGoodsParams.setStartTime(System.currentTimeMillis());
|
||||
kanjiaActivityGoodsParams.setEndTime(System.currentTimeMillis());
|
||||
kanjiaActivityGoodsParams.setPromotionStatus(PromotionsStatusEnum.START.name());
|
||||
// kanjiaActivityGoodsParams.setStartTime(System.currentTimeMillis());
|
||||
// kanjiaActivityGoodsParams.setEndTime(System.currentTimeMillis());
|
||||
return ResultUtil.data(kanJiaActivityGoodsService.kanjiaGoodsVOPage(kanjiaActivityGoodsParams, page));
|
||||
}
|
||||
|
||||
@@ -75,7 +79,7 @@ public class KanjiaGoodsActivityBuyerController {
|
||||
@ApiOperation(value = "获取砍价活动")
|
||||
public ResultMessage<KanjiaActivityVO> getKanJiaActivity(KanjiaActivitySearchParams kanjiaActivitySearchParams) {
|
||||
//如果是非被邀请关系则填写会员ID
|
||||
if (StrUtil.isEmpty(kanjiaActivitySearchParams.getKanjiaActivityId())) {
|
||||
if (CharSequenceUtil.isEmpty(kanjiaActivitySearchParams.getKanjiaActivityId())) {
|
||||
kanjiaActivitySearchParams.setMemberId(UserContext.getCurrentUser().getId());
|
||||
}
|
||||
return ResultUtil.data(kanJiaActivityService.getKanjiaActivityVO(kanjiaActivitySearchParams));
|
||||
|
||||
@@ -1,15 +1,14 @@
|
||||
package cn.lili.controller.promotion;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.lili.common.enums.PromotionTypeEnum;
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.vo.PageVO;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.promotion.entity.dto.PromotionGoodsDTO;
|
||||
import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum;
|
||||
import cn.lili.common.enums.PromotionTypeEnum;
|
||||
import cn.lili.modules.promotion.entity.dos.PromotionGoods;
|
||||
import cn.lili.modules.promotion.entity.dto.search.PromotionGoodsSearchParams;
|
||||
import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum;
|
||||
import cn.lili.modules.promotion.entity.vos.PintuanMemberVO;
|
||||
import cn.lili.modules.promotion.entity.vos.PintuanShareVO;
|
||||
import cn.lili.modules.promotion.entity.vos.PromotionGoodsSearchParams;
|
||||
import cn.lili.modules.promotion.service.PintuanService;
|
||||
import cn.lili.modules.promotion.service.PromotionGoodsService;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
@@ -40,14 +39,13 @@ public class PintuanBuyerController {
|
||||
|
||||
@ApiOperation(value = "获取拼团商品")
|
||||
@GetMapping
|
||||
public ResultMessage<IPage<PromotionGoodsDTO>> getPintuanCategory(String goodsName, String categoryPath, PageVO pageVo) {
|
||||
public ResultMessage<IPage<PromotionGoods>> getPintuanCategory(String goodsName, String categoryPath, PageVO pageVo) {
|
||||
PromotionGoodsSearchParams searchParams = new PromotionGoodsSearchParams();
|
||||
searchParams.setGoodsName(goodsName);
|
||||
searchParams.setPromotionType(PromotionTypeEnum.PINTUAN.name());
|
||||
searchParams.setPromotionStatus(PromotionStatusEnum.START.name());
|
||||
searchParams.setPromotionStatus(PromotionsStatusEnum.START.name());
|
||||
searchParams.setCategoryPath(categoryPath);
|
||||
searchParams.setEndTime(DateUtil.date().getTime());
|
||||
return ResultUtil.data(promotionGoodsService.getPromotionGoods(searchParams, pageVo));
|
||||
return ResultUtil.data(promotionGoodsService.pageFindAll(searchParams, pageVo));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -3,8 +3,10 @@ package cn.lili.controller.promotion;
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.vo.PageVO;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.promotion.entity.dos.PointsGoods;
|
||||
import cn.lili.modules.promotion.entity.dos.PointsGoodsCategory;
|
||||
import cn.lili.modules.promotion.entity.vos.PointsGoodsSearchParams;
|
||||
import cn.lili.modules.promotion.entity.dto.search.PointsGoodsSearchParams;
|
||||
import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum;
|
||||
import cn.lili.modules.promotion.entity.vos.PointsGoodsVO;
|
||||
import cn.lili.modules.promotion.service.PointsGoodsCategoryService;
|
||||
import cn.lili.modules.promotion.service.PointsGoodsService;
|
||||
@@ -35,8 +37,9 @@ public class PointsGoodsBuyerController {
|
||||
|
||||
@GetMapping
|
||||
@ApiOperation(value = "分页获取积分商品")
|
||||
public ResultMessage<IPage<PointsGoodsVO>> getPointsGoodsPage(PointsGoodsSearchParams searchParams, PageVO page) {
|
||||
IPage<PointsGoodsVO> pointsGoodsByPage = pointsGoodsService.getPointsGoodsByPage(searchParams, page);
|
||||
public ResultMessage<IPage<PointsGoods>> getPointsGoodsPage(PointsGoodsSearchParams searchParams, PageVO page) {
|
||||
searchParams.setPromotionStatus(PromotionsStatusEnum.START.name());
|
||||
IPage<PointsGoods> pointsGoodsByPage = pointsGoodsService.pageFindAll(searchParams, page);
|
||||
return ResultUtil.data(pointsGoodsByPage);
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
package cn.lili.controller.store;
|
||||
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.security.OperationalJudgment;
|
||||
import cn.lili.common.security.context.UserContext;
|
||||
import cn.lili.common.vo.PageVO;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.store.entity.dos.StoreAddress;
|
||||
import cn.lili.modules.store.service.StoreAddressService;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* 买家端,商家地址(自提点)接口
|
||||
*
|
||||
* @author chc
|
||||
* @since 2022/6/2114:46
|
||||
*/
|
||||
@RestController
|
||||
@Api(tags = "买家端,商家地址(自提点)接口")
|
||||
@RequestMapping("/buyer/store/address")
|
||||
public class StoreAddressBuyerController {
|
||||
|
||||
/**
|
||||
* 店铺自提点
|
||||
*/
|
||||
@Autowired
|
||||
private StoreAddressService storeAddressService;
|
||||
|
||||
@ApiOperation(value = "获取商家自提点分页")
|
||||
@ApiImplicitParam(name = "storeId", value = "店铺Id", required = true, dataType = "String", paramType = "path")
|
||||
@GetMapping("/page/{storeId}")
|
||||
public ResultMessage<IPage<StoreAddress>> get(PageVO pageVo,@PathVariable String storeId) {
|
||||
return ResultUtil.data(storeAddressService.getStoreAddress(storeId, pageVo));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "获取商家自提点信息")
|
||||
@ApiImplicitParam(name = "id", value = "自提点ID", required = true, paramType = "path")
|
||||
@GetMapping("/{id}")
|
||||
public ResultMessage<StoreAddress> get(@PathVariable String id) {
|
||||
StoreAddress address = OperationalJudgment.judgment(storeAddressService.getById(id));
|
||||
return ResultUtil.data(address);
|
||||
}
|
||||
}
|
||||
@@ -1,15 +1,18 @@
|
||||
package cn.lili.controller.store;
|
||||
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.security.AuthUser;
|
||||
import cn.lili.common.security.context.UserContext;
|
||||
import cn.lili.common.vo.PageVO;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.goods.entity.vos.StoreGoodsLabelVO;
|
||||
import cn.lili.modules.goods.service.StoreGoodsLabelService;
|
||||
import cn.lili.modules.store.entity.dos.Store;
|
||||
import cn.lili.modules.store.entity.dto.StoreBankDTO;
|
||||
import cn.lili.modules.store.entity.dto.StoreCompanyDTO;
|
||||
import cn.lili.modules.store.entity.dto.StoreOtherInfoDTO;
|
||||
import cn.lili.modules.store.entity.vos.*;
|
||||
import cn.lili.modules.store.service.StoreDetailService;
|
||||
import cn.lili.modules.store.service.StoreGoodsLabelService;
|
||||
import cn.lili.modules.store.service.StoreService;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import io.swagger.annotations.Api;
|
||||
@@ -30,7 +33,7 @@ import java.util.List;
|
||||
* @since 2020/11/17 2:32 下午
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/buyer/store")
|
||||
@RequestMapping("/buyer/store/store")
|
||||
@Api(tags = "买家端,店铺接口")
|
||||
public class StoreBuyerController {
|
||||
|
||||
@@ -56,6 +59,20 @@ public class StoreBuyerController {
|
||||
return ResultUtil.data(storeService.findByConditionPage(entity, page));
|
||||
}
|
||||
|
||||
@GetMapping("/store")
|
||||
@ApiOperation(value = "im-获取店铺信息")
|
||||
public ResultMessage<Store> getStoreUser() {
|
||||
AuthUser authUser = UserContext.getCurrentUser();
|
||||
return ResultUtil.data(storeService.getById(authUser.getStoreId()));
|
||||
}
|
||||
|
||||
@GetMapping("/store/{storeId}")
|
||||
@ApiImplicitParam(name = "storeId", value = "店铺Id", required = true, dataType = "String", paramType = "path")
|
||||
@ApiOperation(value = "im-店铺ID获取店铺信息")
|
||||
public ResultMessage<Store> getStoreUserDetail(@PathVariable String storeId) {
|
||||
return ResultUtil.data(storeService.getById(storeId));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "通过id获取店铺信息")
|
||||
@ApiImplicitParam(name = "id", value = "店铺ID", required = true, paramType = "path")
|
||||
@GetMapping(value = "/get/detail/{id}")
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package cn.lili.controller.member;
|
||||
package cn.lili.controller.wallet;
|
||||
|
||||
|
||||
import cn.lili.common.aop.annotation.PreventDuplicateSubmissions;
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.security.context.UserContext;
|
||||
import cn.lili.common.vo.PageVO;
|
||||
@@ -23,7 +24,7 @@ import org.springframework.web.bind.annotation.*;
|
||||
*/
|
||||
@RestController
|
||||
@Api(tags = "买家端,会员发票接口")
|
||||
@RequestMapping("/buyer/member/receipt")
|
||||
@RequestMapping("/buyer/wallet/receipt")
|
||||
public class MemberReceiptController {
|
||||
|
||||
@Autowired
|
||||
@@ -35,6 +36,7 @@ public class MemberReceiptController {
|
||||
return ResultUtil.data(memberReceiptService.getPage(memberReceiptVO, page));
|
||||
}
|
||||
|
||||
@PreventDuplicateSubmissions
|
||||
@ApiOperation(value = "新增会员发票")
|
||||
@PostMapping
|
||||
public ResultMessage<Object> add(MemberReceiptAddVO memberReceiptAddVO) {
|
||||
@@ -1,5 +1,6 @@
|
||||
package cn.lili.controller.member;
|
||||
package cn.lili.controller.wallet;
|
||||
|
||||
import cn.lili.common.aop.annotation.PreventDuplicateSubmissions;
|
||||
import cn.lili.common.enums.ResultCode;
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.exception.ServiceException;
|
||||
@@ -7,23 +8,29 @@ import cn.lili.common.security.AuthUser;
|
||||
import cn.lili.common.security.context.UserContext;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.member.entity.dos.Member;
|
||||
import cn.lili.modules.member.entity.dos.MemberWallet;
|
||||
import cn.lili.modules.member.entity.vo.MemberWalletVO;
|
||||
import cn.lili.modules.member.service.MemberService;
|
||||
import cn.lili.modules.member.service.MemberWalletService;
|
||||
import cn.lili.modules.verification.enums.VerificationEnums;
|
||||
import cn.lili.modules.system.entity.dos.Setting;
|
||||
import cn.lili.modules.system.entity.dto.WithdrawalSetting;
|
||||
import cn.lili.modules.system.entity.enums.SettingEnum;
|
||||
import cn.lili.modules.system.entity.vo.WithdrawalSettingVO;
|
||||
import cn.lili.modules.system.service.SettingService;
|
||||
import cn.lili.modules.verification.entity.enums.VerificationEnums;
|
||||
import cn.lili.modules.verification.service.VerificationService;
|
||||
import cn.lili.modules.wallet.entity.dos.MemberWallet;
|
||||
import cn.lili.modules.wallet.entity.vo.MemberWalletVO;
|
||||
import cn.lili.modules.wallet.service.MemberWalletService;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.google.gson.Gson;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.constraints.Max;
|
||||
import javax.validation.constraints.Min;
|
||||
import javax.validation.constraints.Pattern;
|
||||
|
||||
/**
|
||||
@@ -34,7 +41,8 @@ import javax.validation.constraints.Pattern;
|
||||
*/
|
||||
@RestController
|
||||
@Api(tags = "买家端,会员余额接口")
|
||||
@RequestMapping("/buyer/members/wallet")
|
||||
@RequestMapping("/buyer/wallet/wallet")
|
||||
@Validated
|
||||
public class MemberWalletBuyerController {
|
||||
|
||||
/**
|
||||
@@ -53,6 +61,9 @@ public class MemberWalletBuyerController {
|
||||
@Autowired
|
||||
private VerificationService verificationService;
|
||||
|
||||
@Autowired
|
||||
private SettingService settingService;
|
||||
|
||||
@GetMapping
|
||||
@ApiOperation(value = "查询会员预存款余额")
|
||||
public ResultMessage<MemberWalletVO> get() {
|
||||
@@ -63,6 +74,31 @@ public class MemberWalletBuyerController {
|
||||
throw new ServiceException(ResultCode.USER_NOT_LOGIN);
|
||||
}
|
||||
|
||||
@GetMapping(value = "/withdrawalSettingVO")
|
||||
@ApiOperation(value = "获取提现设置VO")
|
||||
public ResultMessage<Object> minPrice() {
|
||||
Setting setting = settingService.get(SettingEnum.WITHDRAWAL_SETTING.name());
|
||||
WithdrawalSetting withdrawalSetting = new Gson().fromJson(setting.getSettingValue(), WithdrawalSetting.class);
|
||||
|
||||
WithdrawalSettingVO withdrawalSettingVO = new WithdrawalSettingVO();
|
||||
withdrawalSettingVO.setMinPrice(withdrawalSetting.getMinPrice());
|
||||
withdrawalSettingVO.setFee(withdrawalSetting.getFee());
|
||||
withdrawalSettingVO.setType(withdrawalSetting.getType());
|
||||
return ResultUtil.data(withdrawalSettingVO);
|
||||
}
|
||||
|
||||
@PreventDuplicateSubmissions
|
||||
@PostMapping(value = "/withdrawal")
|
||||
@ApiOperation(value = "会员中心余额提现")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "price", value = "提现金额", required = true, dataType = "double", paramType = "query"),
|
||||
@ApiImplicitParam(name = "realName", value = "真实姓名", required = true, dataType = "String", paramType = "query"),
|
||||
@ApiImplicitParam(name = "connectNumber", value = "第三方登录账号", required = true, dataType = "String", paramType = "query")
|
||||
})
|
||||
public ResultMessage<Boolean> withdrawal(@Max(value = 9999, message = "充值金额单次最多允许提现9999元") Double price, @RequestParam String realName, @RequestParam String connectNumber) {
|
||||
return ResultUtil.data(memberWalletService.applyWithdrawal(price, realName, connectNumber));
|
||||
}
|
||||
|
||||
@PostMapping(value = "/set-password")
|
||||
@ApiOperation(value = "设置支付密码")
|
||||
@ApiImplicitParams({
|
||||
@@ -119,14 +155,4 @@ public class MemberWalletBuyerController {
|
||||
return memberWalletService.checkPassword();
|
||||
}
|
||||
|
||||
|
||||
@PostMapping(value = "/withdrawal")
|
||||
@ApiOperation(value = "会员中心余额提现")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "price", value = "提现金额", required = true, dataType = "double", paramType = "query")
|
||||
})
|
||||
public ResultMessage<Boolean> withdrawal(@Max(value = 1000, message = "充值金额单次最多允许提现1000元") @Min(value = 1, message = "充值金额单次最少提现金额为1元") Double price) {
|
||||
return ResultUtil.data(memberWalletService.applyWithdrawal(price));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,18 +1,17 @@
|
||||
package cn.lili.controller.member;
|
||||
package cn.lili.controller.wallet;
|
||||
|
||||
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.security.context.UserContext;
|
||||
import cn.lili.common.vo.PageVO;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.member.entity.dos.MemberWithdrawApply;
|
||||
import cn.lili.modules.member.entity.vo.MemberWithdrawApplyQueryVO;
|
||||
import cn.lili.modules.member.service.MemberWithdrawApplyService;
|
||||
import cn.lili.modules.wallet.entity.dos.MemberWithdrawApply;
|
||||
import cn.lili.modules.wallet.entity.vo.MemberWithdrawApplyQueryVO;
|
||||
import cn.lili.modules.wallet.service.MemberWithdrawApplyService;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
@@ -27,7 +26,6 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
@RestController
|
||||
@Api(tags = "买家端,余额提现记录接口")
|
||||
@RequestMapping("/buyer/member/withdrawApply")
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public class MemberWithdrawApplyBuyerController {
|
||||
@Autowired
|
||||
private MemberWithdrawApplyService memberWithdrawApplyService;
|
||||
@@ -1,17 +1,16 @@
|
||||
package cn.lili.controller.member;
|
||||
package cn.lili.controller.wallet;
|
||||
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.security.context.UserContext;
|
||||
import cn.lili.common.vo.PageVO;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.order.trade.entity.dos.Recharge;
|
||||
import cn.lili.modules.order.trade.entity.vo.RechargeQueryVO;
|
||||
import cn.lili.modules.order.trade.service.RechargeService;
|
||||
import cn.lili.modules.wallet.entity.dos.Recharge;
|
||||
import cn.lili.modules.wallet.service.RechargeService;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
@@ -24,8 +23,7 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
*/
|
||||
@RestController
|
||||
@Api(tags = "买家端,预存款充值记录接口")
|
||||
@RequestMapping("/buyer/member/recharge")
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@RequestMapping("/buyer/wallet/recharge")
|
||||
public class RechargeBuyerController {
|
||||
|
||||
@Autowired
|
||||
@@ -1,12 +1,12 @@
|
||||
package cn.lili.controller.trade;
|
||||
package cn.lili.controller.wallet;
|
||||
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.security.AuthUser;
|
||||
import cn.lili.common.security.context.UserContext;
|
||||
import cn.lili.common.vo.PageVO;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.order.trade.entity.dos.WalletLog;
|
||||
import cn.lili.modules.order.trade.service.WalletLogService;
|
||||
import cn.lili.modules.wallet.entity.dos.WalletLog;
|
||||
import cn.lili.modules.wallet.service.WalletLogService;
|
||||
import cn.lili.mybatis.util.PageUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
@@ -0,0 +1,30 @@
|
||||
package cn.lili.init;
|
||||
|
||||
import cn.lili.modules.search.service.EsGoodsIndexService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.ApplicationArguments;
|
||||
import org.springframework.boot.ApplicationRunner;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* @author paulG
|
||||
* @since 2022/6/9
|
||||
**/
|
||||
@Component
|
||||
@Slf4j
|
||||
public class EsGoodsIndexInitRunner implements ApplicationRunner {
|
||||
|
||||
@Autowired
|
||||
private EsGoodsIndexService esGoodsIndexService;
|
||||
|
||||
|
||||
@Override
|
||||
public void run(ApplicationArguments args) {
|
||||
try {
|
||||
esGoodsIndexService.initIndex();
|
||||
} catch (Exception e) {
|
||||
log.error("检测ES商品索引失败", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
2
buyer-api/src/main/java/cn/lili/security/BuyerAuthenticationFilter.java
Executable file → Normal file
2
buyer-api/src/main/java/cn/lili/security/BuyerAuthenticationFilter.java
Executable file → Normal file
@@ -99,7 +99,7 @@ public class BuyerAuthenticationFilter extends BasicAuthenticationFilter {
|
||||
AuthUser authUser = new Gson().fromJson(json, AuthUser.class);
|
||||
|
||||
//校验redis中是否有权限
|
||||
if (cache.hasKey(CachePrefix.ACCESS_TOKEN.getPrefix(UserEnums.MEMBER) + jwt)) {
|
||||
if (cache.hasKey(CachePrefix.ACCESS_TOKEN.getPrefix(UserEnums.MEMBER,authUser.getId()) + jwt)) {
|
||||
//构造返回信息
|
||||
List<GrantedAuthority> auths = new ArrayList<>();
|
||||
auths.add(new SimpleGrantedAuthority("ROLE_" + authUser.getRole().name()));
|
||||
|
||||
@@ -3,12 +3,19 @@ server:
|
||||
|
||||
servlet:
|
||||
context-path: /
|
||||
|
||||
tomcat:
|
||||
uri-encoding: UTF-8
|
||||
threads:
|
||||
min-spare: 50
|
||||
max: 1000
|
||||
#
|
||||
# tomcat:
|
||||
# #最大链接数,默认不设置,默认是10000
|
||||
# max-connections: 6500
|
||||
# #最大等待队列长度,允许HTTP请求缓存到请求队列的最大个数,默认不限制
|
||||
# accept-count: 1000
|
||||
# threads:
|
||||
# #最少闲置
|
||||
# min-spare: 50
|
||||
# #最大线程数 ,默认是200
|
||||
# max: 800
|
||||
netty:
|
||||
connection-timeout:
|
||||
|
||||
# 与Spring Boot 2一样,默认情况下,大多数端点都不通过http公开,我们公开了所有端点。对于生产,您应该仔细选择要公开的端点。
|
||||
management:
|
||||
@@ -43,16 +50,6 @@ spring:
|
||||
#关闭jackson 对json做解析
|
||||
fail-on-empty-beans: false
|
||||
|
||||
# mongodb
|
||||
data:
|
||||
mongodb:
|
||||
uri: 127.0.0.1:27017
|
||||
database: lilishop
|
||||
username: root
|
||||
password: lilishop
|
||||
authentication-database: admin
|
||||
# replica-set-name: mongoreplset
|
||||
|
||||
# Redis
|
||||
redis:
|
||||
host: 127.0.0.1
|
||||
@@ -79,10 +76,10 @@ spring:
|
||||
url: jdbc:mysql://127.0.0.1:3306/lilishop?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
|
||||
username: root
|
||||
password: lilishop
|
||||
maxActive: 20
|
||||
initialSize: 5
|
||||
maxActive: 50
|
||||
initialSize: 10
|
||||
maxWait: 60000
|
||||
minIdle: 5
|
||||
minIdle: 10
|
||||
timeBetweenEvictionRunsMillis: 60000
|
||||
minEvictableIdleTimeMillis: 300000
|
||||
validationQuery: SELECT 1 FROM DUAL
|
||||
@@ -120,7 +117,7 @@ spring:
|
||||
props:
|
||||
#是否打印逻辑SQL语句和实际SQL语句,建议调试时打印,在生产环境关闭
|
||||
sql:
|
||||
show: true
|
||||
show: false
|
||||
|
||||
# 忽略TOKEN 鉴权 的url
|
||||
ignored:
|
||||
@@ -131,21 +128,23 @@ ignored:
|
||||
- /MP_verify_qSyvBPhDsPdxvOhC.txt
|
||||
- /weixin/**
|
||||
- /source/**
|
||||
- /buyer/mini-program/**
|
||||
- /buyer/cashier/**
|
||||
- /buyer/pageData/**
|
||||
- /buyer/article/**
|
||||
- /buyer/payment/cashier/**
|
||||
- /buyer/payment/cashierRefund/**
|
||||
- /buyer/other/pageData/**
|
||||
- /buyer/other/article/**
|
||||
- /buyer/goods/**
|
||||
- /buyer/category/**
|
||||
- /buyer/store/**
|
||||
- /buyer/connect/**
|
||||
- /buyer/passport/connect/**
|
||||
- /buyer/members/**
|
||||
- /buyer/passport/member/**
|
||||
- /buyer/passport/member/refresh/**
|
||||
- /buyer/promotion/pintuan/**
|
||||
- /buyer/promotion/seckill/**
|
||||
- /buyer/promotion/pointsGoods/**
|
||||
- /buyer/memberEvaluation/**/goodsEvaluation
|
||||
- /buyer/memberEvaluation/**/evaluationNumber
|
||||
- /buyer/appVersion/**
|
||||
- /buyer/promotion/coupon
|
||||
- /buyer/member/evaluation/**/goodsEvaluation
|
||||
- /buyer/member/evaluation/**/evaluationNumber
|
||||
- /buyer/other/appVersion/**
|
||||
- /buyer/broadcast/studio/**
|
||||
- /druid/**
|
||||
- /swagger-ui.html
|
||||
@@ -186,10 +185,8 @@ logging:
|
||||
config: classpath:logback-spring.xml
|
||||
# 输出级别
|
||||
level:
|
||||
cn.lili: debug
|
||||
org.hibernate: debug
|
||||
root: info
|
||||
# org.springframework: debug
|
||||
# org.springframework.data.mongodb.core: debug
|
||||
file:
|
||||
# 指定路径
|
||||
path: lili-logs
|
||||
@@ -216,18 +213,6 @@ lili:
|
||||
lbs:
|
||||
key: 4BYBZ-7MT6S-PUAOA-6BNWL-FJUD7-UUFXT
|
||||
sk: zhNKVrJK6UPOhqIjn8AQvG37b9sz6
|
||||
#域名
|
||||
domain:
|
||||
pc: https://pc-b2b2c.pickmall.cn
|
||||
wap: https://m-b2b2c.pickmall.cn
|
||||
store: https://store-b2b2c.pickmall.cn
|
||||
admin: https://admin-b2b2c.pickmall.cn
|
||||
#api地址
|
||||
api:
|
||||
buyer: https://buyer-api.pickmall.cn
|
||||
common: https://common-api.pickmall.cn
|
||||
manager: https://admin-api.pickmall.cn
|
||||
store: https://store-api.pickmall.cn
|
||||
|
||||
# jwt 细节设定
|
||||
jwt-setting:
|
||||
@@ -268,6 +253,8 @@ lili:
|
||||
order-group: lili_order_group
|
||||
member-topic: lili_member_topic
|
||||
member-group: lili_member_group
|
||||
store-topic: lili_store_topic
|
||||
store-group: lili_store_group
|
||||
other-topic: lili_other_topic
|
||||
other-group: lili_other_group
|
||||
notice-topic: lili_notice_topic
|
||||
|
||||
@@ -20,6 +20,23 @@
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<appender name="RocketmqClientAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<file>${LOG_FILE_PATH}/rocketmq.log</file>
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||
<fileNamePattern>${LOG_FILE_PATH}/rocketmq/rocketmq-%d{yyyy-MM-dd}.log</fileNamePattern>
|
||||
<maxHistory>30</maxHistory>
|
||||
<totalSizeCap>30MB</totalSizeCap>
|
||||
</rollingPolicy>
|
||||
<encoder>
|
||||
<pattern>%d{yy-MM-dd.HH:mm:ss.SSS} [%-16t] %-5p %-22c{0} %X{ServiceId} - %m%n</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
<logger name="RocketmqClient" additivity="false">
|
||||
<level value="info" />
|
||||
<appender-ref ref="RocketmqClientAppender"/>
|
||||
</logger>
|
||||
|
||||
|
||||
<!--输出到elk的LOGSTASH-->
|
||||
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
|
||||
<!-- 配置elk日志收集 配饰的是 LOGSTASH 的地址-->
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package cn.lili.buyer.test.cart;
|
||||
|
||||
|
||||
import cn.lili.modules.file.plugin.FileManagerPlugin;
|
||||
import cn.lili.modules.file.plugin.FilePlugin;
|
||||
import cn.lili.modules.goods.entity.dos.Brand;
|
||||
import cn.lili.modules.goods.service.BrandService;
|
||||
import com.xkcoding.http.util.StringUtil;
|
||||
@@ -27,7 +27,7 @@ class FileTest {
|
||||
|
||||
|
||||
@Autowired
|
||||
private FileManagerPlugin fileManagerPlugin;
|
||||
private FilePlugin fileManagerPlugin;
|
||||
|
||||
@Autowired
|
||||
private BrandService brandService;
|
||||
|
||||
@@ -25,16 +25,6 @@ spring:
|
||||
admin:
|
||||
client:
|
||||
url: http://192.168.0.116:8000
|
||||
# mongodb
|
||||
data:
|
||||
mongodb:
|
||||
host: 192.168.0.116
|
||||
port: 27017
|
||||
database: lilishop
|
||||
username: root
|
||||
password: lilishop
|
||||
authentication-database: admin
|
||||
# replica-set-name: mongoreplset
|
||||
cache:
|
||||
type: redis
|
||||
#amqp
|
||||
@@ -186,7 +176,6 @@ logging:
|
||||
cn.lili: info
|
||||
# org.hibernate: debug
|
||||
# org.springframework: debug
|
||||
# org.springframework.data.mongodb.core: debug
|
||||
file:
|
||||
# 指定路径
|
||||
path: lili-logs
|
||||
|
||||
@@ -15,6 +15,7 @@ import org.springframework.cache.annotation.EnableCaching;
|
||||
public class CommonApiApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
System.setProperty("rocketmq.client.logUseSlf4j","true");
|
||||
SpringApplication.run(CommonApiApplication.class, args);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
package cn.lili.controller.common;
|
||||
|
||||
import cn.lili.cache.Cache;
|
||||
import cn.lili.common.context.ThreadContextHolder;
|
||||
import cn.lili.common.enums.ResultCode;
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.exception.ServiceException;
|
||||
import cn.lili.common.security.AuthUser;
|
||||
import cn.lili.common.security.context.UserContext;
|
||||
import cn.lili.common.security.enums.UserEnums;
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.vo.PageVO;
|
||||
import cn.lili.common.utils.ResponseUtil;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.common.vo.SearchVO;
|
||||
import cn.lili.modules.file.entity.File;
|
||||
import cn.lili.modules.file.entity.dto.FileOwnerDTO;
|
||||
import cn.lili.modules.file.service.FileService;
|
||||
@@ -30,8 +30,8 @@ import java.util.List;
|
||||
* @since 2020/11/26 15:41
|
||||
*/
|
||||
@RestController
|
||||
@Api(tags = "文件管理管理接口")
|
||||
@RequestMapping("/common/file")
|
||||
@Api(tags = "文件管理接口")
|
||||
@RequestMapping("/common/common/file")
|
||||
public class FileController {
|
||||
|
||||
@Autowired
|
||||
@@ -43,10 +43,14 @@ public class FileController {
|
||||
@ApiOperation(value = "获取自己的图片资源")
|
||||
@GetMapping
|
||||
@ApiImplicitParam(name = "title", value = "名称模糊匹配")
|
||||
public ResultMessage<IPage<File>> getFileList(@RequestHeader String accessToken, File file, SearchVO searchVO, PageVO pageVo) {
|
||||
public ResultMessage<IPage<File>> getFileList(@RequestHeader String accessToken, FileOwnerDTO fileOwnerDTO) {
|
||||
|
||||
AuthUser authUser = UserContext.getAuthUser(cache, accessToken);
|
||||
FileOwnerDTO fileOwnerDTO = new FileOwnerDTO();
|
||||
if (authUser == null) {
|
||||
ResponseUtil.output(ThreadContextHolder.getHttpResponse(), 403, ResponseUtil.resultMap(false,
|
||||
403, "登录已失效,请重新登录"));
|
||||
return null;
|
||||
}
|
||||
//只有买家才写入自己id
|
||||
if (authUser.getRole().equals(UserEnums.MEMBER)) {
|
||||
fileOwnerDTO.setOwnerId(authUser.getId());
|
||||
@@ -55,7 +59,7 @@ public class FileController {
|
||||
fileOwnerDTO.setOwnerId(authUser.getStoreId());
|
||||
}
|
||||
fileOwnerDTO.setUserEnums(authUser.getRole().name());
|
||||
return ResultUtil.data(fileService.customerPageOwner(fileOwnerDTO, file, searchVO, pageVo));
|
||||
return ResultUtil.data(fileService.customerPageOwner(fileOwnerDTO));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "文件重命名")
|
||||
@@ -78,9 +82,7 @@ public class FileController {
|
||||
}
|
||||
throw new ServiceException(ResultCode.USER_AUTHORITY_ERROR);
|
||||
case MANAGER:
|
||||
if (file.getUserEnums().equals(authUser.getRole().name())) {
|
||||
break;
|
||||
}
|
||||
default:
|
||||
throw new ServiceException(ResultCode.USER_AUTHORITY_ERROR);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
package cn.lili.controller.common;
|
||||
|
||||
import cn.lili.common.enums.ResultCode;
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.security.context.UserContext;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.file.entity.FileDirectory;
|
||||
import cn.lili.modules.file.entity.dto.FileDirectoryDTO;
|
||||
import cn.lili.modules.file.service.FileDirectoryService;
|
||||
import cn.lili.modules.file.service.FileService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 文件目录管理接口
|
||||
*
|
||||
* @author Chopper
|
||||
* @since 2020/11/26 15:41
|
||||
*/
|
||||
@RestController
|
||||
@Api(tags = "文件目录管理接口")
|
||||
@RequestMapping("/common/resource/fileDirectory")
|
||||
@RequiredArgsConstructor
|
||||
public class FileDirectoryController {
|
||||
|
||||
private final FileDirectoryService fileDirectoryService;
|
||||
private final FileService fileService;
|
||||
|
||||
@ApiOperation(value = "获取文件目录列表")
|
||||
@GetMapping
|
||||
public ResultMessage<List<FileDirectoryDTO>> getSceneFileList() {
|
||||
return ResultUtil.data(fileDirectoryService.getFileDirectoryList(UserContext.getCurrentUser().getId()));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "添加文件目录")
|
||||
@PostMapping
|
||||
public ResultMessage<FileDirectory> addSceneFileList(@RequestBody @Valid FileDirectory fileDirectory) {
|
||||
fileDirectory.setDirectoryType(UserContext.getCurrentUser().getRole().name());
|
||||
fileDirectory.setOwnerId(UserContext.getCurrentUser().getId());
|
||||
fileDirectoryService.save(fileDirectory);
|
||||
return ResultUtil.data(fileDirectory);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "修改文件目录")
|
||||
@PutMapping
|
||||
public ResultMessage<FileDirectory> editSceneFileList(@RequestBody @Valid FileDirectory fileDirectory) {
|
||||
fileDirectory.setDirectoryType(UserContext.getCurrentUser().getRole().name());
|
||||
fileDirectory.setOwnerId(UserContext.getCurrentUser().getId());
|
||||
fileDirectoryService.updateById(fileDirectory);
|
||||
return ResultUtil.data(fileDirectory);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "删除文件目录")
|
||||
@DeleteMapping("/{id}")
|
||||
public ResultMessage<Object> deleteSceneFileList(@PathVariable String id) {
|
||||
//检测文件夹下是否包含图片
|
||||
if(fileService.countByDirectory(id)){
|
||||
return ResultUtil.error(ResultCode.FILE_DIRECTORY_NOT_EMPTY);
|
||||
}
|
||||
//删除目录
|
||||
fileDirectoryService.removeById(id);
|
||||
return ResultUtil.success();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -25,7 +25,7 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
* 2021-09-16 15:32
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/common/IM")
|
||||
@RequestMapping("/common/common/IM")
|
||||
@Api(tags = "IM 中心")
|
||||
public class IMController {
|
||||
|
||||
@@ -39,7 +39,7 @@ public class IMController {
|
||||
try {
|
||||
Setting imSettingVal = settingService.get(SettingEnum.IM_SETTING.name());
|
||||
ImSetting imSetting = JSONUtil.toBean(imSettingVal.getSettingValue(), ImSetting.class);
|
||||
imUrl = imSetting.getHttpUrl() + "?tenant_id=" + imSetting.getTenantId()+"&merchant_euid=";
|
||||
imUrl = imSetting.getHttpUrl();
|
||||
} catch (Exception e) {
|
||||
throw new ServiceException(ResultCode.PLATFORM_NOT_SUPPORTED_IM);
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package cn.lili.controller.member;
|
||||
package cn.lili.controller.common;
|
||||
|
||||
import cn.lili.common.utils.IpHelper;
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
@@ -19,8 +19,8 @@ import javax.servlet.http.HttpServletRequest;
|
||||
* @since 2020-02-25 14:10:16
|
||||
*/
|
||||
@RestController
|
||||
@Api(tags = "管理端,IP接口")
|
||||
@RequestMapping("/manager/common/ip")
|
||||
@Api(tags = "获取IP信息以及天气")
|
||||
@RequestMapping("/common/common/ip")
|
||||
public class IpInfoManagerController {
|
||||
@Autowired
|
||||
private IpHelper ipHelper;
|
||||
@@ -2,9 +2,9 @@ package cn.lili.controller.common;
|
||||
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.system.service.RegionService;
|
||||
import cn.lili.modules.system.entity.dos.Region;
|
||||
import cn.lili.modules.system.entity.vo.RegionVO;
|
||||
import cn.lili.modules.system.service.RegionService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
@@ -22,7 +22,7 @@ import java.util.List;
|
||||
*/
|
||||
@RestController
|
||||
@Api(tags = "地址信息接口")
|
||||
@RequestMapping("/common/region")
|
||||
@RequestMapping("/common/common/region")
|
||||
public class RegionController {
|
||||
|
||||
@Autowired
|
||||
@@ -38,6 +38,11 @@ public class RegionController {
|
||||
return ResultUtil.data(regionService.getRegion(cityCode,townName));
|
||||
}
|
||||
|
||||
@GetMapping(value = "/name")
|
||||
@ApiOperation(value = "根据名字获取地区地址id")
|
||||
public ResultMessage<String> getItemByLastName(String lastName) {
|
||||
return ResultUtil.data(regionService.getItemByLastName(lastName));
|
||||
}
|
||||
|
||||
@GetMapping(value = "/item/{id}")
|
||||
@ApiImplicitParam(name = "id", value = "地区ID", required = true, dataType = "String", paramType = "path")
|
||||
|
||||
@@ -6,31 +6,30 @@ import cn.lili.modules.system.entity.enums.SettingEnum;
|
||||
import cn.lili.modules.system.service.SettingService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
/**
|
||||
* 文件管理管理接口
|
||||
* 站点基础配置获取
|
||||
*
|
||||
* @author Chopper
|
||||
* @since 2020/11/26 15:41
|
||||
* @author liushuai(liushuai711 @ gmail.com)
|
||||
* @version v4.0
|
||||
* @Description:
|
||||
* @since 2022/9/22 17:49
|
||||
*/
|
||||
@Slf4j
|
||||
@RestController
|
||||
@Api(tags = "文件管理管理接口")
|
||||
@RequestMapping("/common/logo")
|
||||
public class LogoController {
|
||||
@RequestMapping("/common/common/site")
|
||||
@Api(tags = "站点基础接口")
|
||||
public class SiteController {
|
||||
|
||||
@Autowired
|
||||
private SettingService settingService;
|
||||
|
||||
@ApiOperation(value = "获取logo")
|
||||
@ApiOperation(value = "获取站点基础信息")
|
||||
@GetMapping
|
||||
public ResultMessage<Object> getFileList() {
|
||||
public ResultMessage<Object> baseSetting() {
|
||||
return ResultUtil.data(settingService.get(SettingEnum.BASE_SETTING.name()));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -3,7 +3,7 @@ package cn.lili.controller.common;
|
||||
import cn.lili.cache.limit.annotation.LimitPoint;
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.verification.enums.VerificationEnums;
|
||||
import cn.lili.modules.verification.entity.enums.VerificationEnums;
|
||||
import cn.lili.modules.verification.service.VerificationService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
@@ -19,7 +19,7 @@ import org.springframework.web.bind.annotation.*;
|
||||
*/
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/common/slider")
|
||||
@RequestMapping("/common/common/slider")
|
||||
@Api(tags = "滑块验证码接口")
|
||||
public class SliderImageController {
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ import cn.lili.cache.limit.annotation.LimitPoint;
|
||||
import cn.lili.common.enums.ResultCode;
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.system.sms.SmsUtil;
|
||||
import cn.lili.modules.verification.enums.VerificationEnums;
|
||||
import cn.lili.modules.sms.SmsUtil;
|
||||
import cn.lili.modules.verification.entity.enums.VerificationEnums;
|
||||
import cn.lili.modules.verification.service.VerificationService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
@@ -22,7 +22,7 @@ import org.springframework.web.bind.annotation.*;
|
||||
*/
|
||||
@RestController
|
||||
@Api(tags = "短信验证码接口")
|
||||
@RequestMapping("/common/sms")
|
||||
@RequestMapping("/common/common/sms")
|
||||
public class SmsController {
|
||||
|
||||
@Autowired
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package cn.lili.controller.common;
|
||||
|
||||
import cn.hutool.core.text.CharSequenceUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.lili.cache.Cache;
|
||||
import cn.lili.common.enums.ResultCode;
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.exception.ServiceException;
|
||||
import cn.lili.common.properties.SystemSettingProperties;
|
||||
import cn.lili.common.security.AuthUser;
|
||||
import cn.lili.common.security.context.UserContext;
|
||||
import cn.lili.common.security.enums.UserEnums;
|
||||
@@ -13,7 +13,7 @@ import cn.lili.common.utils.Base64DecodeMultipartFile;
|
||||
import cn.lili.common.utils.CommonUtil;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.file.entity.File;
|
||||
import cn.lili.modules.file.plugin.FileManagerPlugin;
|
||||
import cn.lili.modules.file.plugin.FilePluginFactory;
|
||||
import cn.lili.modules.file.service.FileService;
|
||||
import cn.lili.modules.system.entity.dos.Setting;
|
||||
import cn.lili.modules.system.entity.enums.SettingEnum;
|
||||
@@ -22,10 +22,7 @@ import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestHeader;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.io.InputStream;
|
||||
@@ -40,7 +37,7 @@ import java.util.Objects;
|
||||
@Slf4j
|
||||
@RestController
|
||||
@Api(tags = "文件上传接口")
|
||||
@RequestMapping("/common/upload")
|
||||
@RequestMapping("/common/common/upload")
|
||||
public class UploadController {
|
||||
|
||||
@Autowired
|
||||
@@ -48,35 +45,38 @@ public class UploadController {
|
||||
@Autowired
|
||||
private SettingService settingService;
|
||||
@Autowired
|
||||
private FileManagerPlugin fileManagerPlugin;
|
||||
private FilePluginFactory filePluginFactory;
|
||||
@Autowired
|
||||
private Cache cache;
|
||||
|
||||
@Autowired
|
||||
private SystemSettingProperties systemSettingProperties;
|
||||
|
||||
@ApiOperation(value = "文件上传")
|
||||
@PostMapping(value = "/file")
|
||||
public ResultMessage<Object> upload(MultipartFile file,
|
||||
String base64,
|
||||
@RequestHeader String accessToken) {
|
||||
@RequestHeader String accessToken, @RequestParam String directoryPath) {
|
||||
|
||||
if(StrUtil.isBlank(directoryPath)){
|
||||
directoryPath = "default";
|
||||
}
|
||||
|
||||
AuthUser authUser = UserContext.getAuthUser(cache, accessToken);
|
||||
//如果用户未登录,则无法上传图片
|
||||
if (authUser == null) {
|
||||
throw new ServiceException(ResultCode.USER_AUTHORITY_ERROR);
|
||||
}
|
||||
if (file == null) {
|
||||
throw new ServiceException(ResultCode.FILE_NOT_EXIST_ERROR);
|
||||
}
|
||||
Setting setting = settingService.get(SettingEnum.OSS_SETTING.name());
|
||||
if (setting == null || CharSequenceUtil.isBlank(setting.getSettingValue())) {
|
||||
throw new ServiceException(ResultCode.OSS_NOT_EXIST);
|
||||
}
|
||||
if (file == null || CharSequenceUtil.isEmpty(file.getContentType())) {
|
||||
if (CharSequenceUtil.isEmpty(file.getContentType())) {
|
||||
throw new ServiceException(ResultCode.IMAGE_FILE_EXT_ERROR);
|
||||
}
|
||||
|
||||
|
||||
if (!CharSequenceUtil.containsAny(file.getContentType().toLowerCase(), "image")) {
|
||||
if (!CharSequenceUtil.containsAny(Objects.requireNonNull(file.getContentType()).toLowerCase(), "image", "video")) {
|
||||
throw new ServiceException(ResultCode.FILE_TYPE_NOT_SUPPORT);
|
||||
}
|
||||
|
||||
@@ -90,7 +90,13 @@ public class UploadController {
|
||||
try {
|
||||
InputStream inputStream = file.getInputStream();
|
||||
//上传至第三方云服务或服务器
|
||||
result = fileManagerPlugin.inputStreamUpload(inputStream, fileKey);
|
||||
String scene = UserContext.getCurrentUser().getRole().name();
|
||||
if (StrUtil.equalsAny(UserContext.getCurrentUser().getRole().name(), UserEnums.MEMBER.name(), UserEnums.STORE.name(), UserEnums.SEAT.name())) {
|
||||
scene = scene + "/" + authUser.getId();
|
||||
}
|
||||
fileKey = scene + "/" + directoryPath + "/" + fileKey;
|
||||
//上传至第三方云服务或服务器
|
||||
result = filePluginFactory.filePlugin().inputStreamUpload(inputStream, fileKey);
|
||||
//保存数据信息至数据库
|
||||
newFile.setName(file.getOriginalFilename());
|
||||
newFile.setFileSize(file.getSize());
|
||||
@@ -102,8 +108,19 @@ public class UploadController {
|
||||
//如果是店铺,则记录店铺id
|
||||
if (authUser.getRole().equals(UserEnums.STORE)) {
|
||||
newFile.setOwnerId(authUser.getStoreId());
|
||||
newFile.setOwnerName(authUser.getStoreName());
|
||||
} else {
|
||||
newFile.setOwnerId(authUser.getId());
|
||||
newFile.setOwnerName(authUser.getNickName());
|
||||
}
|
||||
|
||||
//存储文件目录
|
||||
if (StrUtil.isNotEmpty(directoryPath)) {
|
||||
if (directoryPath.indexOf("/") > 0) {
|
||||
newFile.setFileDirectoryId(directoryPath.substring(directoryPath.lastIndexOf("/") + 1));
|
||||
} else {
|
||||
newFile.setFileDirectoryId(directoryPath);
|
||||
}
|
||||
}
|
||||
fileService.save(newFile);
|
||||
} catch (Exception e) {
|
||||
|
||||
@@ -1,8 +1,5 @@
|
||||
package cn.lili.controller.security;
|
||||
|
||||
import cn.lili.cache.Cache;
|
||||
import cn.lili.common.security.CustomAccessDeniedHandler;
|
||||
import cn.lili.common.properties.IgnoredUrlsProperties;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
@@ -25,19 +22,10 @@ import org.springframework.web.cors.CorsConfigurationSource;
|
||||
public class CommonSecurityConfig extends WebSecurityConfigurerAdapter {
|
||||
|
||||
|
||||
/**
|
||||
* 忽略验权配置
|
||||
*/
|
||||
@Autowired
|
||||
private IgnoredUrlsProperties ignoredUrlsProperties;
|
||||
/**
|
||||
* spring security -》 权限不足处理
|
||||
*/
|
||||
@Autowired
|
||||
private CustomAccessDeniedHandler accessDeniedHandler;
|
||||
@Autowired
|
||||
private Cache<String> cache;
|
||||
@Autowired
|
||||
private CorsConfigurationSource corsConfigurationSource;
|
||||
|
||||
@Override
|
||||
|
||||
@@ -29,15 +29,6 @@ spring:
|
||||
admin:
|
||||
client:
|
||||
url: http://127.0.0.1:8000
|
||||
# mongodb
|
||||
data:
|
||||
mongodb:
|
||||
uri: 127.0.0.1:27017
|
||||
database: lilishop
|
||||
username: root
|
||||
password: lilishop
|
||||
authentication-database: admin
|
||||
# replica-set-name: mongoreplset
|
||||
cache:
|
||||
type: redis
|
||||
# Redis
|
||||
@@ -117,7 +108,7 @@ spring:
|
||||
props:
|
||||
#是否打印逻辑SQL语句和实际SQL语句,建议调试时打印,在生产环境关闭
|
||||
sql:
|
||||
show: true
|
||||
show: false
|
||||
|
||||
# 忽略鉴权url
|
||||
ignored:
|
||||
@@ -128,24 +119,10 @@ ignored:
|
||||
- /MP_verify_qSyvBPhDsPdxvOhC.txt
|
||||
- /weixin/**
|
||||
- /source/**
|
||||
- /buyer/mini-program/**
|
||||
- /buyer/cashier/**
|
||||
- /buyer/pageData/**
|
||||
- /buyer/article/**
|
||||
- /buyer/goods/**
|
||||
- /buyer/category/**
|
||||
- /buyer/shop/**
|
||||
- /buyer/connect/**
|
||||
- /buyer/members/smsLogin
|
||||
- /buyer/members/refresh/*
|
||||
- /buyer/members/refresh**
|
||||
- /buyer/promotion/pintuan
|
||||
- /buyer/promotion/seckill
|
||||
- /buyer/memberEvaluation/**/goodsEvaluation
|
||||
- /buyer/memberEvaluation/**/evaluationNumber
|
||||
- /store/login/**
|
||||
- /manager/user/login
|
||||
- /manager/user/refresh/**
|
||||
- /common/common/slider/**
|
||||
- /common/common/sms/**
|
||||
- /common/common/logo
|
||||
- /common/common/site
|
||||
- /druid/**
|
||||
- /swagger-ui.html
|
||||
- /doc.html
|
||||
@@ -185,10 +162,9 @@ logging:
|
||||
config: classpath:logback-spring.xml
|
||||
# 输出级别
|
||||
level:
|
||||
cn.lili: info
|
||||
root: info
|
||||
# org.hibernate: debug
|
||||
# org.springframework: debug
|
||||
# org.springframework.data.mongodb.core: debug
|
||||
file:
|
||||
# 指定路径
|
||||
path: lili-logs
|
||||
@@ -214,18 +190,6 @@ lili:
|
||||
interfereNum: 0
|
||||
#允许误差像素
|
||||
faultTolerant: 3
|
||||
#短信模版配置
|
||||
sms:
|
||||
#登录
|
||||
LOGIN: SMS_205755300
|
||||
#注册
|
||||
REGISTER: SMS_205755298
|
||||
#找回密码
|
||||
FIND_USER: SMS_205755301
|
||||
#设置密码
|
||||
UPDATE_PASSWORD: SMS_205755297
|
||||
#支付密码
|
||||
WALLET_PASSWORD: SMS_205755301
|
||||
system:
|
||||
isTestModel: true
|
||||
statistics:
|
||||
|
||||
@@ -20,6 +20,22 @@
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<appender name="RocketmqClientAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<file>${LOG_FILE_PATH}/rocketmq.log</file>
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||
<fileNamePattern>${LOG_FILE_PATH}/rocketmq/rocketmq-%d{yyyy-MM-dd}.log</fileNamePattern>
|
||||
<maxHistory>30</maxHistory>
|
||||
<totalSizeCap>30MB</totalSizeCap>
|
||||
</rollingPolicy>
|
||||
<encoder>
|
||||
<pattern>%d{yy-MM-dd.HH:mm:ss.SSS} [%-16t] %-5p %-22c{0} %X{ServiceId} - %m%n</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
<logger name="RocketmqClient" additivity="false">
|
||||
<level value="info" />
|
||||
<appender-ref ref="RocketmqClientAppender"/>
|
||||
</logger>
|
||||
|
||||
<!--输出到elk的LOGSTASH-->
|
||||
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
|
||||
<!-- 配置elk日志收集 配饰的是 LOGSTASH 的地址-->
|
||||
|
||||
@@ -20,25 +20,29 @@ management:
|
||||
exposure:
|
||||
include: '*'
|
||||
spring:
|
||||
mail:
|
||||
host: smtp.qq.com
|
||||
port: 465
|
||||
username: lifenlong@foxmail.com
|
||||
password: dirpxpqgfvysbefh
|
||||
protocol: smtps
|
||||
properties:
|
||||
mail:
|
||||
smtp:
|
||||
auth: true
|
||||
starttls:
|
||||
enable: true
|
||||
|
||||
# 要在其中注册的Spring Boot Admin Server的URL。
|
||||
boot:
|
||||
admin:
|
||||
client:
|
||||
url: http://192.168.0.116:8000
|
||||
# mongodb
|
||||
data:
|
||||
mongodb:
|
||||
uri: 192.168.0.116:27017
|
||||
database: lilishop
|
||||
username: root
|
||||
password: lilishop
|
||||
authentication-database: admin
|
||||
# replica-set-name: mongoreplset
|
||||
url: http://127.0.0.1:8000
|
||||
cache:
|
||||
type: redis
|
||||
# Redis
|
||||
redis:
|
||||
host: 192.168.0.116
|
||||
host: 127.0.0.1
|
||||
port: 6379
|
||||
password: lilishop
|
||||
lettuce:
|
||||
@@ -69,11 +73,11 @@ spring:
|
||||
default-datasource:
|
||||
type: com.alibaba.druid.pool.DruidDataSource
|
||||
driverClassName: com.mysql.cj.jdbc.Driver
|
||||
url: jdbc:mysql://192.168.0.116:3306/lilishop?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
|
||||
url: jdbc:mysql://127.0.0.1:3306/lilishop?useUnicode=true&characterEncoding=utf-8&useSSL=false&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
|
||||
username: root
|
||||
password: lilishop
|
||||
maxActive: 20
|
||||
initialSize: 5
|
||||
maxActive: 50
|
||||
initialSize: 20
|
||||
maxWait: 60000
|
||||
minIdle: 5
|
||||
timeBetweenEvictionRunsMillis: 60000
|
||||
@@ -124,26 +128,32 @@ ignored:
|
||||
- /MP_verify_qSyvBPhDsPdxvOhC.txt
|
||||
- /weixin/**
|
||||
- /source/**
|
||||
- /buyer/mini-program/**
|
||||
- /buyer/cashier/**
|
||||
- /buyer/pageData/**
|
||||
- /buyer/article/**
|
||||
- /store/passport/login/**
|
||||
- /store/passport/login/refresh/**
|
||||
- /common/common/slider/**
|
||||
- /common/common/sms/**
|
||||
- /common/common/site
|
||||
- /buyer/payment/cashier/**
|
||||
- /buyer/other/pageData/**
|
||||
- /buyer/other/article/**
|
||||
- /buyer/goods/**
|
||||
- /buyer/category/**
|
||||
- /buyer/store/**
|
||||
- /buyer/connect/**
|
||||
- /buyer/passport/connect/**
|
||||
- /buyer/members/**
|
||||
- /buyer/passport/member/**
|
||||
- /buyer/passport/member/refresh/**
|
||||
- /buyer/promotion/pintuan/**
|
||||
- /buyer/promotion/seckill/**
|
||||
- /buyer/promotion/pointsGoods/**
|
||||
- /buyer/promotion/coupon
|
||||
- /buyer/memberEvaluation/**/goodsEvaluation
|
||||
- /buyer/memberEvaluation/**/evaluationNumber
|
||||
- /buyer/appVersion/**
|
||||
- /buyer/member/evaluation/**/goodsEvaluation
|
||||
- /buyer/member/evaluation/**/evaluationNumber
|
||||
- /buyer/other/appVersion/**
|
||||
- /buyer/broadcast/studio/**
|
||||
- /store/login/**
|
||||
- /manager/user/login
|
||||
- /manager/user/refresh/**
|
||||
- /manager/passport/user/login
|
||||
- /manager/passport/user/refresh/**
|
||||
- /manager/other/elasticsearch
|
||||
- /manager/other/customWords
|
||||
- /druid/**
|
||||
- /swagger-ui.html
|
||||
- /doc.html
|
||||
@@ -186,7 +196,6 @@ logging:
|
||||
cn.lili: info
|
||||
# org.hibernate: debug
|
||||
# org.springframework: debug
|
||||
# org.springframework.data.mongodb.core: debug
|
||||
file:
|
||||
# 指定路径
|
||||
path: logs
|
||||
@@ -213,26 +222,13 @@ lili:
|
||||
interfereNum: 1
|
||||
#允许误差像素
|
||||
faultTolerant: 3
|
||||
#短信模版配置
|
||||
sms:
|
||||
#登录
|
||||
LOGIN: SMS_205755300
|
||||
#注册
|
||||
REGISTER: SMS_205755298
|
||||
#找回密码
|
||||
FIND_USER: SMS_205755301
|
||||
#设置密码
|
||||
UPDATE_PASSWORD: SMS_205755297
|
||||
#支付密码
|
||||
WALLET_PASSWORD: SMS_205755301
|
||||
system:
|
||||
isDemoSite: false
|
||||
isTestModel: true
|
||||
# 脱敏级别:
|
||||
# 0:不做脱敏处理
|
||||
# 1:管理端用户手机号等信息脱敏
|
||||
# 2:商家端信息脱敏(为2时,表示管理端,商家端同时脱敏)
|
||||
# sensitiveLevel: 2
|
||||
sensitiveLevel: 1
|
||||
|
||||
statistics:
|
||||
# 在线人数统计 X 小时。这里设置48,即统计过去48小时每小时在线人数
|
||||
@@ -245,16 +241,16 @@ lili:
|
||||
sk: zhNKVrJK6UPOhqIjn8AQvG37b9sz6
|
||||
#域名
|
||||
domain:
|
||||
pc: http://192.168.0.116:8888
|
||||
wap: http://192.168.0.116:8888
|
||||
seller: http://192.168.0.116:8888
|
||||
admin: http://192.168.0.116:8888
|
||||
pc: http://127.0.0.1:8888
|
||||
wap: http://127.0.0.1:8888
|
||||
seller: http://127.0.0.1:8888
|
||||
admin: http://127.0.0.1:8888
|
||||
#api地址
|
||||
api:
|
||||
buyer: https://z171l91606.51mypc.cn
|
||||
base: http://192.168.0.116:8888
|
||||
manager: http://192.168.0.116:8888
|
||||
seller: http://192.168.0.116:8888
|
||||
base: http://127.0.0.1:8888
|
||||
manager: http://127.0.0.1:8888
|
||||
seller: http://127.0.0.1:8888
|
||||
|
||||
# jwt 细节设定
|
||||
jwt-setting:
|
||||
@@ -273,7 +269,7 @@ lili:
|
||||
data:
|
||||
elasticsearch:
|
||||
cluster-name: elasticsearch
|
||||
cluster-nodes: 192.168.0.116:9200
|
||||
cluster-nodes: 127.0.0.1:9200
|
||||
index:
|
||||
number-of-replicas: 0
|
||||
number-of-shards: 3
|
||||
@@ -284,27 +280,28 @@ lili:
|
||||
# password: LiLiShopES
|
||||
|
||||
logstash:
|
||||
server: 192.168.0.116:4560
|
||||
server: 127.0.0.1:4560
|
||||
rocketmq:
|
||||
promotion-topic: lili_promotion_topic
|
||||
promotion-group: lili_promotion_group
|
||||
msg-ext-topic: lili_msg_topic
|
||||
msg-ext-group: lili_msg_group
|
||||
goods-topic: lili_goods_topic
|
||||
goods-group: lili_goods_group
|
||||
order-topic: lili_order_topic
|
||||
order-group: lili_order_group
|
||||
member-topic: lili_member_topic
|
||||
member-group: lili_member_group
|
||||
other-topic: lili_other_topic
|
||||
other-group: lili_other_group
|
||||
notice-topic: lili_notice_topic
|
||||
notice-group: lili_notice_group
|
||||
notice-send-topic: lili_send_notice_topic
|
||||
notice-send-group: lili_send_notice_group
|
||||
promotion-topic: shop_lili_promotion_topic
|
||||
promotion-group: shop_lili_promotion_group
|
||||
msg-ext-topic: shop_lili_msg_topic
|
||||
msg-ext-group: shop_lili_msg_group
|
||||
goods-topic: shop_lili_goods_topic
|
||||
goods-group: shop_lili_goods_group
|
||||
order-topic: shop_lili_order_topic
|
||||
order-group: shop_lili_order_group
|
||||
member-topic: shop_lili_member_topic
|
||||
member-group: shop_lili_member_group
|
||||
other-topic: shop_lili_other_topic
|
||||
other-group: shop_lili_other_group
|
||||
notice-topic: shop_lili_notice_topic
|
||||
notice-group: shop_lili_notice_group
|
||||
notice-send-topic: shop_lili_send_notice_topic
|
||||
notice-send-group: shop_lili_send_notice_group
|
||||
after-sale-topic: shop_lili_after_sale_topic
|
||||
after-sale-group: shop_lili_after_sale_group
|
||||
rocketmq:
|
||||
name-server: 192.168.0.116:9876
|
||||
namesrvAddr: 192.168.0.116:9876
|
||||
name-server: 127.0.0.1:9876
|
||||
isVIPChannel: false
|
||||
producer:
|
||||
group: lili_group
|
||||
@@ -313,7 +310,7 @@ rocketmq:
|
||||
xxl:
|
||||
job:
|
||||
admin:
|
||||
addresses: http://192.168.0.116:9001/xxl-job-admin
|
||||
addresses: http://127.0.0.1:9001/xxl-job-admin
|
||||
executor:
|
||||
appname: xxl-job-executor-lilishop
|
||||
address:
|
||||
|
||||
@@ -14,6 +14,7 @@ public class ConsumerApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
System.setProperty("es.set.netty.runtime.available.processors", "false");
|
||||
System.setProperty("rocketmq.client.logUseSlf4j","true");
|
||||
SpringApplication.run(ConsumerApplication.class, args);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package cn.lili.event;
|
||||
|
||||
|
||||
import cn.lili.modules.order.order.entity.dos.AfterSale;
|
||||
import cn.lili.modules.order.aftersale.entity.dos.AfterSale;
|
||||
|
||||
/**
|
||||
* 售后单改变状态
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
package cn.lili.event;
|
||||
|
||||
import cn.lili.modules.connect.entity.dto.ConnectAuthUser;
|
||||
import cn.lili.modules.member.entity.dos.Member;
|
||||
|
||||
/**
|
||||
* 会员联合登录消息
|
||||
*
|
||||
* @author Chopper
|
||||
* @since 2020/11/17 7:13 下午
|
||||
*/
|
||||
public interface MemberConnectLoginEvent {
|
||||
|
||||
/**
|
||||
* 会员联合登录
|
||||
*
|
||||
* @param member 会员
|
||||
* @param authUser 第三方登录
|
||||
*/
|
||||
void memberConnectLogin(Member member, ConnectAuthUser authUser);
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package cn.lili.event;
|
||||
|
||||
import cn.lili.modules.member.entity.dos.Member;
|
||||
|
||||
/**
|
||||
* @author chc
|
||||
* @since 2022/6/2114:46
|
||||
*/
|
||||
public interface MemberInfoChangeEvent {
|
||||
|
||||
/**
|
||||
* 会员信息更改消息
|
||||
*
|
||||
* @param member 会员信息
|
||||
*/
|
||||
void memberInfoChange(Member member);
|
||||
}
|
||||
19
consumer/src/main/java/cn/lili/event/MemberLoginEvent.java
Normal file
19
consumer/src/main/java/cn/lili/event/MemberLoginEvent.java
Normal file
@@ -0,0 +1,19 @@
|
||||
package cn.lili.event;
|
||||
|
||||
import cn.lili.modules.member.entity.dos.Member;
|
||||
|
||||
/**
|
||||
* 会员登录消息
|
||||
*
|
||||
* @author Chopper
|
||||
* @since 2020/11/17 7:13 下午
|
||||
*/
|
||||
public interface MemberLoginEvent {
|
||||
|
||||
/**
|
||||
* 会员登录
|
||||
*
|
||||
* @param member 会员
|
||||
*/
|
||||
void memberLogin(Member member);
|
||||
}
|
||||
@@ -11,7 +11,7 @@ import cn.lili.modules.member.entity.dos.Member;
|
||||
public interface MemberRegisterEvent {
|
||||
|
||||
/**
|
||||
* 会员登录
|
||||
* 会员注册
|
||||
*
|
||||
* @param member 会员
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package cn.lili.event;
|
||||
|
||||
import cn.lili.modules.member.entity.dto.MemberWithdrawalMessage;
|
||||
import cn.lili.modules.wallet.entity.dto.MemberWithdrawalMessage;
|
||||
|
||||
/**
|
||||
* 会员提现消息
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
package cn.lili.event;
|
||||
|
||||
|
||||
import cn.lili.modules.store.entity.dos.Store;
|
||||
|
||||
/**
|
||||
* @author chc
|
||||
* @since 2022/6/2114:46
|
||||
*/
|
||||
public interface StoreSettingChangeEvent {
|
||||
|
||||
/**
|
||||
* 店铺信息更改消息
|
||||
*
|
||||
* @param store 店铺信息
|
||||
*/
|
||||
void storeSettingChange(Store store);
|
||||
}
|
||||
@@ -1,23 +1,24 @@
|
||||
package cn.lili.event.impl;
|
||||
|
||||
import cn.hutool.core.date.DateField;
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import cn.lili.event.AfterSaleStatusChangeEvent;
|
||||
import cn.lili.event.OrderStatusChangeEvent;
|
||||
import cn.lili.modules.distribution.entity.dos.DistributionOrder;
|
||||
import cn.lili.modules.distribution.entity.enums.DistributionOrderStatusEnum;
|
||||
import cn.lili.modules.distribution.mapper.DistributionOrderMapper;
|
||||
import cn.lili.modules.distribution.service.DistributionOrderService;
|
||||
import cn.lili.modules.order.order.entity.dos.AfterSale;
|
||||
import cn.lili.modules.order.aftersale.entity.dos.AfterSale;
|
||||
import cn.lili.modules.order.order.entity.dto.OrderMessage;
|
||||
import cn.lili.modules.order.trade.entity.enums.AfterSaleStatusEnum;
|
||||
import cn.lili.modules.system.entity.dos.Setting;
|
||||
import cn.lili.modules.system.entity.dto.DistributionSetting;
|
||||
import cn.lili.modules.system.entity.enums.SettingEnum;
|
||||
import cn.lili.modules.system.service.SettingService;
|
||||
import cn.lili.timetask.handler.EveryDayExecute;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* 分销订单入库
|
||||
*
|
||||
@@ -26,26 +27,21 @@ import javax.annotation.Resource;
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class DistributionOrderExecute implements OrderStatusChangeEvent, EveryDayExecute, AfterSaleStatusChangeEvent {
|
||||
public class DistributionOrderExecute implements OrderStatusChangeEvent, AfterSaleStatusChangeEvent {
|
||||
|
||||
/**
|
||||
* 分销订单
|
||||
*/
|
||||
@Autowired
|
||||
private DistributionOrderService distributionOrderService;
|
||||
/**
|
||||
* 分销订单持久层
|
||||
*/
|
||||
@Resource
|
||||
private DistributionOrderMapper distributionOrderMapper;
|
||||
|
||||
|
||||
@Override
|
||||
public void orderChange(OrderMessage orderMessage) {
|
||||
|
||||
switch (orderMessage.getNewStatus()) {
|
||||
//订单带校验/订单代发货,则记录分销信息
|
||||
//订单带校验/订单代发货/待自提,则记录分销信息
|
||||
case TAKE:
|
||||
case STAY_PICKED_UP:
|
||||
case UNDELIVERED: {
|
||||
//记录分销订单
|
||||
distributionOrderService.calculationDistribution(orderMessage.getOrderSn());
|
||||
@@ -62,23 +58,10 @@ public class DistributionOrderExecute implements OrderStatusChangeEvent, EveryDa
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute() {
|
||||
//计算分销提佣
|
||||
distributionOrderMapper.rebate(DistributionOrderStatusEnum.WAIT_BILL.name(), new DateTime());
|
||||
|
||||
//修改分销订单状态
|
||||
distributionOrderService.update(new LambdaUpdateWrapper<DistributionOrder>()
|
||||
.eq(DistributionOrder::getDistributionOrderStatus, DistributionOrderStatusEnum.WAIT_BILL.name())
|
||||
.le(DistributionOrder::getSettleCycle, new DateTime())
|
||||
.set(DistributionOrder::getDistributionOrderStatus, DistributionOrderStatusEnum.WAIT_CASH.name()));
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterSaleStatusChange(AfterSale afterSale) {
|
||||
if (afterSale.getServiceStatus().equals(AfterSaleStatusEnum.COMPLETE.name())) {
|
||||
distributionOrderService.refundOrder(afterSale.getSn());
|
||||
distributionOrderService.refundOrder(afterSale);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ import cn.lili.common.utils.SnowFlake;
|
||||
import cn.lili.event.OrderStatusChangeEvent;
|
||||
import cn.lili.event.TradeEvent;
|
||||
import cn.lili.modules.goods.entity.dos.GoodsSku;
|
||||
import cn.lili.modules.goods.entity.enums.GoodsTypeEnum;
|
||||
import cn.lili.modules.goods.service.GoodsSkuService;
|
||||
import cn.lili.modules.member.entity.enums.PointTypeEnum;
|
||||
import cn.lili.modules.member.service.MemberService;
|
||||
@@ -18,6 +19,7 @@ import cn.lili.modules.order.cart.entity.vo.CartVO;
|
||||
import cn.lili.modules.order.order.entity.dos.Order;
|
||||
import cn.lili.modules.order.order.entity.dos.OrderItem;
|
||||
import cn.lili.modules.order.order.entity.dto.OrderMessage;
|
||||
import cn.lili.modules.order.order.entity.dto.OrderSearchParams;
|
||||
import cn.lili.modules.order.order.entity.dto.PriceDetailDTO;
|
||||
import cn.lili.modules.order.order.entity.enums.*;
|
||||
import cn.lili.modules.order.order.service.OrderItemService;
|
||||
@@ -26,7 +28,7 @@ import cn.lili.modules.order.trade.entity.dos.OrderLog;
|
||||
import cn.lili.modules.order.trade.service.OrderLogService;
|
||||
import cn.lili.modules.promotion.service.MemberCouponService;
|
||||
import cn.lili.rocketmq.RocketmqSendCallbackBuilder;
|
||||
import cn.lili.rocketmq.tags.MqOrderTagsEnum;
|
||||
import cn.lili.rocketmq.tags.OrderTagsEnum;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.rocketmq.spring.core.RocketMQTemplate;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -34,6 +36,7 @@ import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 订单状态处理类
|
||||
@@ -82,7 +85,7 @@ public class FullDiscountExecute implements TradeEvent, OrderStatusChangeEvent {
|
||||
if ((cartVO.getGiftList() != null && !cartVO.getGiftList().isEmpty())
|
||||
|| (cartVO.getGiftPoint() != null && cartVO.getGiftPoint() > 0)
|
||||
|| (cartVO.getGiftCouponList() != null && !cartVO.getGiftCouponList().isEmpty())) {
|
||||
cache.put(CachePrefix.ORDER.getPrefix() + cartVO.getSn(), cartVO);
|
||||
cache.put(CachePrefix.ORDER.getPrefix() + cartVO.getSn(), JSONUtil.toJsonStr(cartVO));
|
||||
}
|
||||
}
|
||||
);
|
||||
@@ -90,9 +93,19 @@ public class FullDiscountExecute implements TradeEvent, OrderStatusChangeEvent {
|
||||
|
||||
@Override
|
||||
public void orderChange(OrderMessage orderMessage) {
|
||||
//如果订单已支付
|
||||
if (orderMessage.getNewStatus().equals(OrderStatusEnum.PAID)) {
|
||||
log.debug("满减活动,订单状态操作 {}", CachePrefix.ORDER.getPrefix() + orderMessage.getOrderSn());
|
||||
renderGift((CartVO) cache.get(CachePrefix.ORDER.getPrefix() + orderMessage.getOrderSn()), orderMessage);
|
||||
renderGift(JSONUtil.toBean(cache.getString(CachePrefix.ORDER.getPrefix() + orderMessage.getOrderSn()), CartVO.class), orderMessage);
|
||||
} else if (orderMessage.getNewStatus().equals(OrderStatusEnum.CANCELLED)) {
|
||||
log.debug("满减活动,取消订单状态操作 {}", CachePrefix.ORDER.getPrefix() + orderMessage.getOrderSn());
|
||||
OrderSearchParams searchParams = new OrderSearchParams();
|
||||
searchParams.setParentOrderSn(orderMessage.getOrderSn());
|
||||
searchParams.setOrderPromotionType(OrderPromotionTypeEnum.GIFT.name());
|
||||
List<Order> orders = orderService.queryListByParams(searchParams);
|
||||
if (orders != null && !orders.isEmpty()) {
|
||||
orderService.systemCancel(orders.get(0).getSn(),"主订单取消,赠送订单字段自动取消",true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -142,58 +155,97 @@ public class FullDiscountExecute implements TradeEvent, OrderStatusChangeEvent {
|
||||
* @param originOrder 赠品原订单信息
|
||||
*/
|
||||
private void generatorGiftOrder(List<String> skuIds, Order originOrder) {
|
||||
//获取赠品列表
|
||||
List<GoodsSku> goodsSkus = goodsSkuService.getGoodsSkuByIdFromCache(skuIds);
|
||||
|
||||
//赠品判定
|
||||
if (goodsSkus == null || goodsSkus.isEmpty()) {
|
||||
log.error("赠品不存在:{}", skuIds);
|
||||
return;
|
||||
}
|
||||
|
||||
//赠品分类,分为实体商品/虚拟商品/电子卡券
|
||||
List<GoodsSku> physicalSkus = goodsSkus.stream().filter(goodsSku -> goodsSku.getGoodsType().equals(GoodsTypeEnum.PHYSICAL_GOODS.name())).collect(Collectors.toList());
|
||||
List<GoodsSku> virtualSkus = goodsSkus.stream().filter(goodsSku -> goodsSku.getGoodsType().equals(GoodsTypeEnum.VIRTUAL_GOODS.name())).collect(Collectors.toList());
|
||||
List<GoodsSku> eCouponSkus = goodsSkus.stream().filter(goodsSku -> goodsSku.getGoodsType().equals(GoodsTypeEnum.E_COUPON.name())).collect(Collectors.toList());
|
||||
|
||||
//如果赠品不为空,则生成对应的赠品订单
|
||||
if (!physicalSkus.isEmpty()) {
|
||||
giftOrderHandler(physicalSkus, originOrder, OrderTypeEnum.NORMAL);
|
||||
}
|
||||
if (!virtualSkus.isEmpty()) {
|
||||
giftOrderHandler(virtualSkus, originOrder, OrderTypeEnum.VIRTUAL);
|
||||
}
|
||||
if (!eCouponSkus.isEmpty()) {
|
||||
giftOrderHandler(eCouponSkus, originOrder, OrderTypeEnum.E_COUPON);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 赠品订单处理
|
||||
*
|
||||
* @param skuList 赠品列表
|
||||
* @param originOrder 原始订单
|
||||
* @param orderTypeEnum 订单类型
|
||||
*/
|
||||
private void giftOrderHandler(List<GoodsSku> skuList, Order originOrder, OrderTypeEnum orderTypeEnum) {
|
||||
//初始化订单对象/订单日志/自订单
|
||||
Order order = new Order();
|
||||
List<OrderItem> orderItems = new ArrayList<>();
|
||||
List<OrderLog> orderLogs = new ArrayList<>();
|
||||
Order order = new Order();
|
||||
//初始化价格详情
|
||||
PriceDetailDTO priceDetailDTO = new PriceDetailDTO();
|
||||
//复制通用属性
|
||||
BeanUtil.copyProperties(originOrder, order, "id");
|
||||
BeanUtil.copyProperties(priceDetailDTO, order, "id");
|
||||
//生成订单参数
|
||||
order.setSn(SnowFlake.createStr("G"));
|
||||
order.setOrderType(OrderPromotionTypeEnum.GIFT.name());
|
||||
order.setParentOrderSn(originOrder.getSn());
|
||||
order.setOrderPromotionType(OrderPromotionTypeEnum.GIFT.name());
|
||||
order.setOrderStatus(OrderStatusEnum.UNPAID.name());
|
||||
order.setPayStatus(PayStatusEnum.PAID.name());
|
||||
order.setDeliverStatus(DeliverStatusEnum.UNDELIVERED.name());
|
||||
order.setOrderType(orderTypeEnum.name());
|
||||
order.setNeedReceipt(false);
|
||||
order.setPriceDetailDTO(priceDetailDTO);
|
||||
order.setClientType(originOrder.getClientType());
|
||||
//订单日志
|
||||
String message = "赠品订单[" + order.getSn() + "]创建";
|
||||
orderLogs.add(new OrderLog(order.getSn(), originOrder.getMemberId(), UserEnums.MEMBER.name(), originOrder.getMemberName(), message));
|
||||
|
||||
for (String skuId : skuIds) {
|
||||
GoodsSku goodsSkuByIdFromCache = goodsSkuService.getGoodsSkuByIdFromCache(skuId);
|
||||
//生成子订单
|
||||
for (GoodsSku goodsSku : skuList) {
|
||||
OrderItem orderItem = new OrderItem();
|
||||
BeanUtil.copyProperties(goodsSkuByIdFromCache, orderItem, "id");
|
||||
BeanUtil.copyProperties(goodsSku, orderItem, "id");
|
||||
BeanUtil.copyProperties(priceDetailDTO, orderItem, "id");
|
||||
orderItem.setAfterSaleStatus(OrderItemAfterSaleStatusEnum.NEW.name());
|
||||
orderItem.setCommentStatus(CommentStatusEnum.NEW.name());
|
||||
orderItem.setComplainStatus(OrderComplaintStatusEnum.NEW.name());
|
||||
orderItem.setNum(1);
|
||||
orderItem.setOrderSn(order.getSn());
|
||||
orderItem.setImage(goodsSkuByIdFromCache.getThumbnail());
|
||||
orderItem.setGoodsName(goodsSkuByIdFromCache.getGoodsName());
|
||||
orderItem.setSkuId(goodsSkuByIdFromCache.getId());
|
||||
orderItem.setCategoryId(goodsSkuByIdFromCache.getCategoryPath().substring(
|
||||
goodsSkuByIdFromCache.getCategoryPath().lastIndexOf(",") + 1
|
||||
orderItem.setImage(goodsSku.getThumbnail());
|
||||
orderItem.setGoodsName(goodsSku.getGoodsName());
|
||||
orderItem.setSkuId(goodsSku.getId());
|
||||
orderItem.setCategoryId(goodsSku.getCategoryPath().substring(
|
||||
goodsSku.getCategoryPath().lastIndexOf(",") + 1
|
||||
));
|
||||
orderItem.setGoodsPrice(goodsSkuByIdFromCache.getPrice());
|
||||
orderItem.setGoodsPrice(goodsSku.getPrice());
|
||||
orderItem.setPriceDetailDTO(priceDetailDTO);
|
||||
orderItems.add(orderItem);
|
||||
}
|
||||
//保存订单
|
||||
orderService.save(order);
|
||||
orderItemService.saveBatch(orderItems);
|
||||
orderLogService.saveBatch(orderLogs);
|
||||
|
||||
|
||||
//发送订单已付款消息
|
||||
//发送订单已付款消息(PS:不在这里处理逻辑是因为期望加交给消费者统一处理库存等等问题)
|
||||
OrderMessage orderMessage = new OrderMessage();
|
||||
orderMessage.setOrderSn(order.getSn());
|
||||
orderMessage.setPaymentMethod(order.getPaymentMethod());
|
||||
orderMessage.setNewStatus(OrderStatusEnum.PAID);
|
||||
|
||||
String destination = rocketmqCustomProperties.getOrderTopic() + ":" + MqOrderTagsEnum.STATUS_CHANGE.name();
|
||||
String destination = rocketmqCustomProperties.getOrderTopic() + ":" + OrderTagsEnum.STATUS_CHANGE.name();
|
||||
//发送订单变更mq消息
|
||||
rocketMQTemplate.asyncSend(destination, JSONUtil.toJsonStr(orderMessage), RocketmqSendCallbackBuilder.commonCallback());
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,22 @@
|
||||
package cn.lili.event.impl;
|
||||
|
||||
|
||||
import cn.lili.cache.Cache;
|
||||
import cn.lili.cache.CachePrefix;
|
||||
import cn.lili.event.GoodsCommentCompleteEvent;
|
||||
import cn.lili.event.StoreSettingChangeEvent;
|
||||
import cn.lili.modules.goods.entity.dos.GoodsSku;
|
||||
import cn.lili.modules.goods.entity.dto.GoodsSearchParams;
|
||||
import cn.lili.modules.goods.service.GoodsService;
|
||||
import cn.lili.modules.goods.service.GoodsSkuService;
|
||||
import cn.lili.modules.member.entity.dos.MemberEvaluation;
|
||||
import cn.lili.modules.store.entity.dos.Store;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 商品SKU变化
|
||||
*
|
||||
@@ -14,7 +24,7 @@ import org.springframework.stereotype.Service;
|
||||
* @since 2020-07-03 11:20
|
||||
*/
|
||||
@Service
|
||||
public class GoodsSkuExecute implements GoodsCommentCompleteEvent {
|
||||
public class GoodsSkuExecute implements GoodsCommentCompleteEvent, StoreSettingChangeEvent {
|
||||
|
||||
/**
|
||||
* 商品
|
||||
@@ -22,9 +32,26 @@ public class GoodsSkuExecute implements GoodsCommentCompleteEvent {
|
||||
@Autowired
|
||||
private GoodsSkuService goodsSkuService;
|
||||
|
||||
@Autowired
|
||||
private GoodsService goodsService;
|
||||
|
||||
@Autowired
|
||||
private Cache cache;
|
||||
|
||||
@Override
|
||||
public void goodsComment(MemberEvaluation memberEvaluation) {
|
||||
goodsSkuService.updateGoodsSkuCommentNum(memberEvaluation.getSkuId());
|
||||
goodsService.updateGoodsCommentNum(memberEvaluation.getGoodsId(), memberEvaluation.getSkuId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void storeSettingChange(Store store) {
|
||||
//修改数据后,清除商品索引
|
||||
GoodsSearchParams goodsSearchParams = new GoodsSearchParams();
|
||||
goodsSearchParams.setStoreId(store.getId());
|
||||
List<String> goodsSkuKeys = new ArrayList<>();
|
||||
for (GoodsSku goodsSku : goodsSkuService.getGoodsSkuByList(goodsSearchParams)) {
|
||||
goodsSkuKeys.add(CachePrefix.GOODS_SKU.getPrefix()+goodsSku.getId());
|
||||
}
|
||||
cache.multiDel(goodsSkuKeys);
|
||||
}
|
||||
}
|
||||
|
||||
60
consumer/src/main/java/cn/lili/event/impl/ImTalkExecute.java
Normal file
60
consumer/src/main/java/cn/lili/event/impl/ImTalkExecute.java
Normal file
@@ -0,0 +1,60 @@
|
||||
package cn.lili.event.impl;
|
||||
|
||||
import cn.lili.event.MemberInfoChangeEvent;
|
||||
import cn.lili.event.StoreSettingChangeEvent;
|
||||
import cn.lili.modules.im.entity.dos.ImTalk;
|
||||
import cn.lili.modules.im.service.ImTalkService;
|
||||
import cn.lili.modules.member.entity.dos.Member;
|
||||
import cn.lili.modules.store.entity.dos.Store;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Im对话消息
|
||||
*
|
||||
* @author chc
|
||||
* @since 2022/6/2114:46
|
||||
*/
|
||||
@Service
|
||||
public class ImTalkExecute implements MemberInfoChangeEvent, StoreSettingChangeEvent {
|
||||
|
||||
@Autowired
|
||||
private ImTalkService imTalkService;
|
||||
|
||||
@Override
|
||||
public void memberInfoChange(Member member) {
|
||||
//当与UserId1相等时
|
||||
List<ImTalk> imTalkList1 = imTalkService.list(new LambdaQueryWrapper<ImTalk>().eq(ImTalk::getUserId1, member.getId()));
|
||||
for (ImTalk imTalk : imTalkList1) {
|
||||
imTalk.setName1(member.getNickName());
|
||||
imTalk.setFace1(member.getFace());
|
||||
}
|
||||
imTalkService.updateBatchById(imTalkList1);
|
||||
List<ImTalk> imTalkList2 = imTalkService.list(new LambdaQueryWrapper<ImTalk>().eq(ImTalk::getUserId2, member.getId()));
|
||||
for (ImTalk imTalk : imTalkList2) {
|
||||
imTalk.setName2(member.getNickName());
|
||||
imTalk.setFace2(member.getFace());
|
||||
}
|
||||
imTalkService.updateBatchById(imTalkList2);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void storeSettingChange(Store store) {
|
||||
//当与UserId1相等时
|
||||
List<ImTalk> imTalkList1 = imTalkService.list(new LambdaQueryWrapper<ImTalk>().eq(ImTalk::getUserId1, store.getId()));
|
||||
for (ImTalk imTalk : imTalkList1) {
|
||||
imTalk.setName1(store.getStoreName());
|
||||
imTalk.setFace1(store.getStoreLogo());
|
||||
}
|
||||
imTalkService.updateBatchById(imTalkList1);
|
||||
List<ImTalk> imTalkList2 = imTalkService.list(new LambdaQueryWrapper<ImTalk>().eq(ImTalk::getUserId2, store.getId()));
|
||||
for (ImTalk imTalk : imTalkList2) {
|
||||
imTalk.setName2(store.getStoreName());
|
||||
imTalk.setFace2(store.getStoreLogo());
|
||||
}
|
||||
imTalkService.updateBatchById(imTalkList2);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
package cn.lili.event.impl;
|
||||
|
||||
import cn.hutool.core.collection.ListUtil;
|
||||
import cn.hutool.core.text.CharSequenceUtil;
|
||||
import cn.lili.event.AfterSaleStatusChangeEvent;
|
||||
import cn.lili.event.OrderStatusChangeEvent;
|
||||
import cn.lili.modules.order.aftersale.entity.dos.AfterSale;
|
||||
import cn.lili.modules.order.order.entity.dos.Order;
|
||||
import cn.lili.modules.order.order.entity.dto.OrderMessage;
|
||||
import cn.lili.modules.order.order.entity.enums.OrderStatusEnum;
|
||||
import cn.lili.modules.order.order.service.OrderService;
|
||||
import cn.lili.modules.order.trade.entity.enums.AfterSaleStatusEnum;
|
||||
import cn.lili.modules.promotion.service.MemberCouponService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* 会员优惠券执行类
|
||||
*
|
||||
* @author paulG
|
||||
* @since 2022/8/12
|
||||
**/
|
||||
@Service
|
||||
public class MemberCouponExecute implements OrderStatusChangeEvent, AfterSaleStatusChangeEvent {
|
||||
|
||||
/**
|
||||
* 订单
|
||||
*/
|
||||
@Autowired
|
||||
private OrderService orderService;
|
||||
|
||||
@Autowired
|
||||
private MemberCouponService memberCouponService;
|
||||
|
||||
@Override
|
||||
public void orderChange(OrderMessage orderMessage) {
|
||||
// 订单取消返还优惠券
|
||||
if (orderMessage.getNewStatus() == OrderStatusEnum.CANCELLED) {
|
||||
this.refundCoupon(orderMessage.getOrderSn());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void afterSaleStatusChange(AfterSale afterSale) {
|
||||
// 售后完成返还优惠券
|
||||
if (afterSale.getServiceStatus().equals(AfterSaleStatusEnum.COMPLETE.name())) {
|
||||
this.refundCoupon(afterSale.getOrderSn());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 退款返还优惠券
|
||||
* @param orderSn 订单编号
|
||||
*/
|
||||
private void refundCoupon(String orderSn) {
|
||||
Order order = orderService.getBySn(orderSn);
|
||||
if (CharSequenceUtil.isNotEmpty(order.getUseStoreMemberCouponIds())) {
|
||||
memberCouponService.recoveryMemberCoupon(ListUtil.toList(order.getUseStoreMemberCouponIds().split(",")));
|
||||
}
|
||||
if (CharSequenceUtil.isNotEmpty(order.getUsePlatformMemberCouponId())) {
|
||||
memberCouponService.recoveryMemberCoupon(ListUtil.toList(order.getUsePlatformMemberCouponId().split(",")));
|
||||
}
|
||||
}
|
||||
}
|
||||
58
consumer/src/main/java/cn/lili/event/impl/MemberExecute.java
Normal file
58
consumer/src/main/java/cn/lili/event/impl/MemberExecute.java
Normal file
@@ -0,0 +1,58 @@
|
||||
package cn.lili.event.impl;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.lili.common.enums.ClientTypeEnum;
|
||||
import cn.lili.event.MemberConnectLoginEvent;
|
||||
import cn.lili.event.MemberLoginEvent;
|
||||
import cn.lili.modules.connect.entity.dto.ConnectAuthUser;
|
||||
import cn.lili.modules.connect.entity.enums.ConnectEnum;
|
||||
import cn.lili.modules.connect.entity.enums.SourceEnum;
|
||||
import cn.lili.modules.connect.service.ConnectService;
|
||||
import cn.lili.modules.member.entity.dos.Member;
|
||||
import cn.lili.modules.member.service.MemberService;
|
||||
import cn.lili.modules.system.service.SettingService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* 会员自身业务
|
||||
* 会员登录,会员第三方登录
|
||||
*
|
||||
* @author Chopper
|
||||
* @version v1.0
|
||||
* 2022-01-11 11:08
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class MemberExecute implements MemberLoginEvent, MemberConnectLoginEvent {
|
||||
@Autowired
|
||||
private MemberService memberService;
|
||||
@Autowired
|
||||
private ConnectService connectService;
|
||||
@Autowired
|
||||
private SettingService settingService;
|
||||
|
||||
@Override
|
||||
public void memberLogin(Member member) {
|
||||
memberService.updateMemberLoginTime(member.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void memberConnectLogin(Member member, ConnectAuthUser authUser) {
|
||||
//保存UnionID
|
||||
if (StrUtil.isNotBlank(authUser.getToken().getUnionId())) {
|
||||
connectService.loginBindUser(member.getId(), authUser.getToken().getUnionId(), authUser.getSource().name());
|
||||
}
|
||||
//保存OpenID
|
||||
if (StrUtil.isNotBlank(authUser.getUuid())) {
|
||||
SourceEnum sourceEnum = SourceEnum.getSourceEnum(authUser.getSource(), authUser.getType());
|
||||
connectService.loginBindUser(member.getId(), authUser.getUuid(), sourceEnum.name());
|
||||
}
|
||||
//保存手机号,判断用户是否存手机号,如果不存在则保存手机号
|
||||
if (StrUtil.isNotBlank(authUser.getPhone())&&StrUtil.isBlank(member.getMobile())) {
|
||||
memberService.changeMobile(member.getId(),member.getMobile());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,8 @@
|
||||
package cn.lili.event.impl;
|
||||
|
||||
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.core.text.CharSequenceUtil;
|
||||
import cn.lili.common.utils.CurrencyUtil;
|
||||
import cn.lili.common.utils.StringUtils;
|
||||
import cn.lili.event.AfterSaleStatusChangeEvent;
|
||||
import cn.lili.event.GoodsCommentCompleteEvent;
|
||||
import cn.lili.event.MemberRegisterEvent;
|
||||
@@ -12,7 +11,7 @@ import cn.lili.modules.member.entity.dos.Member;
|
||||
import cn.lili.modules.member.entity.dos.MemberEvaluation;
|
||||
import cn.lili.modules.member.entity.enums.PointTypeEnum;
|
||||
import cn.lili.modules.member.service.MemberService;
|
||||
import cn.lili.modules.order.order.entity.dos.AfterSale;
|
||||
import cn.lili.modules.order.aftersale.entity.dos.AfterSale;
|
||||
import cn.lili.modules.order.order.entity.dos.Order;
|
||||
import cn.lili.modules.order.order.entity.dto.OrderMessage;
|
||||
import cn.lili.modules.order.order.entity.enums.OrderPromotionTypeEnum;
|
||||
@@ -105,14 +104,18 @@ public class MemberPointExecute implements MemberRegisterEvent, GoodsCommentComp
|
||||
}
|
||||
case COMPLETED: {
|
||||
Order order = orderService.getBySn(orderMessage.getOrderSn());
|
||||
//根据订单编号获取订单数据,如果订单促销类型不为空,并且订单促销类型为积分订单 则直接返回
|
||||
if (StringUtils.isNotEmpty(order.getOrderPromotionType()) && order.getOrderPromotionType().equals(OrderPromotionTypeEnum.POINTS.name())) {
|
||||
//如果是积分订单 则直接返回
|
||||
if (CharSequenceUtil.isNotEmpty(order.getOrderPromotionType())
|
||||
&& order.getOrderPromotionType().equals(OrderPromotionTypeEnum.POINTS.name())) {
|
||||
return;
|
||||
}
|
||||
//获取积分设置
|
||||
PointSetting pointSetting = getPointSetting();
|
||||
if (pointSetting.getConsumer() == 0) {
|
||||
return;
|
||||
}
|
||||
//计算赠送积分数量
|
||||
Double point = CurrencyUtil.mul(pointSetting.getMoney(), order.getFlowPrice(), 0);
|
||||
Double point = CurrencyUtil.mul(pointSetting.getConsumer(), order.getFlowPrice(), 0);
|
||||
//赠送会员积分
|
||||
memberService.updateMemberPoint(point.longValue(), PointTypeEnum.INCREASE.name(), order.getMemberId(), "会员下单,赠送积分" + point + "分");
|
||||
break;
|
||||
@@ -132,12 +135,16 @@ public class MemberPointExecute implements MemberRegisterEvent, GoodsCommentComp
|
||||
@Override
|
||||
public void afterSaleStatusChange(AfterSale afterSale) {
|
||||
if (afterSale.getServiceStatus().equals(AfterSaleStatusEnum.COMPLETE.name())) {
|
||||
Order order = orderService.getBySn(afterSale.getOrderSn());
|
||||
//获取积分设置
|
||||
PointSetting pointSetting = getPointSetting();
|
||||
if (pointSetting.getConsumer() == 0 || !OrderStatusEnum.COMPLETED.name().equals(order.getOrderStatus())) {
|
||||
return;
|
||||
}
|
||||
//计算扣除积分数量
|
||||
Double point = CurrencyUtil.mul(pointSetting.getMoney(), afterSale.getActualRefundPrice(), 0);
|
||||
Double point = CurrencyUtil.mul(pointSetting.getConsumer(), afterSale.getActualRefundPrice(), 0);
|
||||
//扣除会员积分
|
||||
memberService.updateMemberPoint(point.longValue(), PointTypeEnum.REDUCE.name(), afterSale.getMemberId(), "会员退款,回退积分" + point + "分");
|
||||
memberService.updateMemberPoint(point.longValue(), PointTypeEnum.REDUCE.name(), afterSale.getMemberId(), "会员退款,回退消费赠送积分" + point + "分");
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
package cn.lili.event.impl;
|
||||
|
||||
|
||||
import cn.lili.event.MemberRegisterEvent;
|
||||
import cn.lili.modules.member.entity.dos.Member;
|
||||
import cn.lili.modules.member.service.MemberWalletService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import cn.lili.event.MemberWithdrawalEvent;
|
||||
import cn.lili.modules.wallet.entity.dto.MemberWalletUpdateDTO;
|
||||
import cn.lili.modules.wallet.entity.dto.MemberWithdrawalMessage;
|
||||
import cn.lili.modules.wallet.entity.enums.DepositServiceTypeEnum;
|
||||
import cn.lili.modules.wallet.entity.enums.WithdrawStatusEnum;
|
||||
import cn.lili.modules.wallet.service.MemberWalletService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -15,13 +17,35 @@ import org.springframework.stereotype.Service;
|
||||
* @since 2020-07-03 11:20
|
||||
*/
|
||||
@Service
|
||||
public class MemberWalletExecute implements MemberRegisterEvent {
|
||||
public class MemberWalletExecute implements MemberWithdrawalEvent {
|
||||
|
||||
@Autowired
|
||||
private MemberWalletService memberWalletService;
|
||||
|
||||
@Override
|
||||
public void memberRegister(Member member) {
|
||||
memberWalletService.save(member.getId(),member.getUsername());
|
||||
public void memberWithdrawal(MemberWithdrawalMessage memberWithdrawalMessage) {
|
||||
switch (WithdrawStatusEnum.valueOf(memberWithdrawalMessage.getStatus())) {
|
||||
case VIA_AUDITING:
|
||||
memberWalletService.withdrawal(memberWithdrawalMessage.getMemberWithdrawApplyId());
|
||||
break;
|
||||
case SUCCESS:
|
||||
//提现成功扣减冻结金额
|
||||
memberWalletService.reduceFrozen(
|
||||
new MemberWalletUpdateDTO(memberWithdrawalMessage.getPrice(), memberWithdrawalMessage.getMemberId(), "提现成功,余额提现",
|
||||
DepositServiceTypeEnum.WALLET_WITHDRAWAL.name()));
|
||||
break;
|
||||
case ERROR:
|
||||
//需要从冻结金额扣减到余额
|
||||
memberWalletService.increaseWithdrawal(new MemberWalletUpdateDTO(memberWithdrawalMessage.getPrice(),
|
||||
memberWithdrawalMessage.getMemberId(), "第三方提现失败,提现金额解冻到余额", DepositServiceTypeEnum.WALLET_WITHDRAWAL.name()));
|
||||
break;
|
||||
case FAIL_AUDITING:
|
||||
//需要从冻结金额扣减到余额
|
||||
memberWalletService.increaseWithdrawal(new MemberWalletUpdateDTO(memberWithdrawalMessage.getPrice(),
|
||||
memberWithdrawalMessage.getMemberId(), "审核拒绝,提现金额解冻到余额", DepositServiceTypeEnum.WALLET_WITHDRAWAL.name()));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user