├── .gitignore
├── README.md
├── imgs
├── 1653056228879.png
├── 1653057830540.png
├── 1653057872536.png
├── 1653059409865.png
├── 1653060176932.png
├── 1653060204933.png
├── 1653060237073.png
├── 1653060337562.png
├── 1653060497599.png
├── 1653060588190.png
├── 1653066005825.png
├── 1653066208144.png
├── 1653067054461.png
├── 1653067706666.png
├── 1653068196656.png
├── 1653068821351.png
├── 1653068874258.png
├── 1653069893050.png
├── 1653319261433.png
├── 1653319410188.png
├── 1653319432723.png
├── 1653319474181.png
├── 1653320764547.png
├── 1653320822964.png
├── 1653322097736.png
├── 1653322190155.png
├── 1653322491532.png
├── 1653322506393.png
├── 1653322857620.png
├── 1653323595206.png
├── 1653325798637.png
├── 1653325871232.png
├── 1653325929549.png
├── 1653326156516.png
├── 1653327124561.png
├── 1653327884526.png
├── 1653328022622.png
├── 1653328288627.png
├── 1653328663897.png
├── 1653357522914.png
├── 1653357860001.png
├── 1653360138640.png
├── 1653360308731.png
├── 1653360675507.png
├── 1653360807133.png
├── 1653360864839.png
├── 1653362612286.png
├── 1653363100502.png
├── 1653363172079.png
├── 1653365145124.png
├── 1653365839526.png
├── 1653366238564.png
├── 1653368335155.png
├── 1653368562591.png
├── 1653369268550.png
├── 1653370271627.png
├── 1653371854389.png
├── 1653373434815.png
├── 1653373887844.png
├── 1653373908620.png
├── 1653374044740.png
├── 1653374296906.png
├── 1653381972377.png
├── 1653381992018.png
├── 1653382219377.png
├── 1653382304000.png
├── 1653382669900.png
├── 1653382694491.png
├── 1653382793857.png
├── 1653382830810.png
├── 1653383810643.png
├── 1653385920025.png
├── 1653387398820.png
├── 1653387764938.png
├── 1653392181413.png
├── 1653392211969.png
├── 1653392218531.png
├── 1653392247274.png
├── 1653392438917.png
├── 1653392583285.png
├── 1653393304844.png
├── 1653546070602.png
├── 1653546736063.png
├── 1653548087334.png
├── 1653553093967.png
├── 1653553277681.png
├── 1653553998403.png
├── 1653554055048.png
├── 1653560899680.png
├── 1653560952106.png
├── 1653560975828.png
├── 1653560986599.png
├── 1653561657295.png
├── 1653562234886.png
├── 1653574526668.png
├── 1653574787557.png
├── 1653574849336.png
├── 1653575176451.png
├── 1653575506373.png
├── 1653577108429.png
├── 1653577280060.png
├── 1653577301737.png
├── 1653577349691.png
├── 1653577445413.png
├── 1653577643629.png
├── 1653577659166.png
├── 1653577689129.png
├── 1653577801668.png
├── 1653577984924.png
├── 1653578211854.png
├── 1653578560691.png
├── 1653578992639.png
├── 1653579931626.png
├── 1653581590453.png
├── 1653805077118.png
├── 1653805203758.png
├── 1653806140822.png
├── 1653806253817.png
├── 1653806706296.png
├── 1653806949217.png
├── 1653806973212.png
├── 1653808641260.png
├── 1653808993693.png
├── 1653809450816.png
├── 1653809875208.png
├── 1653812346852.png
├── 1653813047671.png
├── 1653813422676.png
├── 1653813462834.png
├── 1653819799739.png
├── 1653819821591.png
├── 1653821271347.png
├── 1653822021827.png
├── 1653822036941.png
├── 1653823145495.png
├── 1653824105810.png
├── 1653824498278.png
├── 1653824543977.png
├── 1653833954301.png
├── 1653833970361.png
├── 1653834439027.png
├── 1653834455899.png
├── 1653835784444.png
├── 1653836416586.png
├── 1653836578970.png
├── 1653837988985.png
├── 1653838053608.png
├── 1656079017728.png
├── 1656080546603.png
├── 1656082824939.png
├── image-20220523212915666.png
├── image-20220523214414123.png
├── image-20220523220950421.png
├── image-20220523221428827.png
└── 避震器.gif
├── pom.xml
└── src
├── main
├── java
│ └── com
│ │ └── xydp
│ │ ├── HmDianPingApplication.java
│ │ ├── config
│ │ ├── MQConfig.java
│ │ ├── MvcConfig.java
│ │ ├── MybatisConfig.java
│ │ ├── RedisConfig.java
│ │ └── WebExceptionAdvice.java
│ │ ├── controller
│ │ ├── BlogCommentsController.java
│ │ ├── BlogController.java
│ │ ├── FollowController.java
│ │ ├── ShopController.java
│ │ ├── ShopTypeController.java
│ │ ├── TokenController.java
│ │ ├── UploadController.java
│ │ ├── UserController.java
│ │ ├── VoucherController.java
│ │ └── VoucherOrderController.java
│ │ ├── dto
│ │ ├── LoginFormDTO.java
│ │ ├── Result.java
│ │ ├── ScrollResult.java
│ │ ├── SeckillOrderDTO.java
│ │ └── UserDTO.java
│ │ ├── entity
│ │ ├── Blog.java
│ │ ├── BlogComments.java
│ │ ├── Follow.java
│ │ ├── SeckillVoucher.java
│ │ ├── Shop.java
│ │ ├── ShopType.java
│ │ ├── User.java
│ │ ├── UserInfo.java
│ │ ├── Voucher.java
│ │ └── VoucherOrder.java
│ │ ├── exception
│ │ └── BusinessException.java
│ │ ├── interceptor
│ │ ├── LoginInterceptor.java
│ │ └── RefreshTokenInterceptor.java
│ │ ├── mapper
│ │ ├── BlogCommentsMapper.java
│ │ ├── BlogMapper.java
│ │ ├── FollowMapper.java
│ │ ├── SeckillVoucherMapper.java
│ │ ├── ShopMapper.java
│ │ ├── ShopTypeMapper.java
│ │ ├── UserInfoMapper.java
│ │ ├── UserMapper.java
│ │ ├── VoucherMapper.java
│ │ └── VoucherOrderMapper.java
│ │ ├── mq
│ │ ├── MqReceiver.java
│ │ └── MqSender.java
│ │ ├── prevent
│ │ ├── Prevent.java
│ │ ├── PreventAop.java
│ │ └── RepeatSubmit.java
│ │ ├── service
│ │ ├── IBlogCommentsService.java
│ │ ├── IBlogService.java
│ │ ├── IFollowService.java
│ │ ├── ISeckillVoucherService.java
│ │ ├── IShopService.java
│ │ ├── IShopTypeService.java
│ │ ├── ITokenService.java
│ │ ├── IUserInfoService.java
│ │ ├── IUserService.java
│ │ ├── IVoucherOrderService.java
│ │ ├── IVoucherService.java
│ │ └── impl
│ │ │ ├── BlogCommentsServiceImpl.java
│ │ │ ├── BlogServiceImpl.java
│ │ │ ├── FollowServiceImpl.java
│ │ │ ├── ITokenServiceImpl.java
│ │ │ ├── SeckillVoucherServiceImpl.java
│ │ │ ├── ShopServiceImpl.java
│ │ │ ├── ShopTypeServiceImpl.java
│ │ │ ├── UserInfoServiceImpl.java
│ │ │ ├── UserServiceImpl.java
│ │ │ ├── VoucherOrderServiceImpl.java
│ │ │ └── VoucherServiceImpl.java
│ │ └── utils
│ │ ├── CacheClient.java
│ │ ├── CommonUtils.java
│ │ ├── ILock.java
│ │ ├── IPUtils.java
│ │ ├── MQConstants.java
│ │ ├── PasswordEncoder.java
│ │ ├── RedisConstants.java
│ │ ├── RedisData.java
│ │ ├── RedisIdWorker.java
│ │ ├── RegexPatterns.java
│ │ ├── RegexUtils.java
│ │ ├── SimpleRedisLock.java
│ │ ├── SystemConstants.java
│ │ └── UserHolder.java
└── resources
│ ├── application.yaml
│ ├── db
│ └── hmdp.sql
│ ├── mapper
│ └── VoucherMapper.xml
│ ├── reentrantTryLock.lua
│ ├── reentrantUnlock.lua
│ ├── seckill.lua
│ ├── seckillBackup.lua
│ ├── tokens.txt
│ └── unlock.lua
└── test
└── java
└── com
└── xydp
├── HmDianPingApplicationTests.java
├── RedissonTest.java
└── VoucherOrderControllerTest.java
/.gitignore:
--------------------------------------------------------------------------------
1 | <<<<<<< HEAD
2 | ### Java template
3 | # Compiled class file
4 | *.class
5 |
6 | # Log file
7 | *.log
8 |
9 | # BlueJ files
10 | *.ctxt
11 |
12 | # Mobile Tools for Java (J2ME)
13 | .mtj.tmp/
14 |
15 | # Package Files #
16 | *.jar
17 | *.war
18 | *.nar
19 | *.ear
20 | *.zip
21 | *.tar.gz
22 | *.rar
23 |
24 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
25 | hs_err_pid*
26 | replay_pid*
27 |
28 | =======
29 | HELP.md
30 | target/
31 | !.mvn/wrapper/maven-wrapper.jar
32 | !**/src/main/**
33 | !**/src/test/**
34 |
35 | ### STS ###
36 | .apt_generated
37 | .classpath
38 | .factorypath
39 | .project
40 | .settings
41 | .springBeans
42 | .sts4-cache
43 |
44 | ### IntelliJ IDEA ###
45 | .idea
46 | *.iws
47 | *.iml
48 | *.ipr
49 |
50 | ### NetBeans ###
51 | /nbproject/private/
52 | /nbbuild/
53 | /dist/
54 | /nbdist/
55 | /.nb-gradle/
56 | build/
57 | logs/
58 |
59 | ### VS Code ###
60 | .vscode/
61 | >>>>>>> cd93a7acbb1b85a5ac2bbeb09bac07112589a4e3
62 |
--------------------------------------------------------------------------------
/imgs/1653056228879.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653056228879.png
--------------------------------------------------------------------------------
/imgs/1653057830540.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653057830540.png
--------------------------------------------------------------------------------
/imgs/1653057872536.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653057872536.png
--------------------------------------------------------------------------------
/imgs/1653059409865.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653059409865.png
--------------------------------------------------------------------------------
/imgs/1653060176932.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653060176932.png
--------------------------------------------------------------------------------
/imgs/1653060204933.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653060204933.png
--------------------------------------------------------------------------------
/imgs/1653060237073.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653060237073.png
--------------------------------------------------------------------------------
/imgs/1653060337562.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653060337562.png
--------------------------------------------------------------------------------
/imgs/1653060497599.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653060497599.png
--------------------------------------------------------------------------------
/imgs/1653060588190.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653060588190.png
--------------------------------------------------------------------------------
/imgs/1653066005825.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653066005825.png
--------------------------------------------------------------------------------
/imgs/1653066208144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653066208144.png
--------------------------------------------------------------------------------
/imgs/1653067054461.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653067054461.png
--------------------------------------------------------------------------------
/imgs/1653067706666.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653067706666.png
--------------------------------------------------------------------------------
/imgs/1653068196656.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653068196656.png
--------------------------------------------------------------------------------
/imgs/1653068821351.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653068821351.png
--------------------------------------------------------------------------------
/imgs/1653068874258.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653068874258.png
--------------------------------------------------------------------------------
/imgs/1653069893050.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653069893050.png
--------------------------------------------------------------------------------
/imgs/1653319261433.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653319261433.png
--------------------------------------------------------------------------------
/imgs/1653319410188.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653319410188.png
--------------------------------------------------------------------------------
/imgs/1653319432723.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653319432723.png
--------------------------------------------------------------------------------
/imgs/1653319474181.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653319474181.png
--------------------------------------------------------------------------------
/imgs/1653320764547.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653320764547.png
--------------------------------------------------------------------------------
/imgs/1653320822964.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653320822964.png
--------------------------------------------------------------------------------
/imgs/1653322097736.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653322097736.png
--------------------------------------------------------------------------------
/imgs/1653322190155.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653322190155.png
--------------------------------------------------------------------------------
/imgs/1653322491532.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653322491532.png
--------------------------------------------------------------------------------
/imgs/1653322506393.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653322506393.png
--------------------------------------------------------------------------------
/imgs/1653322857620.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653322857620.png
--------------------------------------------------------------------------------
/imgs/1653323595206.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653323595206.png
--------------------------------------------------------------------------------
/imgs/1653325798637.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653325798637.png
--------------------------------------------------------------------------------
/imgs/1653325871232.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653325871232.png
--------------------------------------------------------------------------------
/imgs/1653325929549.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653325929549.png
--------------------------------------------------------------------------------
/imgs/1653326156516.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653326156516.png
--------------------------------------------------------------------------------
/imgs/1653327124561.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653327124561.png
--------------------------------------------------------------------------------
/imgs/1653327884526.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653327884526.png
--------------------------------------------------------------------------------
/imgs/1653328022622.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653328022622.png
--------------------------------------------------------------------------------
/imgs/1653328288627.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653328288627.png
--------------------------------------------------------------------------------
/imgs/1653328663897.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653328663897.png
--------------------------------------------------------------------------------
/imgs/1653357522914.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653357522914.png
--------------------------------------------------------------------------------
/imgs/1653357860001.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653357860001.png
--------------------------------------------------------------------------------
/imgs/1653360138640.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653360138640.png
--------------------------------------------------------------------------------
/imgs/1653360308731.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653360308731.png
--------------------------------------------------------------------------------
/imgs/1653360675507.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653360675507.png
--------------------------------------------------------------------------------
/imgs/1653360807133.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653360807133.png
--------------------------------------------------------------------------------
/imgs/1653360864839.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653360864839.png
--------------------------------------------------------------------------------
/imgs/1653362612286.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653362612286.png
--------------------------------------------------------------------------------
/imgs/1653363100502.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653363100502.png
--------------------------------------------------------------------------------
/imgs/1653363172079.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653363172079.png
--------------------------------------------------------------------------------
/imgs/1653365145124.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653365145124.png
--------------------------------------------------------------------------------
/imgs/1653365839526.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653365839526.png
--------------------------------------------------------------------------------
/imgs/1653366238564.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653366238564.png
--------------------------------------------------------------------------------
/imgs/1653368335155.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653368335155.png
--------------------------------------------------------------------------------
/imgs/1653368562591.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653368562591.png
--------------------------------------------------------------------------------
/imgs/1653369268550.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653369268550.png
--------------------------------------------------------------------------------
/imgs/1653370271627.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653370271627.png
--------------------------------------------------------------------------------
/imgs/1653371854389.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653371854389.png
--------------------------------------------------------------------------------
/imgs/1653373434815.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653373434815.png
--------------------------------------------------------------------------------
/imgs/1653373887844.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653373887844.png
--------------------------------------------------------------------------------
/imgs/1653373908620.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653373908620.png
--------------------------------------------------------------------------------
/imgs/1653374044740.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653374044740.png
--------------------------------------------------------------------------------
/imgs/1653374296906.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653374296906.png
--------------------------------------------------------------------------------
/imgs/1653381972377.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653381972377.png
--------------------------------------------------------------------------------
/imgs/1653381992018.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653381992018.png
--------------------------------------------------------------------------------
/imgs/1653382219377.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653382219377.png
--------------------------------------------------------------------------------
/imgs/1653382304000.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653382304000.png
--------------------------------------------------------------------------------
/imgs/1653382669900.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653382669900.png
--------------------------------------------------------------------------------
/imgs/1653382694491.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653382694491.png
--------------------------------------------------------------------------------
/imgs/1653382793857.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653382793857.png
--------------------------------------------------------------------------------
/imgs/1653382830810.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653382830810.png
--------------------------------------------------------------------------------
/imgs/1653383810643.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653383810643.png
--------------------------------------------------------------------------------
/imgs/1653385920025.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653385920025.png
--------------------------------------------------------------------------------
/imgs/1653387398820.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653387398820.png
--------------------------------------------------------------------------------
/imgs/1653387764938.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653387764938.png
--------------------------------------------------------------------------------
/imgs/1653392181413.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653392181413.png
--------------------------------------------------------------------------------
/imgs/1653392211969.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653392211969.png
--------------------------------------------------------------------------------
/imgs/1653392218531.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653392218531.png
--------------------------------------------------------------------------------
/imgs/1653392247274.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653392247274.png
--------------------------------------------------------------------------------
/imgs/1653392438917.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653392438917.png
--------------------------------------------------------------------------------
/imgs/1653392583285.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653392583285.png
--------------------------------------------------------------------------------
/imgs/1653393304844.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653393304844.png
--------------------------------------------------------------------------------
/imgs/1653546070602.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653546070602.png
--------------------------------------------------------------------------------
/imgs/1653546736063.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653546736063.png
--------------------------------------------------------------------------------
/imgs/1653548087334.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653548087334.png
--------------------------------------------------------------------------------
/imgs/1653553093967.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653553093967.png
--------------------------------------------------------------------------------
/imgs/1653553277681.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653553277681.png
--------------------------------------------------------------------------------
/imgs/1653553998403.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653553998403.png
--------------------------------------------------------------------------------
/imgs/1653554055048.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653554055048.png
--------------------------------------------------------------------------------
/imgs/1653560899680.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653560899680.png
--------------------------------------------------------------------------------
/imgs/1653560952106.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653560952106.png
--------------------------------------------------------------------------------
/imgs/1653560975828.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653560975828.png
--------------------------------------------------------------------------------
/imgs/1653560986599.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653560986599.png
--------------------------------------------------------------------------------
/imgs/1653561657295.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653561657295.png
--------------------------------------------------------------------------------
/imgs/1653562234886.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653562234886.png
--------------------------------------------------------------------------------
/imgs/1653574526668.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653574526668.png
--------------------------------------------------------------------------------
/imgs/1653574787557.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653574787557.png
--------------------------------------------------------------------------------
/imgs/1653574849336.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653574849336.png
--------------------------------------------------------------------------------
/imgs/1653575176451.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653575176451.png
--------------------------------------------------------------------------------
/imgs/1653575506373.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653575506373.png
--------------------------------------------------------------------------------
/imgs/1653577108429.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653577108429.png
--------------------------------------------------------------------------------
/imgs/1653577280060.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653577280060.png
--------------------------------------------------------------------------------
/imgs/1653577301737.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653577301737.png
--------------------------------------------------------------------------------
/imgs/1653577349691.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653577349691.png
--------------------------------------------------------------------------------
/imgs/1653577445413.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653577445413.png
--------------------------------------------------------------------------------
/imgs/1653577643629.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653577643629.png
--------------------------------------------------------------------------------
/imgs/1653577659166.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653577659166.png
--------------------------------------------------------------------------------
/imgs/1653577689129.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653577689129.png
--------------------------------------------------------------------------------
/imgs/1653577801668.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653577801668.png
--------------------------------------------------------------------------------
/imgs/1653577984924.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653577984924.png
--------------------------------------------------------------------------------
/imgs/1653578211854.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653578211854.png
--------------------------------------------------------------------------------
/imgs/1653578560691.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653578560691.png
--------------------------------------------------------------------------------
/imgs/1653578992639.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653578992639.png
--------------------------------------------------------------------------------
/imgs/1653579931626.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653579931626.png
--------------------------------------------------------------------------------
/imgs/1653581590453.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653581590453.png
--------------------------------------------------------------------------------
/imgs/1653805077118.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653805077118.png
--------------------------------------------------------------------------------
/imgs/1653805203758.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653805203758.png
--------------------------------------------------------------------------------
/imgs/1653806140822.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653806140822.png
--------------------------------------------------------------------------------
/imgs/1653806253817.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653806253817.png
--------------------------------------------------------------------------------
/imgs/1653806706296.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653806706296.png
--------------------------------------------------------------------------------
/imgs/1653806949217.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653806949217.png
--------------------------------------------------------------------------------
/imgs/1653806973212.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653806973212.png
--------------------------------------------------------------------------------
/imgs/1653808641260.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653808641260.png
--------------------------------------------------------------------------------
/imgs/1653808993693.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653808993693.png
--------------------------------------------------------------------------------
/imgs/1653809450816.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653809450816.png
--------------------------------------------------------------------------------
/imgs/1653809875208.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653809875208.png
--------------------------------------------------------------------------------
/imgs/1653812346852.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653812346852.png
--------------------------------------------------------------------------------
/imgs/1653813047671.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653813047671.png
--------------------------------------------------------------------------------
/imgs/1653813422676.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653813422676.png
--------------------------------------------------------------------------------
/imgs/1653813462834.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653813462834.png
--------------------------------------------------------------------------------
/imgs/1653819799739.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653819799739.png
--------------------------------------------------------------------------------
/imgs/1653819821591.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653819821591.png
--------------------------------------------------------------------------------
/imgs/1653821271347.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653821271347.png
--------------------------------------------------------------------------------
/imgs/1653822021827.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653822021827.png
--------------------------------------------------------------------------------
/imgs/1653822036941.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653822036941.png
--------------------------------------------------------------------------------
/imgs/1653823145495.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653823145495.png
--------------------------------------------------------------------------------
/imgs/1653824105810.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653824105810.png
--------------------------------------------------------------------------------
/imgs/1653824498278.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653824498278.png
--------------------------------------------------------------------------------
/imgs/1653824543977.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653824543977.png
--------------------------------------------------------------------------------
/imgs/1653833954301.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653833954301.png
--------------------------------------------------------------------------------
/imgs/1653833970361.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653833970361.png
--------------------------------------------------------------------------------
/imgs/1653834439027.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653834439027.png
--------------------------------------------------------------------------------
/imgs/1653834455899.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653834455899.png
--------------------------------------------------------------------------------
/imgs/1653835784444.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653835784444.png
--------------------------------------------------------------------------------
/imgs/1653836416586.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653836416586.png
--------------------------------------------------------------------------------
/imgs/1653836578970.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653836578970.png
--------------------------------------------------------------------------------
/imgs/1653837988985.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653837988985.png
--------------------------------------------------------------------------------
/imgs/1653838053608.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1653838053608.png
--------------------------------------------------------------------------------
/imgs/1656079017728.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1656079017728.png
--------------------------------------------------------------------------------
/imgs/1656080546603.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1656080546603.png
--------------------------------------------------------------------------------
/imgs/1656082824939.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/1656082824939.png
--------------------------------------------------------------------------------
/imgs/image-20220523212915666.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/image-20220523212915666.png
--------------------------------------------------------------------------------
/imgs/image-20220523214414123.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/image-20220523214414123.png
--------------------------------------------------------------------------------
/imgs/image-20220523220950421.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/image-20220523220950421.png
--------------------------------------------------------------------------------
/imgs/image-20220523221428827.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/image-20220523221428827.png
--------------------------------------------------------------------------------
/imgs/避震器.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viego1999/xy-dianping/f6fc3d03026939593f7f15d172a595449f5c8e78/imgs/避震器.gif
--------------------------------------------------------------------------------
/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
13 | * 实际上,RabbitMQ 支持两种模式: 14 | *
16 | * 博客实体类 17 | *
18 | * 19 | * @author 虎哥 20 | * @since 2021-12-22 21 | */ 22 | @Data 23 | @EqualsAndHashCode(callSuper = false) 24 | @Accessors(chain = true) 25 | @TableName("tb_blog") 26 | public class Blog implements Serializable { 27 | /** 28 | * 序列号ID 29 | */ 30 | private static final long serialVersionUID = 1L; 31 | 32 | /** 33 | * 主键 34 | */ 35 | @TableId(value = "id", type = IdType.AUTO) 36 | private Long id; 37 | 38 | /** 39 | * 商户id 40 | */ 41 | private Long shopId; 42 | 43 | /** 44 | * 用户id 45 | */ 46 | private Long userId; 47 | 48 | /** 49 | * 用户图标 50 | */ 51 | @TableField(exist = false) 52 | private String icon; 53 | 54 | /** 55 | * 用户姓名 56 | */ 57 | @TableField(exist = false) 58 | private String name; 59 | 60 | /** 61 | * 是否点赞过了 62 | */ 63 | @TableField(exist = false) 64 | private Boolean isLike; 65 | 66 | /** 67 | * 标题 68 | */ 69 | private String title; 70 | 71 | /** 72 | * 探店的照片,最多9张,多张以","隔开 73 | */ 74 | private String images; 75 | 76 | /** 77 | * 探店的文字描述 78 | */ 79 | private String content; 80 | 81 | /** 82 | * 点赞数量 83 | */ 84 | private Integer liked; 85 | 86 | /** 87 | * 评论数量 88 | */ 89 | private Integer comments; 90 | 91 | /** 92 | * 创建时间 93 | */ 94 | private LocalDateTime createTime; 95 | 96 | /** 97 | * 更新时间 98 | */ 99 | private LocalDateTime updateTime; 100 | 101 | } 102 | -------------------------------------------------------------------------------- /src/main/java/com/xydp/entity/BlogComments.java: -------------------------------------------------------------------------------- 1 | package com.xydp.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | import lombok.Data; 7 | import lombok.EqualsAndHashCode; 8 | import lombok.experimental.Accessors; 9 | 10 | import java.io.Serializable; 11 | import java.time.LocalDateTime; 12 | 13 | /** 14 | *15 | * 16 | *
17 | * 18 | * @author 虎哥 19 | * @since 2021-12-22 20 | */ 21 | @Data 22 | @EqualsAndHashCode(callSuper = false) 23 | @Accessors(chain = true) 24 | @TableName("tb_blog_comments") 25 | public class BlogComments implements Serializable { 26 | 27 | private static final long serialVersionUID = 1L; 28 | 29 | /** 30 | * 主键 31 | */ 32 | @TableId(value = "id", type = IdType.AUTO) 33 | private Long id; 34 | 35 | /** 36 | * 用户id 37 | */ 38 | private Long userId; 39 | 40 | /** 41 | * 探店id 42 | */ 43 | private Long blogId; 44 | 45 | /** 46 | * 关联的1级评论id,如果是一级评论,则值为0 47 | */ 48 | private Long parentId; 49 | 50 | /** 51 | * 回复的评论id 52 | */ 53 | private Long answerId; 54 | 55 | /** 56 | * 回复的内容 57 | */ 58 | private String content; 59 | 60 | /** 61 | * 点赞数 62 | */ 63 | private Integer liked; 64 | 65 | /** 66 | * 状态,0:正常,1:被举报,2:禁止查看 67 | */ 68 | private Boolean status; 69 | 70 | /** 71 | * 创建时间 72 | */ 73 | private LocalDateTime createTime; 74 | 75 | /** 76 | * 更新时间 77 | */ 78 | private LocalDateTime updateTime; 79 | 80 | 81 | } 82 | -------------------------------------------------------------------------------- /src/main/java/com/xydp/entity/Follow.java: -------------------------------------------------------------------------------- 1 | package com.xydp.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | import lombok.Data; 7 | import lombok.EqualsAndHashCode; 8 | import lombok.experimental.Accessors; 9 | 10 | import java.io.Serializable; 11 | import java.time.LocalDateTime; 12 | 13 | /** 14 | *15 | * 16 | *
17 | * 18 | * @author 虎哥 19 | * @since 2021-12-22 20 | */ 21 | @Data 22 | @EqualsAndHashCode(callSuper = false) 23 | @Accessors(chain = true) 24 | @TableName("tb_follow") 25 | public class Follow implements Serializable { 26 | 27 | private static final long serialVersionUID = 1L; 28 | 29 | /** 30 | * 主键 31 | */ 32 | @TableId(value = "id", type = IdType.AUTO) 33 | private Long id; 34 | 35 | /** 36 | * 用户id 37 | */ 38 | private Long userId; 39 | 40 | /** 41 | * 关联的用户id 42 | */ 43 | private Long followUserId; 44 | 45 | /** 46 | * 创建时间 47 | */ 48 | private LocalDateTime createTime; 49 | 50 | 51 | } 52 | -------------------------------------------------------------------------------- /src/main/java/com/xydp/entity/SeckillVoucher.java: -------------------------------------------------------------------------------- 1 | package com.xydp.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | import lombok.Data; 7 | import lombok.EqualsAndHashCode; 8 | import lombok.experimental.Accessors; 9 | 10 | import java.io.Serializable; 11 | import java.time.LocalDateTime; 12 | 13 | /** 14 | *15 | * 秒杀优惠券表,与优惠券是一对一关系 16 | *
17 | * 18 | * @author 虎哥 19 | * @since 2022-01-04 20 | */ 21 | @Data 22 | @EqualsAndHashCode(callSuper = false) 23 | @Accessors(chain = true) 24 | @TableName("tb_seckill_voucher") 25 | public class SeckillVoucher implements Serializable { 26 | 27 | private static final long serialVersionUID = 1L; 28 | 29 | /** 30 | * 关联的优惠券的id 31 | */ 32 | @TableId(value = "voucher_id", type = IdType.INPUT) 33 | private Long voucherId; 34 | 35 | /** 36 | * 库存 37 | */ 38 | private Integer stock; 39 | 40 | /** 41 | * 创建时间 42 | */ 43 | private LocalDateTime createTime; 44 | 45 | /** 46 | * 生效时间 47 | */ 48 | private LocalDateTime beginTime; 49 | 50 | /** 51 | * 失效时间 52 | */ 53 | private LocalDateTime endTime; 54 | 55 | /** 56 | * 更新时间 57 | */ 58 | private LocalDateTime updateTime; 59 | 60 | 61 | } 62 | -------------------------------------------------------------------------------- /src/main/java/com/xydp/entity/Shop.java: -------------------------------------------------------------------------------- 1 | package com.xydp.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableField; 5 | import com.baomidou.mybatisplus.annotation.TableId; 6 | import com.baomidou.mybatisplus.annotation.TableName; 7 | import lombok.Data; 8 | import lombok.EqualsAndHashCode; 9 | import lombok.experimental.Accessors; 10 | 11 | import java.io.Serializable; 12 | import java.time.LocalDateTime; 13 | 14 | /** 15 | *16 | * 店铺实体类 17 | *
18 | * 19 | * @author 虎哥 20 | * @since 2021-12-22 21 | */ 22 | @Data 23 | @EqualsAndHashCode(callSuper = false) 24 | @Accessors(chain = true) 25 | @TableName("tb_shop") 26 | public class Shop implements Serializable { 27 | 28 | private static final long serialVersionUID = 1L; 29 | 30 | /** 31 | * 主键 32 | */ 33 | @TableId(value = "id", type = IdType.AUTO) 34 | private Long id; 35 | 36 | /** 37 | * 商铺名称 38 | */ 39 | private String name; 40 | 41 | /** 42 | * 商铺类型的id 43 | */ 44 | private Long typeId; 45 | 46 | /** 47 | * 商铺图片,多个图片以','隔开 48 | */ 49 | private String images; 50 | 51 | /** 52 | * 商圈,例如陆家嘴 53 | */ 54 | private String area; 55 | 56 | /** 57 | * 地址 58 | */ 59 | private String address; 60 | 61 | /** 62 | * 经度 63 | */ 64 | private Double x; 65 | 66 | /** 67 | * 维度 68 | */ 69 | private Double y; 70 | 71 | /** 72 | * 均价,取整数 73 | */ 74 | private Long avgPrice; 75 | 76 | /** 77 | * 销量 78 | */ 79 | private Integer sold; 80 | 81 | /** 82 | * 评论数量 83 | */ 84 | private Integer comments; 85 | 86 | /** 87 | * 评分,1~5分,乘10保存,避免小数 88 | */ 89 | private Integer score; 90 | 91 | /** 92 | * 营业时间,例如 10:00-22:00 93 | */ 94 | private String openHours; 95 | 96 | /** 97 | * 创建时间 98 | */ 99 | private LocalDateTime createTime; 100 | 101 | /** 102 | * 更新时间 103 | */ 104 | private LocalDateTime updateTime; 105 | 106 | @TableField(exist = false) 107 | private Double distance; 108 | } 109 | -------------------------------------------------------------------------------- /src/main/java/com/xydp/entity/ShopType.java: -------------------------------------------------------------------------------- 1 | package com.xydp.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | import com.fasterxml.jackson.annotation.JsonIgnore; 7 | import lombok.Data; 8 | import lombok.EqualsAndHashCode; 9 | import lombok.experimental.Accessors; 10 | 11 | import java.io.Serializable; 12 | import java.time.LocalDateTime; 13 | 14 | /** 15 | *16 | * 17 | *
18 | * 19 | * @author 虎哥 20 | * @since 2021-12-22 21 | */ 22 | @Data 23 | @EqualsAndHashCode(callSuper = false) 24 | @Accessors(chain = true) 25 | @TableName("tb_shop_type") 26 | public class ShopType implements Serializable { 27 | 28 | private static final long serialVersionUID = 1L; 29 | 30 | /** 31 | * 主键 32 | */ 33 | @TableId(value = "id", type = IdType.AUTO) 34 | private Long id; 35 | 36 | /** 37 | * 类型名称 38 | */ 39 | private String name; 40 | 41 | /** 42 | * 图标 43 | */ 44 | private String icon; 45 | 46 | /** 47 | * 顺序 48 | */ 49 | private Integer sort; 50 | 51 | /** 52 | * 创建时间 53 | */ 54 | @JsonIgnore 55 | private LocalDateTime createTime; 56 | 57 | /** 58 | * 更新时间 59 | */ 60 | @JsonIgnore 61 | private LocalDateTime updateTime; 62 | 63 | 64 | } 65 | -------------------------------------------------------------------------------- /src/main/java/com/xydp/entity/User.java: -------------------------------------------------------------------------------- 1 | package com.xydp.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | import lombok.Data; 7 | import lombok.EqualsAndHashCode; 8 | import lombok.experimental.Accessors; 9 | 10 | import java.io.Serializable; 11 | import java.time.LocalDateTime; 12 | 13 | /** 14 | *15 | * 16 | *
17 | * 18 | * @author 虎哥 19 | * @since 2021-12-22 20 | */ 21 | @Data 22 | @EqualsAndHashCode(callSuper = false) 23 | @Accessors(chain = true) 24 | @TableName("tb_user") 25 | public class User implements Serializable { 26 | 27 | private static final long serialVersionUID = 1L; 28 | 29 | /** 30 | * 主键 31 | */ 32 | @TableId(value = "id", type = IdType.AUTO) 33 | private Long id; 34 | 35 | /** 36 | * 手机号码 37 | */ 38 | private String phone; 39 | 40 | /** 41 | * 密码,加密存储 42 | */ 43 | private String password; 44 | 45 | /** 46 | * 昵称,默认是随机字符 47 | */ 48 | private String nickName; 49 | 50 | /** 51 | * 用户头像 52 | */ 53 | private String icon = ""; 54 | 55 | /** 56 | * 创建时间 57 | */ 58 | private LocalDateTime createTime; 59 | 60 | /** 61 | * 更新时间 62 | */ 63 | private LocalDateTime updateTime; 64 | 65 | 66 | } 67 | -------------------------------------------------------------------------------- /src/main/java/com/xydp/entity/UserInfo.java: -------------------------------------------------------------------------------- 1 | package com.xydp.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | import lombok.Data; 7 | import lombok.EqualsAndHashCode; 8 | import lombok.experimental.Accessors; 9 | 10 | import java.io.Serializable; 11 | import java.time.LocalDate; 12 | import java.time.LocalDateTime; 13 | 14 | /** 15 | *16 | * 17 | *
18 | * 19 | * @author 虎哥 20 | * @since 2021-12-24 21 | */ 22 | @Data 23 | @EqualsAndHashCode(callSuper = false) 24 | @Accessors(chain = true) 25 | @TableName("tb_user_info") 26 | public class UserInfo implements Serializable { 27 | 28 | private static final long serialVersionUID = 1L; 29 | 30 | /** 31 | * 主键,用户id 32 | */ 33 | @TableId(value = "user_id", type = IdType.AUTO) 34 | private Long userId; 35 | 36 | /** 37 | * 城市名称 38 | */ 39 | private String city; 40 | 41 | /** 42 | * 个人介绍,不要超过128个字符 43 | */ 44 | private String introduce; 45 | 46 | /** 47 | * 粉丝数量 48 | */ 49 | private Integer fans; 50 | 51 | /** 52 | * 关注的人的数量 53 | */ 54 | private Integer followee; 55 | 56 | /** 57 | * 性别,0:男,1:女 58 | */ 59 | private Boolean gender; 60 | 61 | /** 62 | * 生日 63 | */ 64 | private LocalDate birthday; 65 | 66 | /** 67 | * 积分 68 | */ 69 | private Integer credits; 70 | 71 | /** 72 | * 会员级别,0~9级,0代表未开通会员 73 | */ 74 | private Boolean level; 75 | 76 | /** 77 | * 创建时间 78 | */ 79 | private LocalDateTime createTime; 80 | 81 | /** 82 | * 更新时间 83 | */ 84 | private LocalDateTime updateTime; 85 | 86 | 87 | } 88 | -------------------------------------------------------------------------------- /src/main/java/com/xydp/entity/Voucher.java: -------------------------------------------------------------------------------- 1 | package com.xydp.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableField; 5 | import com.baomidou.mybatisplus.annotation.TableId; 6 | import com.baomidou.mybatisplus.annotation.TableName; 7 | import com.fasterxml.jackson.annotation.JsonFormat; 8 | import lombok.Data; 9 | import lombok.EqualsAndHashCode; 10 | import lombok.experimental.Accessors; 11 | 12 | import java.io.Serializable; 13 | import java.time.LocalDateTime; 14 | 15 | /** 16 | *17 | * 优惠券实体类 18 | *
19 | * 20 | * @author Wuxy 21 | * @since 2023-1-13 22 | */ 23 | @Data 24 | @EqualsAndHashCode(callSuper = false) 25 | @Accessors(chain = true) 26 | @TableName("tb_voucher") 27 | public class Voucher implements Serializable { 28 | 29 | private static final long serialVersionUID = 1L; 30 | 31 | /** 32 | * 主键 33 | */ 34 | @TableId(value = "id", type = IdType.AUTO) 35 | private Long id; 36 | 37 | /** 38 | * 商铺id 39 | */ 40 | private Long shopId; 41 | 42 | /** 43 | * 代金券标题 44 | */ 45 | private String title; 46 | 47 | /** 48 | * 副标题 49 | */ 50 | private String subTitle; 51 | 52 | /** 53 | * 使用规则 54 | */ 55 | private String rules; 56 | 57 | /** 58 | * 支付金额 59 | */ 60 | private Long payValue; 61 | 62 | /** 63 | * 抵扣金额 64 | */ 65 | private Long actualValue; 66 | 67 | /** 68 | * 优惠券类型 69 | */ 70 | private Integer type; 71 | 72 | /** 73 | * 优惠券类型 74 | */ 75 | private Integer status; 76 | /** 77 | * 库存 78 | */ 79 | @TableField(exist = false) 80 | private Integer stock; 81 | 82 | /** 83 | * 生效时间 84 | */ 85 | @TableField(exist = false) 86 | private LocalDateTime beginTime; 87 | 88 | /** 89 | * 失效时间 90 | */ 91 | @TableField(exist = false) 92 | @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") 93 | private LocalDateTime endTime; 94 | 95 | /** 96 | * 创建时间 97 | */ 98 | private LocalDateTime createTime; 99 | 100 | 101 | /** 102 | * 更新时间 103 | */ 104 | private LocalDateTime updateTime; 105 | 106 | 107 | } 108 | -------------------------------------------------------------------------------- /src/main/java/com/xydp/entity/VoucherOrder.java: -------------------------------------------------------------------------------- 1 | package com.xydp.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | import lombok.Data; 7 | import lombok.EqualsAndHashCode; 8 | import lombok.experimental.Accessors; 9 | 10 | import java.io.Serializable; 11 | import java.time.LocalDateTime; 12 | 13 | /** 14 | *15 | * 16 | *
17 | * 18 | * @author 虎哥 19 | * @since 2021-12-22 20 | */ 21 | @Data 22 | @EqualsAndHashCode(callSuper = false) 23 | @Accessors(chain = true) 24 | @TableName("tb_voucher_order") 25 | public class VoucherOrder implements Serializable { 26 | 27 | private static final long serialVersionUID = 1L; 28 | 29 | /** 30 | * 主键 31 | */ 32 | @TableId(value = "id", type = IdType.INPUT) 33 | private Long id; 34 | 35 | /** 36 | * 下单的用户id 37 | */ 38 | private Long userId; 39 | 40 | /** 41 | * 购买的代金券id 42 | */ 43 | private Long voucherId; 44 | 45 | /** 46 | * 支付方式 1:余额支付;2:支付宝;3:微信 47 | */ 48 | private Integer payType; 49 | 50 | /** 51 | * 订单状态,1:未支付;2:已支付;3:已核销;4:已取消;5:退款中;6:已退款 52 | */ 53 | private Integer status; 54 | 55 | /** 56 | * 下单时间 57 | */ 58 | private LocalDateTime createTime; 59 | 60 | /** 61 | * 支付时间 62 | */ 63 | private LocalDateTime payTime; 64 | 65 | /** 66 | * 核销时间 67 | */ 68 | private LocalDateTime useTime; 69 | 70 | /** 71 | * 退款时间 72 | */ 73 | private LocalDateTime refundTime; 74 | 75 | /** 76 | * 更新时间 77 | */ 78 | private LocalDateTime updateTime; 79 | 80 | 81 | } 82 | -------------------------------------------------------------------------------- /src/main/java/com/xydp/exception/BusinessException.java: -------------------------------------------------------------------------------- 1 | package com.xydp.exception; 2 | 3 | /** 4 | * @author Wuxy 5 | * @version 1.0 6 | * @ClassName BusinessException 7 | * @since 2023/1/14 15:28 8 | */ 9 | public class BusinessException extends RuntimeException { 10 | 11 | private Throwable cause; 12 | 13 | private String message; 14 | 15 | public BusinessException(String message) { 16 | this.message = message; 17 | } 18 | 19 | public BusinessException(Throwable cause) { 20 | this.cause = cause; 21 | } 22 | 23 | public BusinessException(String message, Throwable cause) { 24 | super(message, cause); 25 | } 26 | 27 | @Override 28 | public String getMessage() { 29 | return message; 30 | } 31 | 32 | public void setMessage(String message) { 33 | this.message = message; 34 | } 35 | 36 | @Override 37 | public Throwable getCause() { 38 | return cause; 39 | } 40 | 41 | public void setCause(Throwable cause) { 42 | this.cause = cause; 43 | } 44 | 45 | /** 46 | * 不写入堆栈信息,提高性能 47 | */ 48 | @Override 49 | public Throwable fillInStackTrace() { 50 | return this; 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /src/main/java/com/xydp/interceptor/LoginInterceptor.java: -------------------------------------------------------------------------------- 1 | package com.xydp.interceptor; 2 | 3 | import com.xydp.utils.UserHolder; 4 | import org.springframework.web.servlet.HandlerInterceptor; 5 | import org.springframework.web.servlet.ModelAndView; 6 | 7 | import javax.servlet.http.HttpServletRequest; 8 | import javax.servlet.http.HttpServletResponse; 9 | 10 | public class LoginInterceptor implements HandlerInterceptor { 11 | @Override 12 | public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { 13 | // 1.判断是否需要拦截(Thread Local中是否有用户) 14 | if (UserHolder.getUser() == null) { 15 | // 没有,需要拦截,设置状态码 16 | response.setStatus(401); 17 | // 拦截 18 | return false; 19 | } 20 | // 有用户则放行 21 | return true; 22 | } 23 | 24 | @Override 25 | public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { 26 | HandlerInterceptor.super.postHandle(request, response, handler, modelAndView); 27 | } 28 | 29 | @Override 30 | public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { 31 | HandlerInterceptor.super.afterCompletion(request, response, handler, ex); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/com/xydp/interceptor/RefreshTokenInterceptor.java: -------------------------------------------------------------------------------- 1 | package com.xydp.interceptor; 2 | 3 | import cn.hutool.core.bean.BeanUtil; 4 | import cn.hutool.core.util.StrUtil; 5 | import com.xydp.dto.UserDTO; 6 | import com.xydp.utils.RedisConstants; 7 | import com.xydp.utils.UserHolder; 8 | import org.springframework.data.redis.core.StringRedisTemplate; 9 | import org.springframework.web.servlet.HandlerInterceptor; 10 | import org.springframework.web.servlet.ModelAndView; 11 | 12 | import javax.servlet.http.HttpServletRequest; 13 | import javax.servlet.http.HttpServletResponse; 14 | import java.util.Map; 15 | import java.util.concurrent.TimeUnit; 16 | 17 | /** 18 | * 刷新 token 的拦截器,只做刷新token的功能,放行一切请求 19 | */ 20 | public class RefreshTokenInterceptor implements HandlerInterceptor { 21 | /** 22 | * 自己手动创建的对象,里面的实例需要自己手动注入, 23 | * spring创建的对象,可以使用自动注入方法。 24 | */ 25 | private final StringRedisTemplate stringRedisTemplate; 26 | 27 | public RefreshTokenInterceptor(StringRedisTemplate stringRedisTemplate) { 28 | this.stringRedisTemplate = stringRedisTemplate; 29 | } 30 | 31 | @Override 32 | public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { 33 | // 1.获取请求头中的token 34 | String token = request.getHeader("authorization"); 35 | if (StrUtil.isBlank(token)) { 36 | return true; 37 | } 38 | 39 | // 2.基于token获取redis中的用户 40 | String key = RedisConstants.LOGIN_USER_KEY + token; 41 | Map