Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Q
qianhe-slsy
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
xuwenhao
qianhe-slsy
Commits
b548905e
Commit
b548905e
authored
Nov 27, 2023
by
xuwenhao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
11.27新增功能
parent
e26c48f5
Hide whitespace changes
Inline
Side-by-side
Showing
44 changed files
with
1376 additions
and
299 deletions
+1376
-299
qianhe-admin/pom.xml
+26
-0
qianhe-admin/src/main/java/com/qianhe/system/controller/WaterGoodsController.java
+0
-6
qianhe-admin/src/main/java/com/qianhe/system/controller/WaterGoodsTypeController.java
+0
-6
qianhe-admin/src/main/java/com/qianhe/system/controller/WaterOrderController.java
+0
-6
qianhe-admin/src/main/java/com/qianhe/system/controller/WaterStationController.java
+0
-6
qianhe-admin/src/main/java/com/qianhe/system/controller/WaterUserController.java
+0
-6
qianhe-admin/src/main/java/com/qianhe/system/controller/api/WxLogin.java
+114
-0
qianhe-admin/src/main/java/com/qianhe/system/domain/WaterGoodsType.java
+12
-30
qianhe-admin/src/main/java/com/qianhe/system/domain/WaterStation.java
+3
-1
qianhe-admin/src/main/java/com/qianhe/system/domain/WaterUser.java
+18
-94
qianhe-admin/src/main/java/com/qianhe/system/domain/WaterUserAddress.java
+6
-95
qianhe-admin/src/main/java/com/qianhe/system/mapper/WaterUserAddressMapper.java
+9
-8
qianhe-admin/src/main/java/com/qianhe/system/mapper/WaterUserMapper.java
+32
-8
qianhe-admin/src/main/java/com/qianhe/system/service/IWaterUserAddressService.java
+9
-8
qianhe-admin/src/main/java/com/qianhe/system/service/IWaterUserService.java
+26
-9
qianhe-admin/src/main/java/com/qianhe/system/service/api/IWxLoginService.java
+9
-0
qianhe-admin/src/main/java/com/qianhe/system/service/impl/WaterUserAddressServiceImpl.java
+2
-1
qianhe-admin/src/main/java/com/qianhe/system/service/impl/WaterUserServiceImpl.java
+43
-3
qianhe-admin/src/main/java/com/qianhe/system/service/impl/api/WxLoginServiceImpl.java
+46
-0
qianhe-admin/src/main/java/com/qianhe/system/utils/AccessTokenUtils.java
+55
-0
qianhe-admin/src/main/java/com/qianhe/system/utils/HttpClientUtil.java
+314
-0
qianhe-admin/src/main/java/com/qianhe/system/utils/WxUserInfoUtils.java
+140
-0
qianhe-admin/src/main/java/com/qianhe/system/vo/WaterUserVo.java
+52
-0
qianhe-admin/src/main/resources/application.yml
+9
-4
qianhe-admin/src/main/resources/mapper/WaterGoodsImgMapper.xml
+0
-0
qianhe-admin/src/main/resources/mapper/WaterGoodsMapper.xml
+0
-0
qianhe-admin/src/main/resources/mapper/WaterGoodsSpeMapper.xml
+0
-0
qianhe-admin/src/main/resources/mapper/WaterGoodsTypeMapper.xml
+0
-0
qianhe-admin/src/main/resources/mapper/WaterOrderGoodsMapper.xml
+0
-0
qianhe-admin/src/main/resources/mapper/WaterOrderLogMapper.xml
+0
-0
qianhe-admin/src/main/resources/mapper/WaterOrderMapper.xml
+0
-0
qianhe-admin/src/main/resources/mapper/WaterSpeMapper.xml
+0
-0
qianhe-admin/src/main/resources/mapper/WaterStationMapper.xml
+0
-0
qianhe-admin/src/main/resources/mapper/WaterStationUserMapper.xml
+0
-0
qianhe-admin/src/main/resources/mapper/WaterTextMapper.xml
+0
-0
qianhe-admin/src/main/resources/mapper/WaterUserAddressMapper.xml
+0
-0
qianhe-admin/src/main/resources/mapper/WaterUserMapper.xml
+35
-8
qianhe-common/pom.xml
+5
-0
qianhe-common/src/main/java/com/qianhe/common/core/domain/model/MpLoginUser.java
+81
-0
qianhe-common/src/main/java/com/qianhe/common/core/domain/model/WxLoginBody.java
+30
-0
qianhe-framework/src/main/java/com/qianhe/framework/config/SecurityConfig.java
+4
-0
qianhe-framework/src/main/java/com/qianhe/framework/security/filter/JwtAuthenticationTokenFilter.java
+24
-0
qianhe-framework/src/main/java/com/qianhe/framework/util/UserInfoUtil.java
+44
-0
qianhe-framework/src/main/java/com/qianhe/framework/web/service/MpTokenService.java
+228
-0
No files found.
qianhe-admin/pom.xml
View file @
b548905e
...
@@ -61,6 +61,32 @@
...
@@ -61,6 +61,32 @@
<artifactId>
qianhe-generator
</artifactId>
<artifactId>
qianhe-generator
</artifactId>
</dependency>
</dependency>
<!-- hutool -->
<dependency>
<groupId>
cn.hutool
</groupId>
<artifactId>
hutool-all
</artifactId>
<version>
5.7.16
</version>
</dependency>
<dependency>
<groupId>
org.wso2.apache.httpcomponents
</groupId>
<artifactId>
httpclient
</artifactId>
<version>
4.3.1.wso2v1
</version>
</dependency>
<dependency>
<groupId>
org.bouncycastle
</groupId>
<artifactId>
bcprov-jdk15on
</artifactId>
<version>
1.59
</version>
</dependency>
<!-- mybatis-plus -->
<dependency>
<groupId>
com.baomidou
</groupId>
<artifactId>
mybatis-plus-boot-starter
</artifactId>
<version>
3.5.3.1
</version>
</dependency>
</dependencies>
</dependencies>
<build>
<build>
...
...
qianhe-admin/src/main/java/com/qianhe/system/controller/WaterGoodsController.java
View file @
b548905e
...
@@ -31,7 +31,6 @@ public class WaterGoodsController extends BaseController
...
@@ -31,7 +31,6 @@ public class WaterGoodsController extends BaseController
/**
/**
* 查询商品列表
* 查询商品列表
*/
*/
@PreAuthorize
(
"@ss.hasPermi('system:goods:list')"
)
@GetMapping
(
"/list"
)
@GetMapping
(
"/list"
)
public
TableDataInfo
list
(
WaterGoods
waterGoods
)
public
TableDataInfo
list
(
WaterGoods
waterGoods
)
{
{
...
@@ -43,7 +42,6 @@ public class WaterGoodsController extends BaseController
...
@@ -43,7 +42,6 @@ public class WaterGoodsController extends BaseController
/**
/**
* 导出商品列表
* 导出商品列表
*/
*/
@PreAuthorize
(
"@ss.hasPermi('system:goods:export')"
)
@Log
(
title
=
"商品"
,
businessType
=
BusinessType
.
EXPORT
)
@Log
(
title
=
"商品"
,
businessType
=
BusinessType
.
EXPORT
)
@PostMapping
(
"/export"
)
@PostMapping
(
"/export"
)
public
void
export
(
HttpServletResponse
response
,
WaterGoods
waterGoods
)
public
void
export
(
HttpServletResponse
response
,
WaterGoods
waterGoods
)
...
@@ -56,7 +54,6 @@ public class WaterGoodsController extends BaseController
...
@@ -56,7 +54,6 @@ public class WaterGoodsController extends BaseController
/**
/**
* 获取商品详细信息
* 获取商品详细信息
*/
*/
@PreAuthorize
(
"@ss.hasPermi('system:goods:query')"
)
@GetMapping
(
value
=
"/{id}"
)
@GetMapping
(
value
=
"/{id}"
)
public
AjaxResult
getInfo
(
@PathVariable
(
"id"
)
Long
id
)
public
AjaxResult
getInfo
(
@PathVariable
(
"id"
)
Long
id
)
{
{
...
@@ -66,7 +63,6 @@ public class WaterGoodsController extends BaseController
...
@@ -66,7 +63,6 @@ public class WaterGoodsController extends BaseController
/**
/**
* 新增商品
* 新增商品
*/
*/
@PreAuthorize
(
"@ss.hasPermi('system:goods:add')"
)
@Log
(
title
=
"商品"
,
businessType
=
BusinessType
.
INSERT
)
@Log
(
title
=
"商品"
,
businessType
=
BusinessType
.
INSERT
)
@PostMapping
@PostMapping
public
AjaxResult
add
(
@RequestBody
WaterGoods
waterGoods
)
public
AjaxResult
add
(
@RequestBody
WaterGoods
waterGoods
)
...
@@ -77,7 +73,6 @@ public class WaterGoodsController extends BaseController
...
@@ -77,7 +73,6 @@ public class WaterGoodsController extends BaseController
/**
/**
* 修改商品
* 修改商品
*/
*/
@PreAuthorize
(
"@ss.hasPermi('system:goods:edit')"
)
@Log
(
title
=
"商品"
,
businessType
=
BusinessType
.
UPDATE
)
@Log
(
title
=
"商品"
,
businessType
=
BusinessType
.
UPDATE
)
@PutMapping
@PutMapping
public
AjaxResult
edit
(
@RequestBody
WaterGoods
waterGoods
)
public
AjaxResult
edit
(
@RequestBody
WaterGoods
waterGoods
)
...
@@ -88,7 +83,6 @@ public class WaterGoodsController extends BaseController
...
@@ -88,7 +83,6 @@ public class WaterGoodsController extends BaseController
/**
/**
* 删除商品
* 删除商品
*/
*/
@PreAuthorize
(
"@ss.hasPermi('system:goods:remove')"
)
@Log
(
title
=
"商品"
,
businessType
=
BusinessType
.
DELETE
)
@Log
(
title
=
"商品"
,
businessType
=
BusinessType
.
DELETE
)
@DeleteMapping
(
"/{ids}"
)
@DeleteMapping
(
"/{ids}"
)
public
AjaxResult
remove
(
@PathVariable
Long
[]
ids
)
public
AjaxResult
remove
(
@PathVariable
Long
[]
ids
)
...
...
qianhe-admin/src/main/java/com/qianhe/system/controller/WaterGoodsTypeController.java
View file @
b548905e
...
@@ -31,7 +31,6 @@ public class WaterGoodsTypeController extends BaseController
...
@@ -31,7 +31,6 @@ public class WaterGoodsTypeController extends BaseController
/**
/**
* 查询商品分类列表
* 查询商品分类列表
*/
*/
@PreAuthorize
(
"@ss.hasPermi('system:type:list')"
)
@GetMapping
(
"/list"
)
@GetMapping
(
"/list"
)
public
TableDataInfo
list
(
WaterGoodsType
waterGoodsType
)
public
TableDataInfo
list
(
WaterGoodsType
waterGoodsType
)
{
{
...
@@ -43,7 +42,6 @@ public class WaterGoodsTypeController extends BaseController
...
@@ -43,7 +42,6 @@ public class WaterGoodsTypeController extends BaseController
/**
/**
* 导出商品分类列表
* 导出商品分类列表
*/
*/
@PreAuthorize
(
"@ss.hasPermi('system:type:export')"
)
@Log
(
title
=
"商品分类"
,
businessType
=
BusinessType
.
EXPORT
)
@Log
(
title
=
"商品分类"
,
businessType
=
BusinessType
.
EXPORT
)
@PostMapping
(
"/export"
)
@PostMapping
(
"/export"
)
public
void
export
(
HttpServletResponse
response
,
WaterGoodsType
waterGoodsType
)
public
void
export
(
HttpServletResponse
response
,
WaterGoodsType
waterGoodsType
)
...
@@ -56,7 +54,6 @@ public class WaterGoodsTypeController extends BaseController
...
@@ -56,7 +54,6 @@ public class WaterGoodsTypeController extends BaseController
/**
/**
* 获取商品分类详细信息
* 获取商品分类详细信息
*/
*/
@PreAuthorize
(
"@ss.hasPermi('system:type:query')"
)
@GetMapping
(
value
=
"/{id}"
)
@GetMapping
(
value
=
"/{id}"
)
public
AjaxResult
getInfo
(
@PathVariable
(
"id"
)
Long
id
)
public
AjaxResult
getInfo
(
@PathVariable
(
"id"
)
Long
id
)
{
{
...
@@ -66,7 +63,6 @@ public class WaterGoodsTypeController extends BaseController
...
@@ -66,7 +63,6 @@ public class WaterGoodsTypeController extends BaseController
/**
/**
* 新增商品分类
* 新增商品分类
*/
*/
@PreAuthorize
(
"@ss.hasPermi('system:type:add')"
)
@Log
(
title
=
"商品分类"
,
businessType
=
BusinessType
.
INSERT
)
@Log
(
title
=
"商品分类"
,
businessType
=
BusinessType
.
INSERT
)
@PostMapping
@PostMapping
public
AjaxResult
add
(
@RequestBody
WaterGoodsType
waterGoodsType
)
public
AjaxResult
add
(
@RequestBody
WaterGoodsType
waterGoodsType
)
...
@@ -77,7 +73,6 @@ public class WaterGoodsTypeController extends BaseController
...
@@ -77,7 +73,6 @@ public class WaterGoodsTypeController extends BaseController
/**
/**
* 修改商品分类
* 修改商品分类
*/
*/
@PreAuthorize
(
"@ss.hasPermi('system:type:edit')"
)
@Log
(
title
=
"商品分类"
,
businessType
=
BusinessType
.
UPDATE
)
@Log
(
title
=
"商品分类"
,
businessType
=
BusinessType
.
UPDATE
)
@PutMapping
@PutMapping
public
AjaxResult
edit
(
@RequestBody
WaterGoodsType
waterGoodsType
)
public
AjaxResult
edit
(
@RequestBody
WaterGoodsType
waterGoodsType
)
...
@@ -88,7 +83,6 @@ public class WaterGoodsTypeController extends BaseController
...
@@ -88,7 +83,6 @@ public class WaterGoodsTypeController extends BaseController
/**
/**
* 删除商品分类
* 删除商品分类
*/
*/
@PreAuthorize
(
"@ss.hasPermi('system:type:remove')"
)
@Log
(
title
=
"商品分类"
,
businessType
=
BusinessType
.
DELETE
)
@Log
(
title
=
"商品分类"
,
businessType
=
BusinessType
.
DELETE
)
@DeleteMapping
(
"/{ids}"
)
@DeleteMapping
(
"/{ids}"
)
public
AjaxResult
remove
(
@PathVariable
Long
[]
ids
)
public
AjaxResult
remove
(
@PathVariable
Long
[]
ids
)
...
...
qianhe-admin/src/main/java/com/qianhe/system/controller/WaterOrderController.java
View file @
b548905e
...
@@ -31,7 +31,6 @@ public class WaterOrderController extends BaseController
...
@@ -31,7 +31,6 @@ public class WaterOrderController extends BaseController
/**
/**
* 查询订单列表
* 查询订单列表
*/
*/
@PreAuthorize
(
"@ss.hasPermi('system:order:list')"
)
@GetMapping
(
"/list"
)
@GetMapping
(
"/list"
)
public
TableDataInfo
list
(
WaterOrder
waterOrder
)
public
TableDataInfo
list
(
WaterOrder
waterOrder
)
{
{
...
@@ -43,7 +42,6 @@ public class WaterOrderController extends BaseController
...
@@ -43,7 +42,6 @@ public class WaterOrderController extends BaseController
/**
/**
* 导出订单列表
* 导出订单列表
*/
*/
@PreAuthorize
(
"@ss.hasPermi('system:order:export')"
)
@Log
(
title
=
"订单"
,
businessType
=
BusinessType
.
EXPORT
)
@Log
(
title
=
"订单"
,
businessType
=
BusinessType
.
EXPORT
)
@PostMapping
(
"/export"
)
@PostMapping
(
"/export"
)
public
void
export
(
HttpServletResponse
response
,
WaterOrder
waterOrder
)
public
void
export
(
HttpServletResponse
response
,
WaterOrder
waterOrder
)
...
@@ -56,7 +54,6 @@ public class WaterOrderController extends BaseController
...
@@ -56,7 +54,6 @@ public class WaterOrderController extends BaseController
/**
/**
* 获取订单详细信息
* 获取订单详细信息
*/
*/
@PreAuthorize
(
"@ss.hasPermi('system:order:query')"
)
@GetMapping
(
value
=
"/{id}"
)
@GetMapping
(
value
=
"/{id}"
)
public
AjaxResult
getInfo
(
@PathVariable
(
"id"
)
Long
id
)
public
AjaxResult
getInfo
(
@PathVariable
(
"id"
)
Long
id
)
{
{
...
@@ -66,7 +63,6 @@ public class WaterOrderController extends BaseController
...
@@ -66,7 +63,6 @@ public class WaterOrderController extends BaseController
/**
/**
* 新增订单
* 新增订单
*/
*/
@PreAuthorize
(
"@ss.hasPermi('system:order:add')"
)
@Log
(
title
=
"订单"
,
businessType
=
BusinessType
.
INSERT
)
@Log
(
title
=
"订单"
,
businessType
=
BusinessType
.
INSERT
)
@PostMapping
@PostMapping
public
AjaxResult
add
(
@RequestBody
WaterOrder
waterOrder
)
public
AjaxResult
add
(
@RequestBody
WaterOrder
waterOrder
)
...
@@ -77,7 +73,6 @@ public class WaterOrderController extends BaseController
...
@@ -77,7 +73,6 @@ public class WaterOrderController extends BaseController
/**
/**
* 修改订单
* 修改订单
*/
*/
@PreAuthorize
(
"@ss.hasPermi('system:order:edit')"
)
@Log
(
title
=
"订单"
,
businessType
=
BusinessType
.
UPDATE
)
@Log
(
title
=
"订单"
,
businessType
=
BusinessType
.
UPDATE
)
@PutMapping
@PutMapping
public
AjaxResult
edit
(
@RequestBody
WaterOrder
waterOrder
)
public
AjaxResult
edit
(
@RequestBody
WaterOrder
waterOrder
)
...
@@ -88,7 +83,6 @@ public class WaterOrderController extends BaseController
...
@@ -88,7 +83,6 @@ public class WaterOrderController extends BaseController
/**
/**
* 删除订单
* 删除订单
*/
*/
@PreAuthorize
(
"@ss.hasPermi('system:order:remove')"
)
@Log
(
title
=
"订单"
,
businessType
=
BusinessType
.
DELETE
)
@Log
(
title
=
"订单"
,
businessType
=
BusinessType
.
DELETE
)
@DeleteMapping
(
"/{ids}"
)
@DeleteMapping
(
"/{ids}"
)
public
AjaxResult
remove
(
@PathVariable
Long
[]
ids
)
public
AjaxResult
remove
(
@PathVariable
Long
[]
ids
)
...
...
qianhe-admin/src/main/java/com/qianhe/system/controller/WaterStationController.java
View file @
b548905e
...
@@ -31,7 +31,6 @@ public class WaterStationController extends BaseController
...
@@ -31,7 +31,6 @@ public class WaterStationController extends BaseController
/**
/**
* 查询站点列表
* 查询站点列表
*/
*/
@PreAuthorize
(
"@ss.hasPermi('system:station:list')"
)
@GetMapping
(
"/list"
)
@GetMapping
(
"/list"
)
public
TableDataInfo
list
(
WaterStation
waterStation
)
public
TableDataInfo
list
(
WaterStation
waterStation
)
{
{
...
@@ -43,7 +42,6 @@ public class WaterStationController extends BaseController
...
@@ -43,7 +42,6 @@ public class WaterStationController extends BaseController
/**
/**
* 导出站点列表
* 导出站点列表
*/
*/
@PreAuthorize
(
"@ss.hasPermi('system:station:export')"
)
@Log
(
title
=
"站点"
,
businessType
=
BusinessType
.
EXPORT
)
@Log
(
title
=
"站点"
,
businessType
=
BusinessType
.
EXPORT
)
@PostMapping
(
"/export"
)
@PostMapping
(
"/export"
)
public
void
export
(
HttpServletResponse
response
,
WaterStation
waterStation
)
public
void
export
(
HttpServletResponse
response
,
WaterStation
waterStation
)
...
@@ -56,7 +54,6 @@ public class WaterStationController extends BaseController
...
@@ -56,7 +54,6 @@ public class WaterStationController extends BaseController
/**
/**
* 获取站点详细信息
* 获取站点详细信息
*/
*/
@PreAuthorize
(
"@ss.hasPermi('system:station:query')"
)
@GetMapping
(
value
=
"/{id}"
)
@GetMapping
(
value
=
"/{id}"
)
public
AjaxResult
getInfo
(
@PathVariable
(
"id"
)
Long
id
)
public
AjaxResult
getInfo
(
@PathVariable
(
"id"
)
Long
id
)
{
{
...
@@ -66,7 +63,6 @@ public class WaterStationController extends BaseController
...
@@ -66,7 +63,6 @@ public class WaterStationController extends BaseController
/**
/**
* 新增站点
* 新增站点
*/
*/
@PreAuthorize
(
"@ss.hasPermi('system:station:add')"
)
@Log
(
title
=
"站点"
,
businessType
=
BusinessType
.
INSERT
)
@Log
(
title
=
"站点"
,
businessType
=
BusinessType
.
INSERT
)
@PostMapping
@PostMapping
public
AjaxResult
add
(
@RequestBody
WaterStation
waterStation
)
public
AjaxResult
add
(
@RequestBody
WaterStation
waterStation
)
...
@@ -77,7 +73,6 @@ public class WaterStationController extends BaseController
...
@@ -77,7 +73,6 @@ public class WaterStationController extends BaseController
/**
/**
* 修改站点
* 修改站点
*/
*/
@PreAuthorize
(
"@ss.hasPermi('system:station:edit')"
)
@Log
(
title
=
"站点"
,
businessType
=
BusinessType
.
UPDATE
)
@Log
(
title
=
"站点"
,
businessType
=
BusinessType
.
UPDATE
)
@PutMapping
@PutMapping
public
AjaxResult
edit
(
@RequestBody
WaterStation
waterStation
)
public
AjaxResult
edit
(
@RequestBody
WaterStation
waterStation
)
...
@@ -88,7 +83,6 @@ public class WaterStationController extends BaseController
...
@@ -88,7 +83,6 @@ public class WaterStationController extends BaseController
/**
/**
* 删除站点
* 删除站点
*/
*/
@PreAuthorize
(
"@ss.hasPermi('system:station:remove')"
)
@Log
(
title
=
"站点"
,
businessType
=
BusinessType
.
DELETE
)
@Log
(
title
=
"站点"
,
businessType
=
BusinessType
.
DELETE
)
@DeleteMapping
(
"/{ids}"
)
@DeleteMapping
(
"/{ids}"
)
public
AjaxResult
remove
(
@PathVariable
Long
[]
ids
)
public
AjaxResult
remove
(
@PathVariable
Long
[]
ids
)
...
...
qianhe-admin/src/main/java/com/qianhe/system/controller/WaterUserController.java
View file @
b548905e
...
@@ -31,7 +31,6 @@ public class WaterUserController extends BaseController
...
@@ -31,7 +31,6 @@ public class WaterUserController extends BaseController
/**
/**
* 查询用户列表
* 查询用户列表
*/
*/
@PreAuthorize
(
"@ss.hasPermi('system:user:list')"
)
@GetMapping
(
"/list"
)
@GetMapping
(
"/list"
)
public
TableDataInfo
list
(
WaterUser
waterUser
)
public
TableDataInfo
list
(
WaterUser
waterUser
)
{
{
...
@@ -43,7 +42,6 @@ public class WaterUserController extends BaseController
...
@@ -43,7 +42,6 @@ public class WaterUserController extends BaseController
/**
/**
* 导出用户列表
* 导出用户列表
*/
*/
@PreAuthorize
(
"@ss.hasPermi('system:user:export')"
)
@Log
(
title
=
"用户"
,
businessType
=
BusinessType
.
EXPORT
)
@Log
(
title
=
"用户"
,
businessType
=
BusinessType
.
EXPORT
)
@PostMapping
(
"/export"
)
@PostMapping
(
"/export"
)
public
void
export
(
HttpServletResponse
response
,
WaterUser
waterUser
)
public
void
export
(
HttpServletResponse
response
,
WaterUser
waterUser
)
...
@@ -56,7 +54,6 @@ public class WaterUserController extends BaseController
...
@@ -56,7 +54,6 @@ public class WaterUserController extends BaseController
/**
/**
* 获取用户详细信息
* 获取用户详细信息
*/
*/
@PreAuthorize
(
"@ss.hasPermi('system:user:query')"
)
@GetMapping
(
value
=
"/{id}"
)
@GetMapping
(
value
=
"/{id}"
)
public
AjaxResult
getInfo
(
@PathVariable
(
"id"
)
Long
id
)
public
AjaxResult
getInfo
(
@PathVariable
(
"id"
)
Long
id
)
{
{
...
@@ -66,7 +63,6 @@ public class WaterUserController extends BaseController
...
@@ -66,7 +63,6 @@ public class WaterUserController extends BaseController
/**
/**
* 新增用户
* 新增用户
*/
*/
@PreAuthorize
(
"@ss.hasPermi('system:user:add')"
)
@Log
(
title
=
"用户"
,
businessType
=
BusinessType
.
INSERT
)
@Log
(
title
=
"用户"
,
businessType
=
BusinessType
.
INSERT
)
@PostMapping
@PostMapping
public
AjaxResult
add
(
@RequestBody
WaterUser
waterUser
)
public
AjaxResult
add
(
@RequestBody
WaterUser
waterUser
)
...
@@ -77,7 +73,6 @@ public class WaterUserController extends BaseController
...
@@ -77,7 +73,6 @@ public class WaterUserController extends BaseController
/**
/**
* 修改用户
* 修改用户
*/
*/
@PreAuthorize
(
"@ss.hasPermi('system:user:edit')"
)
@Log
(
title
=
"用户"
,
businessType
=
BusinessType
.
UPDATE
)
@Log
(
title
=
"用户"
,
businessType
=
BusinessType
.
UPDATE
)
@PutMapping
@PutMapping
public
AjaxResult
edit
(
@RequestBody
WaterUser
waterUser
)
public
AjaxResult
edit
(
@RequestBody
WaterUser
waterUser
)
...
@@ -88,7 +83,6 @@ public class WaterUserController extends BaseController
...
@@ -88,7 +83,6 @@ public class WaterUserController extends BaseController
/**
/**
* 删除用户
* 删除用户
*/
*/
@PreAuthorize
(
"@ss.hasPermi('system:user:remove')"
)
@Log
(
title
=
"用户"
,
businessType
=
BusinessType
.
DELETE
)
@Log
(
title
=
"用户"
,
businessType
=
BusinessType
.
DELETE
)
@DeleteMapping
(
"/{ids}"
)
@DeleteMapping
(
"/{ids}"
)
public
AjaxResult
remove
(
@PathVariable
Long
[]
ids
)
public
AjaxResult
remove
(
@PathVariable
Long
[]
ids
)
...
...
qianhe-admin/src/main/java/com/qianhe/system/controller/api/WxLogin.java
0 → 100644
View file @
b548905e
package
com
.
qianhe
.
system
.
controller
.
api
;
import
com.qianhe.common.constant.Constants
;
import
com.qianhe.common.core.domain.AjaxResult
;
import
com.qianhe.common.core.domain.model.MpLoginUser
;
import
com.qianhe.common.core.domain.model.WxLoginBody
;
import
com.qianhe.common.utils.MessageUtils
;
import
com.qianhe.common.utils.StringUtils
;
import
com.qianhe.framework.manager.AsyncManager
;
import
com.qianhe.framework.manager.factory.AsyncFactory
;
import
com.qianhe.framework.util.UserInfoUtil
;
import
com.qianhe.framework.web.service.MpTokenService
;
import
com.qianhe.system.domain.WaterUser
;
import
com.qianhe.system.service.api.IWxLoginService
;
import
com.qianhe.system.service.impl.WaterUserServiceImpl
;
import
com.qianhe.system.utils.WxUserInfoUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.HashMap
;
import
java.util.Map
;
import
static
com
.
qianhe
.
common
.
core
.
domain
.
AjaxResult
.
success
;
@RestController
@RequestMapping
(
"/wx"
)
public
class
WxLogin
{
@Autowired
WxUserInfoUtils
wxUserInfoUtils
;
@Autowired
private
WaterUserServiceImpl
waterUserService
;
@Autowired
private
IWxLoginService
wxLoginService
;
@Autowired
private
MpTokenService
mpTokenService
;
@Autowired
private
UserInfoUtil
userInfoUtil
;
/**
* 获取用户openid和session_key
* @param code 微信临时登录凭证
* @return
*/
@GetMapping
(
"/getWxLoginInfo"
)
public
AjaxResult
getWxLoginInfo
(
String
code
){
//根据code查询微信用户的openid和session_key
Map
<
String
,
String
>
wxLoginInfo
=
wxUserInfoUtils
.
getWxLoginInfo
(
code
);
return
AjaxResult
.
success
(
wxLoginInfo
);
}
/**
*
* 获取微信用户手机号
*/
@GetMapping
(
"/getPhoneNumber"
)
public
AjaxResult
getPhoneNumber
(
@RequestParam
(
"code"
)
String
code
){
String
wxUserPhone
=
wxUserInfoUtils
.
getWxUserPhone
(
code
);
return
AjaxResult
.
success
().
put
(
"phoneNumber"
,
wxUserPhone
);
}
/**
* 小程序登录
* @param code 微信登录临时凭证
* @return
*/
@GetMapping
(
"/login"
)
public
AjaxResult
login
(
@RequestParam
(
"code"
)
String
code
){
AjaxResult
ajaxResult
=
AjaxResult
.
success
();
//根据code查询微信用户的openid和session_key
Map
<
String
,
String
>
wxLoginInfo
=
wxUserInfoUtils
.
getWxLoginInfo
(
code
);
WxLoginBody
wxLoginBody
=
new
WxLoginBody
();
wxLoginBody
.
setOpenId
(
wxLoginInfo
.
get
(
"openId"
));
MpLoginUser
login
=
wxLoginService
.
login
(
wxLoginBody
);
if
(
StringUtils
.
isNull
(
login
))
{
return
AjaxResult
.
error
(
"login error"
);
}
ajaxResult
.
put
(
"loginInfo"
,
wxLoginInfo
);
ajaxResult
.
put
(
"isNewUser"
,
login
.
getIsNewUser
());
AsyncManager
.
me
().
execute
(
AsyncFactory
.
recordLogininfor
(
login
.
getNickName
(),
Constants
.
LOGIN_SUCCESS
,
MessageUtils
.
message
(
"user.login.success"
)));
String
token
=
mpTokenService
.
createToken
(
login
);
ajaxResult
.
put
(
Constants
.
TOKEN
,
token
);
return
ajaxResult
;
}
/**
* 修改用户信息
*/
@PostMapping
(
"/updateUser"
)
public
AjaxResult
updateUser
(
@RequestBody
WaterUser
waterUser
){
return
success
(
waterUserService
.
updateUserByOpenId
(
waterUser
));
}
/**
* 获取用户信息
* @return
*/
@GetMapping
(
"/getUserInfo"
)
public
AjaxResult
getUserInfo
(){
//获取当前登录用户openid
String
openId
=
userInfoUtil
.
getOpenId
();
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
//根据openid查询用户信息
WaterUser
waterUser
=
waterUserService
.
selectUserByOpenId
(
openId
);
map
.
put
(
"userId"
,
waterUser
.
getId
());
map
.
put
(
"nickName"
,
waterUser
.
getNickName
());
map
.
put
(
"phoneNum"
,
waterUser
.
getPhoneNum
());
map
.
put
(
"stationName"
,
waterUser
.
getStationName
());
map
.
put
(
"userType"
,
waterUser
.
getUserType
());
map
.
put
(
"userGender"
,
waterUser
.
getUserGender
());
return
AjaxResult
.
success
(
map
);
}
}
qianhe-admin/src/main/java/com/qianhe/system/domain/WaterGoodsType.java
View file @
b548905e
package
com
.
qianhe
.
system
.
domain
;
package
com
.
qianhe
.
system
.
domain
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.qianhe.common.annotation.Excel
;
import
com.qianhe.common.annotation.Excel
;
import
com.qianhe.common.core.domain.BaseEntity
;
import
com.qianhe.common.core.domain.BaseEntity
;
import
lombok.Data
;
import
org.apache.commons.lang3.builder.ToStringBuilder
;
import
org.apache.commons.lang3.builder.ToStringBuilder
;
import
org.apache.commons.lang3.builder.ToStringStyle
;
import
org.apache.commons.lang3.builder.ToStringStyle
;
import
java.util.Date
;
/**
/**
* 商品分类对象 water_goods_type
* 商品分类对象 water_goods_type
*
*
* @author qianhe
* @author qianhe
* @date 2023-11-23
* @date 2023-11-23
*/
*/
public
class
WaterGoodsType
extends
BaseEntity
@Data
public
class
WaterGoodsType
{
{
private
static
final
long
serialVersionUID
=
1L
;
private
static
final
long
serialVersionUID
=
1L
;
/** $column.columnComment */
@TableId
(
value
=
"id"
,
type
=
IdType
.
AUTO
)
private
Long
id
;
private
Long
id
;
/** 名称 */
/** 名称 */
@Excel
(
name
=
"名称"
)
private
String
typeName
;
private
String
typeName
;
public
void
setId
(
Long
id
)
/** 创建时间 */
{
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
this
.
id
=
id
;
private
Date
createTime
;
}
public
Long
getId
()
{
return
id
;
}
public
void
setTypeName
(
String
typeName
)
{
this
.
typeName
=
typeName
;
}
public
String
getTypeName
()
{
return
typeName
;
}
@Override
public
String
toString
()
{
return
new
ToStringBuilder
(
this
,
ToStringStyle
.
MULTI_LINE_STYLE
)
.
append
(
"id"
,
getId
())
.
append
(
"typeName"
,
getTypeName
())
.
append
(
"createTime"
,
getCreateTime
())
.
toString
();
}
}
}
qianhe-admin/src/main/java/com/qianhe/system/domain/WaterStation.java
View file @
b548905e
...
@@ -2,6 +2,7 @@ package com.qianhe.system.domain;
...
@@ -2,6 +2,7 @@ package com.qianhe.system.domain;
import
com.qianhe.common.annotation.Excel
;
import
com.qianhe.common.annotation.Excel
;
import
com.qianhe.common.core.domain.BaseEntity
;
import
com.qianhe.common.core.domain.BaseEntity
;
import
lombok.Data
;
import
org.apache.commons.lang3.builder.ToStringBuilder
;
import
org.apache.commons.lang3.builder.ToStringBuilder
;
import
org.apache.commons.lang3.builder.ToStringStyle
;
import
org.apache.commons.lang3.builder.ToStringStyle
;
...
@@ -13,11 +14,12 @@ import java.math.BigDecimal;
...
@@ -13,11 +14,12 @@ import java.math.BigDecimal;
* @author qianhe
* @author qianhe
* @date 2023-11-23
* @date 2023-11-23
*/
*/
@Data
public
class
WaterStation
extends
BaseEntity
public
class
WaterStation
extends
BaseEntity
{
{
private
static
final
long
serialVersionUID
=
1L
;
private
static
final
long
serialVersionUID
=
1L
;
/** $column.columnComment */
private
Long
id
;
private
Long
id
;
/** 站点名称 */
/** 站点名称 */
...
...
qianhe-admin/src/main/java/com/qianhe/system/domain/WaterUser.java
View file @
b548905e
package
com
.
qianhe
.
system
.
domain
;
package
com
.
qianhe
.
system
.
domain
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.qianhe.common.annotation.Excel
;
import
com.qianhe.common.annotation.Excel
;
import
com.qianhe.common.core.domain.BaseEntity
;
import
com.qianhe.common.core.domain.BaseEntity
;
import
lombok.Data
;
import
org.apache.commons.lang3.builder.ToStringBuilder
;
import
org.apache.commons.lang3.builder.ToStringBuilder
;
import
org.apache.commons.lang3.builder.ToStringStyle
;
import
org.apache.commons.lang3.builder.ToStringStyle
;
import
java.util.Date
;
import
java.util.List
;
/**
/**
* 用户对象 water_user
* 用户对象 water_user
*
*
* @author qianhe
* @author qianhe
* @date 2023-11-23
* @date 2023-11-23
*/
*/
public
class
WaterUser
extends
BaseEntity
@Data
public
class
WaterUser
{
{
private
static
final
long
serialVersionUID
=
1L
;
private
static
final
long
serialVersionUID
=
1L
;
/** 主键 */
/** 主键 */
@TableId
(
value
=
"id"
,
type
=
IdType
.
AUTO
)
private
Long
id
;
private
Long
id
;
/** 昵称 */
/** 昵称 */
...
@@ -35,102 +44,17 @@ public class WaterUser extends BaseEntity
...
@@ -35,102 +44,17 @@ public class WaterUser extends BaseEntity
private
String
userType
;
private
String
userType
;
/** 性别(1男0女) */
/** 性别(1男0女) */
@Excel
(
name
=
"性别
(1男0女)
"
)
@Excel
(
name
=
"性别
"
,
combo
=
{
"男"
,
"女"
,
"未知"
},
readConverterExp
=
"1=男,0=女,2=未知
"
)
private
Long
userGender
;
private
Long
userGender
;
/** 状态(0逻辑删除) */
/** 创建时间 */
@Excel
(
name
=
"状态(0逻辑删除)"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
Long
status
;
@Excel
(
name
=
"创建时间"
,
width
=
30
,
dateFormat
=
"yyyy-MM-dd HH:mm:ss"
)
private
Date
createTime
;
/** 状态(1逻辑删除) */
private
String
status
;
/** 微信小程序open_id */
/** 微信小程序open_id */
@Excel
(
name
=
"微信小程序open_id"
)
private
String
openId
;
private
String
openId
;
public
void
setId
(
Long
id
)
{
this
.
id
=
id
;
}
public
Long
getId
()
{
return
id
;
}
public
void
setNickName
(
String
nickName
)
{
this
.
nickName
=
nickName
;
}
public
String
getNickName
()
{
return
nickName
;
}
public
void
setPhoneNum
(
Long
phoneNum
)
{
this
.
phoneNum
=
phoneNum
;
}
public
Long
getPhoneNum
()
{
return
phoneNum
;
}
public
void
setStationName
(
String
stationName
)
{
this
.
stationName
=
stationName
;
}
public
String
getStationName
()
{
return
stationName
;
}
public
void
setUserType
(
String
userType
)
{
this
.
userType
=
userType
;
}
public
String
getUserType
()
{
return
userType
;
}
public
void
setUserGender
(
Long
userGender
)
{
this
.
userGender
=
userGender
;
}
public
Long
getUserGender
()
{
return
userGender
;
}
public
void
setStatus
(
Long
status
)
{
this
.
status
=
status
;
}
public
Long
getStatus
()
{
return
status
;
}
public
void
setOpenId
(
String
openId
)
{
this
.
openId
=
openId
;
}
public
String
getOpenId
()
{
return
openId
;
}
@Override
public
String
toString
()
{
return
new
ToStringBuilder
(
this
,
ToStringStyle
.
MULTI_LINE_STYLE
)
.
append
(
"id"
,
getId
())
.
append
(
"nickName"
,
getNickName
())
.
append
(
"phoneNum"
,
getPhoneNum
())
.
append
(
"stationName"
,
getStationName
())
.
append
(
"userType"
,
getUserType
())
.
append
(
"userGender"
,
getUserGender
())
.
append
(
"createTime"
,
getCreateTime
())
.
append
(
"status"
,
getStatus
())
.
append
(
"openId"
,
getOpenId
())
.
toString
();
}
}
}
qianhe-admin/src/main/java/com/qianhe/system/domain/WaterUserAddress.java
View file @
b548905e
package
com
.
qianhe
.
system
.
domain
;
package
com
.
qianhe
.
system
.
domain
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.qianhe.common.annotation.Excel
;
import
com.qianhe.common.annotation.Excel
;
import
com.qianhe.common.core.domain.BaseEntity
;
import
com.qianhe.common.core.domain.BaseEntity
;
import
lombok.Data
;
import
org.apache.commons.lang3.builder.ToStringBuilder
;
import
org.apache.commons.lang3.builder.ToStringBuilder
;
import
org.apache.commons.lang3.builder.ToStringStyle
;
import
org.apache.commons.lang3.builder.ToStringStyle
;
...
@@ -11,125 +14,33 @@ import org.apache.commons.lang3.builder.ToStringStyle;
...
@@ -11,125 +14,33 @@ import org.apache.commons.lang3.builder.ToStringStyle;
* @author qianhe
* @author qianhe
* @date 2023-11-23
* @date 2023-11-23
*/
*/
public
class
WaterUserAddress
extends
BaseEntity
@Data
public
class
WaterUserAddress
{
{
private
static
final
long
serialVersionUID
=
1L
;
private
static
final
long
serialVersionUID
=
1L
;
/** $column.columnComment */
@TableId
(
value
=
"id"
,
type
=
IdType
.
AUTO
)
private
Long
id
;
private
Long
id
;
/** 用户id */
/** 用户id */
@Excel
(
name
=
"用户id"
)
private
Long
waterUserId
;
private
Long
waterUserId
;
/** 详细地址 */
/** 详细地址 */
@Excel
(
name
=
"详细地址"
)
private
String
userAddress
;
private
String
userAddress
;
/** 省 */
/** 省 */
@Excel
(
name
=
"省"
)
private
String
province
;
private
String
province
;
/** 市 */
/** 市 */
@Excel
(
name
=
"市"
)
private
String
city
;
private
String
city
;
/** 区 */
/** 区 */
@Excel
(
name
=
"区"
)
private
String
area
;
private
String
area
;
/** 收货人姓名 */
/** 收货人姓名 */
@Excel
(
name
=
"收货人姓名"
)
private
String
name
;
private
String
name
;
/** 收货人手机号 */
/** 收货人手机号 */
@Excel
(
name
=
"收货人手机号"
)
private
Long
phone
;
private
Long
phone
;
public
void
setId
(
Long
id
)
{
this
.
id
=
id
;
}
public
Long
getId
()
{
return
id
;
}
public
void
setWaterUserId
(
Long
waterUserId
)
{
this
.
waterUserId
=
waterUserId
;
}
public
Long
getWaterUserId
()
{
return
waterUserId
;
}
public
void
setUserAddress
(
String
userAddress
)
{
this
.
userAddress
=
userAddress
;
}
public
String
getUserAddress
()
{
return
userAddress
;
}
public
void
setProvince
(
String
province
)
{
this
.
province
=
province
;
}
public
String
getProvince
()
{
return
province
;
}
public
void
setCity
(
String
city
)
{
this
.
city
=
city
;
}
public
String
getCity
()
{
return
city
;
}
public
void
setArea
(
String
area
)
{
this
.
area
=
area
;
}
public
String
getArea
()
{
return
area
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
public
String
getName
()
{
return
name
;
}
public
void
setPhone
(
Long
phone
)
{
this
.
phone
=
phone
;
}
public
Long
getPhone
()
{
return
phone
;
}
@Override
public
String
toString
()
{
return
new
ToStringBuilder
(
this
,
ToStringStyle
.
MULTI_LINE_STYLE
)
.
append
(
"id"
,
getId
())
.
append
(
"waterUserId"
,
getWaterUserId
())
.
append
(
"userAddress"
,
getUserAddress
())
.
append
(
"province"
,
getProvince
())
.
append
(
"city"
,
getCity
())
.
append
(
"area"
,
getArea
())
.
append
(
"name"
,
getName
())
.
append
(
"phone"
,
getPhone
())
.
toString
();
}
}
}
qianhe-admin/src/main/java/com/qianhe/system/mapper/WaterUserAddressMapper.java
View file @
b548905e
package
com
.
qianhe
.
system
.
mapper
;
package
com
.
qianhe
.
system
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.qianhe.system.domain.WaterUserAddress
;
import
com.qianhe.system.domain.WaterUserAddress
;
import
java.util.List
;
import
java.util.List
;
/**
/**
* 用户地址Mapper接口
* 用户地址Mapper接口
*
*
* @author qianhe
* @author qianhe
* @date 2023-11-23
* @date 2023-11-23
*/
*/
public
interface
WaterUserAddressMapper
public
interface
WaterUserAddressMapper
extends
BaseMapper
<
WaterUserAddress
>
{
{
/**
/**
* 查询用户地址
* 查询用户地址
*
*
* @param id 用户地址主键
* @param id 用户地址主键
* @return 用户地址
* @return 用户地址
*/
*/
...
@@ -22,7 +23,7 @@ public interface WaterUserAddressMapper
...
@@ -22,7 +23,7 @@ public interface WaterUserAddressMapper
/**
/**
* 查询用户地址列表
* 查询用户地址列表
*
*
* @param waterUserAddress 用户地址
* @param waterUserAddress 用户地址
* @return 用户地址集合
* @return 用户地址集合
*/
*/
...
@@ -30,7 +31,7 @@ public interface WaterUserAddressMapper
...
@@ -30,7 +31,7 @@ public interface WaterUserAddressMapper
/**
/**
* 新增用户地址
* 新增用户地址
*
*
* @param waterUserAddress 用户地址
* @param waterUserAddress 用户地址
* @return 结果
* @return 结果
*/
*/
...
@@ -38,7 +39,7 @@ public interface WaterUserAddressMapper
...
@@ -38,7 +39,7 @@ public interface WaterUserAddressMapper
/**
/**
* 修改用户地址
* 修改用户地址
*
*
* @param waterUserAddress 用户地址
* @param waterUserAddress 用户地址
* @return 结果
* @return 结果
*/
*/
...
@@ -46,7 +47,7 @@ public interface WaterUserAddressMapper
...
@@ -46,7 +47,7 @@ public interface WaterUserAddressMapper
/**
/**
* 删除用户地址
* 删除用户地址
*
*
* @param id 用户地址主键
* @param id 用户地址主键
* @return 结果
* @return 结果
*/
*/
...
@@ -54,7 +55,7 @@ public interface WaterUserAddressMapper
...
@@ -54,7 +55,7 @@ public interface WaterUserAddressMapper
/**
/**
* 批量删除用户地址
* 批量删除用户地址
*
*
* @param ids 需要删除的数据主键集合
* @param ids 需要删除的数据主键集合
* @return 结果
* @return 结果
*/
*/
...
...
qianhe-admin/src/main/java/com/qianhe/system/mapper/WaterUserMapper.java
View file @
b548905e
package
com
.
qianhe
.
system
.
mapper
;
package
com
.
qianhe
.
system
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.qianhe.common.core.domain.model.WxLoginBody
;
import
com.qianhe.system.domain.WaterUser
;
import
com.qianhe.system.domain.WaterUser
;
import
java.util.List
;
import
java.util.List
;
/**
/**
* 用户Mapper接口
* 用户Mapper接口
*
*
* @author qianhe
* @author qianhe
* @date 2023-11-23
* @date 2023-11-23
*/
*/
public
interface
WaterUserMapper
public
interface
WaterUserMapper
extends
BaseMapper
<
WaterUser
>
{
{
/**
/**
* 查询用户
* 查询用户
*
*
* @param id 用户主键
* @param id 用户主键
* @return 用户
* @return 用户
*/
*/
...
@@ -22,7 +24,7 @@ public interface WaterUserMapper
...
@@ -22,7 +24,7 @@ public interface WaterUserMapper
/**
/**
* 查询用户列表
* 查询用户列表
*
*
* @param waterUser 用户
* @param waterUser 用户
* @return 用户集合
* @return 用户集合
*/
*/
...
@@ -30,7 +32,7 @@ public interface WaterUserMapper
...
@@ -30,7 +32,7 @@ public interface WaterUserMapper
/**
/**
* 新增用户
* 新增用户
*
*
* @param waterUser 用户
* @param waterUser 用户
* @return 结果
* @return 结果
*/
*/
...
@@ -38,7 +40,7 @@ public interface WaterUserMapper
...
@@ -38,7 +40,7 @@ public interface WaterUserMapper
/**
/**
* 修改用户
* 修改用户
*
*
* @param waterUser 用户
* @param waterUser 用户
* @return 结果
* @return 结果
*/
*/
...
@@ -46,7 +48,7 @@ public interface WaterUserMapper
...
@@ -46,7 +48,7 @@ public interface WaterUserMapper
/**
/**
* 删除用户
* 删除用户
*
*
* @param id 用户主键
* @param id 用户主键
* @return 结果
* @return 结果
*/
*/
...
@@ -54,9 +56,31 @@ public interface WaterUserMapper
...
@@ -54,9 +56,31 @@ public interface WaterUserMapper
/**
/**
* 批量删除用户
* 批量删除用户
*
*
* @param ids 需要删除的数据主键集合
* @param ids 需要删除的数据主键集合
* @return 结果
* @return 结果
*/
*/
public
int
deleteWaterUserByIds
(
Long
[]
ids
);
public
int
deleteWaterUserByIds
(
Long
[]
ids
);
/**
* 根据openId查询用户
* @param openId
* @return
*/
WaterUser
selectUserByOpenId
(
String
openId
);
/**
* 根据openid修改用户信息
* @param waterUser
* @return
*/
int
updateUserByOpenId
(
WaterUser
waterUser
);
/**
* 批量删除用户地址
*
* @param ids 需要删除的用户id集合
* @return 结果
*/
int
deleteWaterUserAddressByIds
(
Long
[]
ids
);
}
}
qianhe-admin/src/main/java/com/qianhe/system/service/IWaterUserAddressService.java
View file @
b548905e
package
com
.
qianhe
.
system
.
service
;
package
com
.
qianhe
.
system
.
service
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.qianhe.system.domain.WaterUserAddress
;
import
com.qianhe.system.domain.WaterUserAddress
;
import
java.util.List
;
import
java.util.List
;
/**
/**
* 用户地址Service接口
* 用户地址Service接口
*
*
* @author qianhe
* @author qianhe
* @date 2023-11-23
* @date 2023-11-23
*/
*/
public
interface
IWaterUserAddressService
public
interface
IWaterUserAddressService
extends
IService
<
WaterUserAddress
>
{
{
/**
/**
* 查询用户地址
* 查询用户地址
*
*
* @param id 用户地址主键
* @param id 用户地址主键
* @return 用户地址
* @return 用户地址
*/
*/
...
@@ -22,7 +23,7 @@ public interface IWaterUserAddressService
...
@@ -22,7 +23,7 @@ public interface IWaterUserAddressService
/**
/**
* 查询用户地址列表
* 查询用户地址列表
*
*
* @param waterUserAddress 用户地址
* @param waterUserAddress 用户地址
* @return 用户地址集合
* @return 用户地址集合
*/
*/
...
@@ -30,7 +31,7 @@ public interface IWaterUserAddressService
...
@@ -30,7 +31,7 @@ public interface IWaterUserAddressService
/**
/**
* 新增用户地址
* 新增用户地址
*
*
* @param waterUserAddress 用户地址
* @param waterUserAddress 用户地址
* @return 结果
* @return 结果
*/
*/
...
@@ -38,7 +39,7 @@ public interface IWaterUserAddressService
...
@@ -38,7 +39,7 @@ public interface IWaterUserAddressService
/**
/**
* 修改用户地址
* 修改用户地址
*
*
* @param waterUserAddress 用户地址
* @param waterUserAddress 用户地址
* @return 结果
* @return 结果
*/
*/
...
@@ -46,7 +47,7 @@ public interface IWaterUserAddressService
...
@@ -46,7 +47,7 @@ public interface IWaterUserAddressService
/**
/**
* 批量删除用户地址
* 批量删除用户地址
*
*
* @param ids 需要删除的用户地址主键集合
* @param ids 需要删除的用户地址主键集合
* @return 结果
* @return 结果
*/
*/
...
@@ -54,7 +55,7 @@ public interface IWaterUserAddressService
...
@@ -54,7 +55,7 @@ public interface IWaterUserAddressService
/**
/**
* 删除用户地址信息
* 删除用户地址信息
*
*
* @param id 用户地址主键
* @param id 用户地址主键
* @return 结果
* @return 结果
*/
*/
...
...
qianhe-admin/src/main/java/com/qianhe/system/service/IWaterUserService.java
View file @
b548905e
package
com
.
qianhe
.
system
.
service
;
package
com
.
qianhe
.
system
.
service
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.qianhe.common.core.domain.model.WxLoginBody
;
import
com.qianhe.system.domain.WaterUser
;
import
com.qianhe.system.domain.WaterUser
;
import
com.qianhe.system.vo.WaterUserVo
;
import
java.util.List
;
import
java.util.List
;
/**
/**
* 用户Service接口
* 用户Service接口
*
*
* @author qianhe
* @author qianhe
* @date 2023-11-23
* @date 2023-11-23
*/
*/
public
interface
IWaterUserService
public
interface
IWaterUserService
extends
IService
<
WaterUser
>
{
{
/**
/**
* 查询用户
* 查询用户
*
*
* @param id 用户主键
* @param id 用户主键
* @return 用户
* @return 用户
*/
*/
public
WaterUser
selectWaterUserById
(
Long
id
);
public
WaterUser
Vo
selectWaterUserById
(
Long
id
);
/**
/**
* 查询用户列表
* 查询用户列表
*
*
* @param waterUser 用户
* @param waterUser 用户
* @return 用户集合
* @return 用户集合
*/
*/
...
@@ -30,7 +33,7 @@ public interface IWaterUserService
...
@@ -30,7 +33,7 @@ public interface IWaterUserService
/**
/**
* 新增用户
* 新增用户
*
*
* @param waterUser 用户
* @param waterUser 用户
* @return 结果
* @return 结果
*/
*/
...
@@ -38,7 +41,7 @@ public interface IWaterUserService
...
@@ -38,7 +41,7 @@ public interface IWaterUserService
/**
/**
* 修改用户
* 修改用户
*
*
* @param waterUser 用户
* @param waterUser 用户
* @return 结果
* @return 结果
*/
*/
...
@@ -46,7 +49,7 @@ public interface IWaterUserService
...
@@ -46,7 +49,7 @@ public interface IWaterUserService
/**
/**
* 批量删除用户
* 批量删除用户
*
*
* @param ids 需要删除的用户主键集合
* @param ids 需要删除的用户主键集合
* @return 结果
* @return 结果
*/
*/
...
@@ -54,9 +57,23 @@ public interface IWaterUserService
...
@@ -54,9 +57,23 @@ public interface IWaterUserService
/**
/**
* 删除用户信息
* 删除用户信息
*
*
* @param id 用户主键
* @param id 用户主键
* @return 结果
* @return 结果
*/
*/
public
int
deleteWaterUserById
(
Long
id
);
public
int
deleteWaterUserById
(
Long
id
);
/**
* 根据openid查询用户
* @param openId
* @return
*/
WaterUser
selectUserByOpenId
(
String
openId
);
/**
* 根据openid修改用户信息
* @param waterUser
* @return
*/
int
updateUserByOpenId
(
WaterUser
waterUser
);
}
}
qianhe-admin/src/main/java/com/qianhe/system/service/api/IWxLoginService.java
0 → 100644
View file @
b548905e
package
com
.
qianhe
.
system
.
service
.
api
;
import
com.qianhe.common.core.domain.model.MpLoginUser
;
import
com.qianhe.common.core.domain.model.WxLoginBody
;
public
interface
IWxLoginService
{
MpLoginUser
login
(
WxLoginBody
wxLoginBody
);
}
qianhe-admin/src/main/java/com/qianhe/system/service/impl/WaterUserAddressServiceImpl.java
View file @
b548905e
package
com
.
qianhe
.
system
.
service
.
impl
;
package
com
.
qianhe
.
system
.
service
.
impl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.qianhe.system.domain.WaterUserAddress
;
import
com.qianhe.system.domain.WaterUserAddress
;
import
com.qianhe.system.mapper.WaterUserAddressMapper
;
import
com.qianhe.system.mapper.WaterUserAddressMapper
;
import
com.qianhe.system.service.IWaterUserAddressService
;
import
com.qianhe.system.service.IWaterUserAddressService
;
...
@@ -15,7 +16,7 @@ import java.util.List;
...
@@ -15,7 +16,7 @@ import java.util.List;
* @date 2023-11-23
* @date 2023-11-23
*/
*/
@Service
@Service
public
class
WaterUserAddressServiceImpl
implements
IWaterUserAddressService
public
class
WaterUserAddressServiceImpl
extends
ServiceImpl
<
WaterUserAddressMapper
,
WaterUserAddress
>
implements
IWaterUserAddressService
{
{
@Autowired
@Autowired
private
WaterUserAddressMapper
waterUserAddressMapper
;
private
WaterUserAddressMapper
waterUserAddressMapper
;
...
...
qianhe-admin/src/main/java/com/qianhe/system/service/impl/WaterUserServiceImpl.java
View file @
b548905e
package
com
.
qianhe
.
system
.
service
.
impl
;
package
com
.
qianhe
.
system
.
service
.
impl
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.qianhe.common.core.domain.model.WxLoginBody
;
import
com.qianhe.common.utils.DateUtils
;
import
com.qianhe.common.utils.DateUtils
;
import
com.qianhe.system.domain.WaterUser
;
import
com.qianhe.system.domain.WaterUser
;
import
com.qianhe.system.domain.WaterUserAddress
;
import
com.qianhe.system.mapper.WaterUserAddressMapper
;
import
com.qianhe.system.mapper.WaterUserMapper
;
import
com.qianhe.system.mapper.WaterUserMapper
;
import
com.qianhe.system.service.IWaterUserService
;
import
com.qianhe.system.service.IWaterUserService
;
import
com.qianhe.system.vo.WaterUserVo
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
...
@@ -16,10 +23,12 @@ import java.util.List;
...
@@ -16,10 +23,12 @@ import java.util.List;
* @date 2023-11-23
* @date 2023-11-23
*/
*/
@Service
@Service
public
class
WaterUserServiceImpl
implements
IWaterUserService
public
class
WaterUserServiceImpl
extends
ServiceImpl
<
WaterUserMapper
,
WaterUser
>
implements
IWaterUserService
{
{
@Autowired
@Autowired
private
WaterUserMapper
waterUserMapper
;
private
WaterUserMapper
waterUserMapper
;
@Autowired
private
WaterUserAddressMapper
waterUserAddressMapper
;
/**
/**
* 查询用户
* 查询用户
...
@@ -28,9 +37,18 @@ public class WaterUserServiceImpl implements IWaterUserService
...
@@ -28,9 +37,18 @@ public class WaterUserServiceImpl implements IWaterUserService
* @return 用户
* @return 用户
*/
*/
@Override
@Override
public
WaterUser
selectWaterUserById
(
Long
id
)
public
WaterUser
Vo
selectWaterUserById
(
Long
id
)
{
{
return
waterUserMapper
.
selectWaterUserById
(
id
);
//转vo
WaterUser
waterUser
=
waterUserMapper
.
selectWaterUserById
(
id
);
WaterUserVo
waterUserVo
=
new
WaterUserVo
();
BeanUtils
.
copyProperties
(
waterUser
,
waterUserVo
);
//查询用户地址信息
WaterUserAddress
waterUserAddress
=
new
WaterUserAddress
();
waterUserAddress
.
setWaterUserId
(
id
);
List
<
WaterUserAddress
>
waterUserAddresses
=
waterUserAddressMapper
.
selectWaterUserAddressList
(
waterUserAddress
);
waterUserVo
.
setWaterUserAddressList
(
waterUserAddresses
);
return
waterUserVo
;
}
}
/**
/**
...
@@ -79,6 +97,8 @@ public class WaterUserServiceImpl implements IWaterUserService
...
@@ -79,6 +97,8 @@ public class WaterUserServiceImpl implements IWaterUserService
@Override
@Override
public
int
deleteWaterUserByIds
(
Long
[]
ids
)
public
int
deleteWaterUserByIds
(
Long
[]
ids
)
{
{
//删除用户地址信息
waterUserMapper
.
deleteWaterUserAddressByIds
(
ids
);
return
waterUserMapper
.
deleteWaterUserByIds
(
ids
);
return
waterUserMapper
.
deleteWaterUserByIds
(
ids
);
}
}
...
@@ -93,4 +113,24 @@ public class WaterUserServiceImpl implements IWaterUserService
...
@@ -93,4 +113,24 @@ public class WaterUserServiceImpl implements IWaterUserService
{
{
return
waterUserMapper
.
deleteWaterUserById
(
id
);
return
waterUserMapper
.
deleteWaterUserById
(
id
);
}
}
/**
* 根据openid查询用户
* @param openId
* @return
*/
@Override
public
WaterUser
selectUserByOpenId
(
String
openId
)
{
return
waterUserMapper
.
selectUserByOpenId
(
openId
);
}
/**
* 根据openid修改用户信息
* @param waterUser
* @return
*/
@Override
public
int
updateUserByOpenId
(
WaterUser
waterUser
)
{
return
waterUserMapper
.
updateUserByOpenId
(
waterUser
);
}
}
}
qianhe-admin/src/main/java/com/qianhe/system/service/impl/api/WxLoginServiceImpl.java
0 → 100644
View file @
b548905e
package
com
.
qianhe
.
system
.
service
.
impl
.
api
;
import
com.qianhe.common.core.domain.model.MpLoginUser
;
import
com.qianhe.common.core.domain.model.WxLoginBody
;
import
com.qianhe.common.utils.DateUtils
;
import
com.qianhe.common.utils.StringUtils
;
import
com.qianhe.system.domain.WaterUser
;
import
com.qianhe.system.mapper.WaterUserMapper
;
import
com.qianhe.system.service.api.IWxLoginService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
@Service
public
class
WxLoginServiceImpl
implements
IWxLoginService
{
@Autowired
private
WaterUserMapper
waterUserMapper
;
@Override
public
MpLoginUser
login
(
WxLoginBody
wxLoginBody
)
{
//根据用户openid查询用户是否存在
WaterUser
user
=
waterUserMapper
.
selectUserByOpenId
(
wxLoginBody
.
getOpenId
());
if
(
StringUtils
.
isNotNull
(
user
)){
//存在
MpLoginUser
loginUser
=
new
MpLoginUser
();
loginUser
.
setOpenId
(
wxLoginBody
.
getOpenId
());
loginUser
.
setUserId
(
user
.
getId
());
loginUser
.
setNickName
(
user
.
getNickName
());
loginUser
.
setIsNewUser
(
"0"
);
return
loginUser
;
}
//不存在,新增用户
WaterUser
waterUser
=
new
WaterUser
();
waterUser
.
setNickName
(
"微信用户"
);
waterUser
.
setOpenId
(
wxLoginBody
.
getOpenId
());
waterUser
.
setCreateTime
(
DateUtils
.
getNowDate
());
waterUserMapper
.
insertWaterUser
(
waterUser
);
MpLoginUser
loginUser
=
new
MpLoginUser
();
loginUser
.
setOpenId
(
wxLoginBody
.
getOpenId
());
loginUser
.
setUserId
(
waterUser
.
getId
());
loginUser
.
setNickName
(
"微信用户"
);
loginUser
.
setIsNewUser
(
"1"
);
return
loginUser
;
}
}
qianhe-admin/src/main/java/com/qianhe/system/utils/AccessTokenUtils.java
0 → 100644
View file @
b548905e
package
com
.
qianhe
.
system
.
utils
;
import
cn.hutool.http.HttpUtil
;
import
cn.hutool.json.JSONObject
;
import
cn.hutool.json.JSONUtil
;
import
com.qianhe.common.core.redis.RedisCache
;
import
com.qianhe.common.utils.StringUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Component
;
import
java.util.concurrent.TimeUnit
;
@Component
public
class
AccessTokenUtils
{
@Value
(
"${wx.access-token-uri}"
)
private
String
accessTokenUri
;
private
static
Logger
log
=
LoggerFactory
.
getLogger
(
AccessTokenUtils
.
class
);
@Autowired
public
RedisCache
redisCache
;
/**
* 获取token
* @return
* @throws Exception
*/
public
String
getToken
(){
String
token
=
redisCache
.
getCacheObject
(
"wx_access_token"
);
if
(
StringUtils
.
isEmpty
(
token
)){
try
{
String
url
=
accessTokenUri
;
// 利用hutool的http工具类请求获取access_token
String
result
=
HttpUtil
.
get
(
url
);
// 将结果解析为json
JSONObject
jsonObject
=
JSONUtil
.
parseObj
(
result
);
// 获取access_token
String
accessToken
=
(
String
)
jsonObject
.
get
(
"access_token"
);
if
(!
StringUtils
.
isEmpty
(
accessToken
))
{
token
=
accessToken
;
log
.
info
(
accessToken
);
// 将access_token存入redis
redisCache
.
setCacheObject
(
"wx_access_token"
,
accessToken
,
7200
,
TimeUnit
.
MILLISECONDS
);
}
}
catch
(
Exception
e
)
{
log
.
error
(
e
.
getMessage
(),
e
);
}
}
return
token
;
}
}
qianhe-admin/src/main/java/com/qianhe/system/utils/HttpClientUtil.java
0 → 100644
View file @
b548905e
package
com
.
qianhe
.
system
.
utils
;
import
org.apache.http.NameValuePair
;
import
org.apache.http.client.entity.UrlEncodedFormEntity
;
import
org.apache.http.client.methods.CloseableHttpResponse
;
import
org.apache.http.client.methods.HttpGet
;
import
org.apache.http.client.methods.HttpPost
;
import
org.apache.http.client.utils.URIBuilder
;
import
org.apache.http.entity.ContentType
;
import
org.apache.http.entity.StringEntity
;
import
org.apache.http.impl.client.CloseableHttpClient
;
import
org.apache.http.impl.client.HttpClients
;
import
org.apache.http.message.BasicNameValuePair
;
import
org.apache.http.util.EntityUtils
;
import
java.io.IOException
;
import
java.net.URI
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
public
class
HttpClientUtil
{
/**
* @Auther: gengshuai@cetiti.com
* @Description: 带参数GET请求
* @Param: [url, param]
* @Return: java.lang.String
* @Create: 2018-9-21 9:03
*/
public
static
String
doGet
(
String
url
,
Map
<
String
,
String
>
param
)
{
// 创建Httpclient对象
CloseableHttpClient
httpclient
=
HttpClients
.
createDefault
();
String
resultString
=
""
;
CloseableHttpResponse
response
=
null
;
try
{
// 创建uri
URIBuilder
builder
=
new
URIBuilder
(
url
);
if
(
param
!=
null
)
{
for
(
String
key
:
param
.
keySet
())
{
builder
.
addParameter
(
key
,
param
.
get
(
key
));
}
}
URI
uri
=
builder
.
build
();
// 创建http GET请求
HttpGet
httpGet
=
new
HttpGet
(
uri
);
// 执行请求
response
=
httpclient
.
execute
(
httpGet
);
// 判断返回状态是否为200
if
(
response
.
getStatusLine
().
getStatusCode
()
==
200
)
{
resultString
=
EntityUtils
.
toString
(
response
.
getEntity
(),
"UTF-8"
);
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
finally
{
try
{
if
(
response
!=
null
)
{
response
.
close
();
}
httpclient
.
close
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
return
resultString
;
}
/**
* @Auther: gengshuai@cetiti.com
* @Description: 带参数和请求头的GET请求
* @Param: [url, param, header]
* @Return: java.lang.String
* @Create: 2018-9-25 20:09
*/
public
static
String
doGet
(
String
url
,
Map
<
String
,
String
>
param
,
Map
<
String
,
String
>
header
)
{
// 创建Httpclient对象
CloseableHttpClient
httpclient
=
HttpClients
.
createDefault
();
String
resultString
=
""
;
CloseableHttpResponse
response
=
null
;
try
{
// 创建uri
URIBuilder
builder
=
new
URIBuilder
(
url
);
if
(
param
!=
null
)
{
for
(
String
key
:
param
.
keySet
())
{
builder
.
addParameter
(
key
,
param
.
get
(
key
).
toString
());
}
}
URI
uri
=
builder
.
build
();
// 创建http GET请求
HttpGet
httpGet
=
new
HttpGet
(
uri
);
if
(
header
!=
null
)
{
for
(
String
key
:
header
.
keySet
())
{
httpGet
.
setHeader
(
key
,
header
.
get
(
key
).
toString
());
}
}
// 执行请求
response
=
httpclient
.
execute
(
httpGet
);
// 判断返回状态是否为200
if
(
response
.
getStatusLine
().
getStatusCode
()
==
200
)
{
resultString
=
EntityUtils
.
toString
(
response
.
getEntity
(),
"UTF-8"
);
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
finally
{
try
{
if
(
response
!=
null
)
{
response
.
close
();
}
httpclient
.
close
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
return
resultString
;
}
/**
* @Auther: gengshuai@cetiti.com
* @Description: 无参GET请求
* @Param: [url]
* @Return: java.lang.String
* @Create: 2018-9-21 9:05
*/
public
static
String
doGet
(
String
url
)
{
return
doGet
(
url
,
null
);
}
/**
* @Auther: gengshuai@cetiti.com
* @Description: application/x-www-form-urlencoded编码方式带参POST请求
* @Param: [url, param]
* @Return: java.lang.String
* @Create: 2018-9-21 9:05
*/
public
static
String
doPost
(
String
url
,
Map
<
String
,
String
>
param
)
{
// 创建Httpclient对象
CloseableHttpClient
httpClient
=
HttpClients
.
createDefault
();
CloseableHttpResponse
response
=
null
;
String
resultString
=
""
;
try
{
// 创建Http Post请求
HttpPost
httpPost
=
new
HttpPost
(
url
);
// 创建参数列表
if
(
param
!=
null
)
{
List
<
NameValuePair
>
paramList
=
new
ArrayList
();
for
(
String
key
:
param
.
keySet
())
{
paramList
.
add
(
new
BasicNameValuePair
(
key
,
param
.
get
(
key
)));
}
// 模拟表单
UrlEncodedFormEntity
entity
=
new
UrlEncodedFormEntity
(
paramList
,
"utf-8"
);
httpPost
.
setEntity
(
entity
);
}
// 执行http请求
response
=
httpClient
.
execute
(
httpPost
);
resultString
=
EntityUtils
.
toString
(
response
.
getEntity
(),
"utf-8"
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
finally
{
try
{
response
.
close
();
}
catch
(
IOException
e
)
{
// TODO Auto-generated catch block
e
.
printStackTrace
();
}
}
return
resultString
;
}
/**
* @Auther: gengshuai@cetiti.com
* @Description: application/x-www-form-urlencoded编码方式带参数和请求头的POST请求
* @Param: [url, param, header]
* @Return: java.lang.String
* @Create: 2018-9-27 14:54
*/
public
static
String
doPost
(
String
url
,
Map
<
String
,
String
>
param
,
Map
<
String
,
String
>
header
)
{
// 创建Httpclient对象
CloseableHttpClient
httpClient
=
HttpClients
.
createDefault
();
CloseableHttpResponse
response
=
null
;
String
resultString
=
""
;
try
{
// 创建Http Post请求
HttpPost
httpPost
=
new
HttpPost
(
url
);
//添加请求头信息
if
(
header
!=
null
)
{
for
(
String
key
:
header
.
keySet
())
{
httpPost
.
setHeader
(
key
,
header
.
get
(
key
).
toString
());
}
}
// 创建参数列表
if
(
param
!=
null
)
{
List
<
NameValuePair
>
paramList
=
new
ArrayList
();
for
(
String
key
:
param
.
keySet
())
{
paramList
.
add
(
new
BasicNameValuePair
(
key
,
param
.
get
(
key
)));
}
// 模拟表单
UrlEncodedFormEntity
entity
=
new
UrlEncodedFormEntity
(
paramList
,
"utf-8"
);
httpPost
.
setEntity
(
entity
);
}
// 执行http请求
response
=
httpClient
.
execute
(
httpPost
);
resultString
=
EntityUtils
.
toString
(
response
.
getEntity
(),
"utf-8"
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
finally
{
try
{
response
.
close
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
return
resultString
;
}
/**
* @Auther: gengshuai@cetiti.com
* @Description: application/x-www-form-urlencoded编码方式无参POST请求
* @Param: [url]
* @Return: java.lang.String
* @Create: 2018-9-21 9:10
*/
public
static
String
doPost
(
String
url
)
{
return
doPost
(
url
,
null
);
}
/**
* @Auther: gengshuai@cetiti.com
* @Description: application/json编码方式POST请求
* @Param: [url, json]
* @Return: java.lang.String
* @Create: 2018-9-21 9:11
*/
public
static
String
doPostJson
(
String
url
,
String
json
)
{
// 创建Httpclient对象
CloseableHttpClient
httpClient
=
HttpClients
.
createDefault
();
CloseableHttpResponse
response
=
null
;
String
resultString
=
""
;
try
{
// 创建Http Post请求
HttpPost
httpPost
=
new
HttpPost
(
url
);
// 创建请求内容
StringEntity
entity
=
new
StringEntity
(
json
,
ContentType
.
APPLICATION_JSON
);
httpPost
.
setEntity
(
entity
);
// 执行http请求
response
=
httpClient
.
execute
(
httpPost
);
resultString
=
EntityUtils
.
toString
(
response
.
getEntity
(),
"utf-8"
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
finally
{
try
{
response
.
close
();
}
catch
(
IOException
e
)
{
// TODO Auto-generated catch block
e
.
printStackTrace
();
}
}
return
resultString
;
}
/**
* @Auther: gengshuai@cetiti.com
* @Description: application/json编码方式带请求头POST请求
* @Param: [url, json, header]
* @Return: java.lang.String
* @Create: 2018-9-27 15:19
*/
public
static
String
doPostJson
(
String
url
,
String
json
,
Map
<
String
,
String
>
header
)
{
// 创建Httpclient对象
CloseableHttpClient
httpClient
=
HttpClients
.
createDefault
();
CloseableHttpResponse
response
=
null
;
String
resultString
=
""
;
try
{
// 创建Http Post请求
HttpPost
httpPost
=
new
HttpPost
(
url
);
//添加请求头信息
if
(
header
!=
null
)
{
for
(
String
key
:
header
.
keySet
())
{
httpPost
.
setHeader
(
key
,
header
.
get
(
key
).
toString
());
}
}
// 创建请求内容
StringEntity
entity
=
new
StringEntity
(
json
,
"utf-8"
);
httpPost
.
setEntity
(
entity
);
// 执行http请求
response
=
httpClient
.
execute
(
httpPost
);
resultString
=
EntityUtils
.
toString
(
response
.
getEntity
(),
"utf-8"
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
finally
{
try
{
response
.
close
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
return
resultString
;
}
}
qianhe-admin/src/main/java/com/qianhe/system/utils/WxUserInfoUtils.java
0 → 100644
View file @
b548905e
package
com
.
qianhe
.
system
.
utils
;
import
cn.hutool.http.HttpUtil
;
import
cn.hutool.json.JSONObject
;
import
cn.hutool.json.JSONUtil
;
import
org.bouncycastle.jce.provider.BouncyCastleProvider
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.Base64Utils
;
import
javax.crypto.Cipher
;
import
javax.crypto.spec.IvParameterSpec
;
import
javax.crypto.spec.SecretKeySpec
;
import
java.security.AlgorithmParameters
;
import
java.security.Security
;
import
java.util.Arrays
;
import
java.util.HashMap
;
import
java.util.Map
;
@Component
public
class
WxUserInfoUtils
{
@Value
(
"${wx.appId}"
)
private
String
appId
;
@Value
(
"${wx.appSecret}"
)
private
String
appSecret
;
@Autowired
AccessTokenUtils
accessTokenUtils
;
private
static
Logger
log
=
LoggerFactory
.
getLogger
(
WxUserInfoUtils
.
class
);
/**
* 获取openid喝session_key
* @param code
* @return
*/
public
Map
<
String
,
String
>
getWxLoginInfo
(
String
code
)
{
//微信登录凭证校验
String
url
=
"https://api.weixin.qq.com/sns/jscode2session?appid="
+
appId
+
"&secret="
+
appSecret
+
"&js_code="
+
code
+
"&grant_type=authorization_code"
;
//利用hutool发起get请求
String
result
=
HttpUtil
.
get
(
url
);
//使用 hutool 解析json
JSONObject
jsonObject
=
JSONUtil
.
parseObj
(
result
);
//获取会话密钥
String
session_key
=
(
String
)
jsonObject
.
get
(
"session_key"
);
//获取用户在开放平台的唯一标识符
String
unionid
=
(
String
)
jsonObject
.
get
(
"unionid"
);
//获取用户唯一标识
String
openid
=
(
String
)
jsonObject
.
get
(
"openid"
);
Map
<
String
,
String
>
map
=
new
HashMap
<>();
map
.
put
(
"openid"
,
openid
);
map
.
put
(
"session_key"
,
session_key
);
return
map
;
}
/**
* 获取用户手机号
*/
public
String
getWxUserPhone
(
String
code
){
//获取accessToken
String
accessToken
=
accessTokenUtils
.
getToken
();
//获取phone
String
url
=
"https://api.weixin.qq.com/wxa/business/getuserphonenumber"
+
"?access_token="
+
accessToken
;
Map
<
String
,
String
>
param
=
new
HashMap
<>();
param
.
put
(
"code"
,
code
);
JSONObject
wxJson
=
JSONUtil
.
parseObj
(
HttpClientUtil
.
doPost
(
url
,
param
));
//返回手机号信息
JSONObject
phone_info
=
JSONUtil
.
parseObj
(
wxJson
.
get
(
"phone_info"
));
//用户绑定的手机号(国外手机号会有区号)
String
phoneNumber
=
(
String
)
phone_info
.
get
(
"phoneNumber"
);
return
phoneNumber
;
}
/**
* 解密用户手机号 (已废弃)
*
* @param encryptedData 包括敏感数据在内的完整用户信息的加密数据
* @param iv 加密算法的初始向量
*/
public
String
getMobile
(
String
encryptedData
,
String
sesskey
,
String
iv
)
{
String
result
=
decryptData
(
encryptedData
,
sesskey
,
iv
);
if
(
result
==
null
)
{
return
null
;
}
Map
<
String
,
String
>
map
=
new
JSONObject
(
result
).
toBean
(
Map
.
class
);
return
map
.
get
(
"phoneNumber"
);
}
/**
* (已废弃)
* @param encryptedData
* @param sessionKey
* @param iv
* @return
*/
public
String
decryptData
(
String
encryptedData
,
String
sessionKey
,
String
iv
)
{
// 被加密的数据
byte
[]
dataByte
=
Base64Utils
.
decode
(
encryptedData
.
getBytes
());
// 加密秘钥
byte
[]
keyByte
=
Base64Utils
.
decode
(
sessionKey
.
getBytes
());
// 偏移量
byte
[]
ivByte
=
Base64Utils
.
decode
(
iv
.
getBytes
());
try
{
// 如果密钥不足16位,那么就补足. 这个if 中的内容很重要
int
base
=
16
;
if
(
keyByte
.
length
%
base
!=
0
)
{
int
groups
=
keyByte
.
length
/
base
+
(
keyByte
.
length
%
base
!=
0
?
1
:
0
);
byte
[]
temp
=
new
byte
[
groups
*
base
];
Arrays
.
fill
(
temp
,
(
byte
)
0
);
System
.
arraycopy
(
keyByte
,
0
,
temp
,
0
,
keyByte
.
length
);
keyByte
=
temp
;
}
// 初始化
Security
.
addProvider
(
new
BouncyCastleProvider
());
Cipher
cipher
=
Cipher
.
getInstance
(
"AES/CBC/PKCS7Padding"
,
"BC"
);
SecretKeySpec
spec
=
new
SecretKeySpec
(
keyByte
,
"AES"
);
AlgorithmParameters
parameters
=
AlgorithmParameters
.
getInstance
(
"AES"
);
parameters
.
init
(
new
IvParameterSpec
(
ivByte
));
// 初始化
cipher
.
init
(
Cipher
.
DECRYPT_MODE
,
spec
,
parameters
);
byte
[]
resultByte
=
cipher
.
doFinal
(
dataByte
);
if
(
null
!=
resultByte
&&
resultByte
.
length
>
0
)
{
String
result
=
new
String
(
resultByte
,
"UTF-8"
);
return
result
;
}
}
catch
(
Exception
e
)
{
log
.
error
(
e
.
getMessage
(),
e
);
}
return
null
;
}
}
qianhe-admin/src/main/java/com/qianhe/system/vo/WaterUserVo.java
0 → 100644
View file @
b548905e
package
com
.
qianhe
.
system
.
vo
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.qianhe.common.annotation.Excel
;
import
com.qianhe.system.domain.WaterUserAddress
;
import
lombok.Data
;
import
java.util.Date
;
import
java.util.List
;
@Data
public
class
WaterUserVo
{
/** 主键 */
@TableId
(
value
=
"id"
,
type
=
IdType
.
AUTO
)
private
Long
id
;
/** 昵称 */
@Excel
(
name
=
"昵称"
)
private
String
nickName
;
/** 手机号 */
@Excel
(
name
=
"手机号"
)
private
Long
phoneNum
;
/** 站点名称 */
@Excel
(
name
=
"站点名称"
)
private
String
stationName
;
/** 用户类型 */
@Excel
(
name
=
"用户类型"
)
private
String
userType
;
/** 性别(1男0女) */
@Excel
(
name
=
"性别"
,
combo
=
{
"男"
,
"女"
,
"未知"
},
readConverterExp
=
"1=男,0=女,2=未知"
)
private
Long
userGender
;
/** 创建时间 */
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
@Excel
(
name
=
"创建时间"
,
width
=
30
,
dateFormat
=
"yyyy-MM-dd HH:mm:ss"
)
private
Date
createTime
;
/** 状态(1逻辑删除) */
private
String
status
;
/** 微信小程序open_id */
private
String
openId
;
private
List
<
WaterUserAddress
>
waterUserAddressList
;
}
qianhe-admin/src/main/resources/application.yml
View file @
b548905e
...
@@ -70,13 +70,13 @@ spring:
...
@@ -70,13 +70,13 @@ spring:
# redis 配置
# redis 配置
redis
:
redis
:
# 地址
# 地址
host
:
localhost
host
:
1.116.38.25
# 端口,默认为6379
# 端口,默认为6379
port
:
637
9
port
:
778
9
# 数据库索引
# 数据库索引
database
:
0
database
:
1
# 密码
# 密码
password
:
password
:
qianheRedis2021
# 连接超时时间
# 连接超时时间
timeout
:
10s
timeout
:
10s
lettuce
:
lettuce
:
...
@@ -129,3 +129,8 @@ xss:
...
@@ -129,3 +129,8 @@ xss:
excludes
:
/system/notice
excludes
:
/system/notice
# 匹配链接
# 匹配链接
urlPatterns
:
/system/*,/monitor/*,/tool/*
urlPatterns
:
/system/*,/monitor/*,/tool/*
wx
:
appId
:
wxb51f4823578b94d3
appSecret
:
b9eaa65a8f2726710d0916e4b26936b6
access-token-uri
:
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${wx.appId}&secret=${wx.appSecret}
qianhe-admin/src/main/resources/mapper
.system
/WaterGoodsImgMapper.xml
→
qianhe-admin/src/main/resources/mapper/WaterGoodsImgMapper.xml
View file @
b548905e
File moved
qianhe-admin/src/main/resources/mapper
.system
/WaterGoodsMapper.xml
→
qianhe-admin/src/main/resources/mapper/WaterGoodsMapper.xml
View file @
b548905e
File moved
qianhe-admin/src/main/resources/mapper
.system
/WaterGoodsSpeMapper.xml
→
qianhe-admin/src/main/resources/mapper/WaterGoodsSpeMapper.xml
View file @
b548905e
File moved
qianhe-admin/src/main/resources/mapper
.system
/WaterGoodsTypeMapper.xml
→
qianhe-admin/src/main/resources/mapper/WaterGoodsTypeMapper.xml
View file @
b548905e
File moved
qianhe-admin/src/main/resources/mapper
.system
/WaterOrderGoodsMapper.xml
→
qianhe-admin/src/main/resources/mapper/WaterOrderGoodsMapper.xml
View file @
b548905e
File moved
qianhe-admin/src/main/resources/mapper
.system
/WaterOrderLogMapper.xml
→
qianhe-admin/src/main/resources/mapper/WaterOrderLogMapper.xml
View file @
b548905e
File moved
qianhe-admin/src/main/resources/mapper
.system
/WaterOrderMapper.xml
→
qianhe-admin/src/main/resources/mapper/WaterOrderMapper.xml
View file @
b548905e
File moved
qianhe-admin/src/main/resources/mapper
.system
/WaterSpeMapper.xml
→
qianhe-admin/src/main/resources/mapper/WaterSpeMapper.xml
View file @
b548905e
File moved
qianhe-admin/src/main/resources/mapper
.system
/WaterStationMapper.xml
→
qianhe-admin/src/main/resources/mapper/WaterStationMapper.xml
View file @
b548905e
File moved
qianhe-admin/src/main/resources/mapper
.system
/WaterStationUserMapper.xml
→
qianhe-admin/src/main/resources/mapper/WaterStationUserMapper.xml
View file @
b548905e
File moved
qianhe-admin/src/main/resources/mapper
.system
/WaterTextMapper.xml
→
qianhe-admin/src/main/resources/mapper/WaterTextMapper.xml
View file @
b548905e
File moved
qianhe-admin/src/main/resources/mapper
.system
/WaterUserAddressMapper.xml
→
qianhe-admin/src/main/resources/mapper/WaterUserAddressMapper.xml
View file @
b548905e
File moved
qianhe-admin/src/main/resources/mapper
.system
/WaterUserMapper.xml
→
qianhe-admin/src/main/resources/mapper/WaterUserMapper.xml
View file @
b548905e
...
@@ -3,7 +3,7 @@
...
@@ -3,7 +3,7 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.qianhe.system.mapper.WaterUserMapper"
>
<mapper
namespace=
"com.qianhe.system.mapper.WaterUserMapper"
>
<resultMap
type=
"WaterUser"
id=
"WaterUserResult"
>
<resultMap
type=
"WaterUser"
id=
"WaterUserResult"
>
<result
property=
"id"
column=
"id"
/>
<result
property=
"id"
column=
"id"
/>
<result
property=
"nickName"
column=
"nick_name"
/>
<result
property=
"nickName"
column=
"nick_name"
/>
...
@@ -22,7 +22,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
...
@@ -22,7 +22,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select
id=
"selectWaterUserList"
parameterType=
"WaterUser"
resultMap=
"WaterUserResult"
>
<select
id=
"selectWaterUserList"
parameterType=
"WaterUser"
resultMap=
"WaterUserResult"
>
<include
refid=
"selectWaterUserVo"
/>
<include
refid=
"selectWaterUserVo"
/>
<where>
<where>
status != 1
<if
test=
"nickName != null and nickName != ''"
>
and nick_name like concat('%', #{nickName}, '%')
</if>
<if
test=
"nickName != null and nickName != ''"
>
and nick_name like concat('%', #{nickName}, '%')
</if>
<if
test=
"phoneNum != null "
>
and phone_num = #{phoneNum}
</if>
<if
test=
"phoneNum != null "
>
and phone_num = #{phoneNum}
</if>
<if
test=
"stationName != null and stationName != ''"
>
and station_name like concat('%', #{stationName}, '%')
</if>
<if
test=
"stationName != null and stationName != ''"
>
and station_name like concat('%', #{stationName}, '%')
</if>
...
@@ -32,12 +33,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
...
@@ -32,12 +33,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if
test=
"openId != null and openId != ''"
>
and open_id = #{openId}
</if>
<if
test=
"openId != null and openId != ''"
>
and open_id = #{openId}
</if>
</where>
</where>
</select>
</select>
<select
id=
"selectWaterUserById"
parameterType=
"Long"
resultMap=
"WaterUserResult"
>
<select
id=
"selectWaterUserById"
parameterType=
"Long"
resultMap=
"WaterUserResult"
>
<include
refid=
"selectWaterUserVo"
/>
<include
refid=
"selectWaterUserVo"
/>
where id = #{id}
where id = #{id}
</select>
</select>
<select
id=
"selectUserByOpenId"
parameterType=
"String"
resultMap=
"WaterUserResult"
>
<include
refid=
"selectWaterUserVo"
/>
where open_id = #{openId}
</select>
<insert
id=
"insertWaterUser"
parameterType=
"WaterUser"
useGeneratedKeys=
"true"
keyProperty=
"id"
>
<insert
id=
"insertWaterUser"
parameterType=
"WaterUser"
useGeneratedKeys=
"true"
keyProperty=
"id"
>
insert into water_user
insert into water_user
<trim
prefix=
"("
suffix=
")"
suffixOverrides=
","
>
<trim
prefix=
"("
suffix=
")"
suffixOverrides=
","
>
...
@@ -77,14 +83,36 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
...
@@ -77,14 +83,36 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where id = #{id}
where id = #{id}
</update>
</update>
<update
id=
"updateUserByOpenId"
parameterType=
"WaterUser"
>
update water_user
<trim
prefix=
"SET"
suffixOverrides=
","
>
<if
test=
"nickName != null"
>
nick_name = #{nickName},
</if>
<if
test=
"phoneNum != null"
>
phone_num = #{phoneNum},
</if>
<if
test=
"stationName != null"
>
station_name = #{stationName},
</if>
<if
test=
"userType != null"
>
user_type = #{userType},
</if>
<if
test=
"userGender != null"
>
user_gender = #{userGender},
</if>
<if
test=
"createTime != null"
>
create_time = #{createTime},
</if>
<if
test=
"status != null"
>
status = #{status},
</if>
</trim>
where open_id = #{openId}
</update>
<delete
id=
"deleteWaterUserById"
parameterType=
"Long"
>
<delete
id=
"deleteWaterUserById"
parameterType=
"Long"
>
delete from water_user where id = #{id}
delete from water_user where id = #{id}
</delete>
</delete>
<delete
id=
"deleteWaterUserByIds"
parameterType=
"String"
>
<update
id=
"deleteWaterUserByIds"
parameterType=
"String"
>
delete from water_user where id in
update water_user set status = '1' where id in
<foreach
item=
"id"
collection=
"array"
open=
"("
separator=
","
close=
")"
>
#{id}
</foreach>
</update>
<delete
id=
"deleteWaterUserAddressByIds"
parameterType=
"String"
>
delete from water_user_address where water_user_id in
<foreach
item=
"id"
collection=
"array"
open=
"("
separator=
","
close=
")"
>
<foreach
item=
"id"
collection=
"array"
open=
"("
separator=
","
close=
")"
>
#{id}
#{id}
</foreach>
</foreach>
</delete>
</delete>
</mapper>
\ No newline at end of file
</mapper>
qianhe-common/pom.xml
View file @
b548905e
...
@@ -126,6 +126,11 @@
...
@@ -126,6 +126,11 @@
<artifactId>
javax.servlet-api
</artifactId>
<artifactId>
javax.servlet-api
</artifactId>
</dependency>
</dependency>
<dependency>
<groupId>
org.projectlombok
</groupId>
<artifactId>
lombok
</artifactId>
</dependency>
</dependencies>
</dependencies>
</project>
</project>
qianhe-common/src/main/java/com/qianhe/common/core/domain/model/MpLoginUser.java
0 → 100644
View file @
b548905e
package
com
.
qianhe
.
common
.
core
.
domain
.
model
;
import
lombok.Data
;
import
java.util.Set
;
@Data
public
class
MpLoginUser
{
/**
* 登录类型
*/
String
type
;
/**
* openId
*/
String
openId
;
/**
* 用户昵称
*/
String
nickName
;
/**
* 电话号码
*/
Long
phone
;
/**
* 是否为新用户(1是,0否)
*/
String
isNewUser
;
/**
* 用户唯一标识
*/
private
String
mpToken
;
/**
* 过期时间
*/
private
Long
expireTime
;
/**
* 登录时间
*/
private
Long
loginTime
;
/**
* 登录IP地址
*/
private
String
ipaddr
;
/**
* 登录地点
*/
private
String
loginLocation
;
/**
* 浏览器类型
*/
private
String
browser
;
/**
* 操作系统
*/
private
String
os
;
private
Long
userId
;
/*
头像
*/
private
String
avatar
;
/**
* 角色权限
*/
private
Set
<
String
>
roles
;
}
qianhe-common/src/main/java/com/qianhe/common/core/domain/model/WxLoginBody.java
0 → 100644
View file @
b548905e
package
com
.
qianhe
.
common
.
core
.
domain
.
model
;
import
lombok.Data
;
@Data
public
class
WxLoginBody
{
/**
* 登录类型
*/
String
userType
;
/**
* openId
*/
String
openId
;
/**
* 用户昵称
*/
String
nickName
;
/** 用户头像 */
private
String
avatar
;
/**
* 用户电话
*/
String
phone
;
}
qianhe-framework/src/main/java/com/qianhe/framework/config/SecurityConfig.java
View file @
b548905e
...
@@ -112,6 +112,10 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
...
@@ -112,6 +112,10 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
.
authorizeRequests
()
.
authorizeRequests
()
// 对于登录login 注册register 验证码captchaImage 允许匿名访问
// 对于登录login 注册register 验证码captchaImage 允许匿名访问
.
antMatchers
(
"/login"
,
"/register"
,
"/captchaImage"
).
permitAll
()
.
antMatchers
(
"/login"
,
"/register"
,
"/captchaImage"
).
permitAll
()
//放行微信小程序相关接口
.
antMatchers
(
"/wx/getWxLoginInfo/**"
,
"/wx/login/**"
,
"/wx/getPhoneNumber/**"
,
"/wx/getUserInfo"
,
"/wx/updateUser"
).
permitAll
()
//测试放行所有接口
.
antMatchers
(
"/system/**"
).
permitAll
()
// 静态资源,可匿名访问
// 静态资源,可匿名访问
.
antMatchers
(
HttpMethod
.
GET
,
"/"
,
"/*.html"
,
"/**/*.html"
,
"/**/*.css"
,
"/**/*.js"
,
"/profile/**"
).
permitAll
()
.
antMatchers
(
HttpMethod
.
GET
,
"/"
,
"/*.html"
,
"/**/*.html"
,
"/**/*.css"
,
"/**/*.js"
,
"/profile/**"
).
permitAll
()
.
antMatchers
(
"/swagger-ui.html"
,
"/swagger-resources/**"
,
"/webjars/**"
,
"/*/api-docs"
,
"/druid/**"
).
permitAll
()
.
antMatchers
(
"/swagger-ui.html"
,
"/swagger-resources/**"
,
"/webjars/**"
,
"/*/api-docs"
,
"/druid/**"
).
permitAll
()
...
...
qianhe-framework/src/main/java/com/qianhe/framework/security/filter/JwtAuthenticationTokenFilter.java
View file @
b548905e
...
@@ -5,6 +5,10 @@ import javax.servlet.FilterChain;
...
@@ -5,6 +5,10 @@ import javax.servlet.FilterChain;
import
javax.servlet.ServletException
;
import
javax.servlet.ServletException
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.servlet.http.HttpServletResponse
;
import
com.qianhe.common.core.domain.model.MpLoginUser
;
import
com.qianhe.framework.util.UserInfoUtil
;
import
com.qianhe.framework.web.service.MpTokenService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.security.authentication.UsernamePasswordAuthenticationToken
;
import
org.springframework.security.authentication.UsernamePasswordAuthenticationToken
;
import
org.springframework.security.core.context.SecurityContextHolder
;
import
org.springframework.security.core.context.SecurityContextHolder
;
...
@@ -27,10 +31,30 @@ public class JwtAuthenticationTokenFilter extends OncePerRequestFilter
...
@@ -27,10 +31,30 @@ public class JwtAuthenticationTokenFilter extends OncePerRequestFilter
@Autowired
@Autowired
private
TokenService
tokenService
;
private
TokenService
tokenService
;
@Autowired
private
MpTokenService
mpTokenService
;
@Autowired
UserInfoUtil
userInfoUtil
;
@Override
@Override
protected
void
doFilterInternal
(
HttpServletRequest
request
,
HttpServletResponse
response
,
FilterChain
chain
)
protected
void
doFilterInternal
(
HttpServletRequest
request
,
HttpServletResponse
response
,
FilterChain
chain
)
throws
ServletException
,
IOException
throws
ServletException
,
IOException
{
{
//小程序登录
String
mpToken
=
mpTokenService
.
getToken
(
request
);
if
(
StringUtils
.
isNotEmpty
(
mpToken
))
{
MpLoginUser
mpLoginUser
=
mpTokenService
.
getMpLoginUser
(
mpToken
);
userInfoUtil
.
setMpLoginUser
(
mpLoginUser
);
if
(
StringUtils
.
isNotNull
(
mpLoginUser
))
{
mpTokenService
.
verifyToken
(
mpLoginUser
);
UsernamePasswordAuthenticationToken
authenticationToken
=
new
UsernamePasswordAuthenticationToken
(
mpLoginUser
,
null
,
null
);
authenticationToken
.
setDetails
(
new
WebAuthenticationDetailsSource
().
buildDetails
(
request
));
SecurityContextHolder
.
getContext
().
setAuthentication
(
authenticationToken
);
}
}
//PC端登录
LoginUser
loginUser
=
tokenService
.
getLoginUser
(
request
);
LoginUser
loginUser
=
tokenService
.
getLoginUser
(
request
);
if
(
StringUtils
.
isNotNull
(
loginUser
)
&&
StringUtils
.
isNull
(
SecurityUtils
.
getAuthentication
()))
if
(
StringUtils
.
isNotNull
(
loginUser
)
&&
StringUtils
.
isNull
(
SecurityUtils
.
getAuthentication
()))
{
{
...
...
qianhe-framework/src/main/java/com/qianhe/framework/util/UserInfoUtil.java
0 → 100644
View file @
b548905e
package
com
.
qianhe
.
framework
.
util
;
import
com.qianhe.common.core.domain.model.MpLoginUser
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.stereotype.Component
;
@Component
public
class
UserInfoUtil
{
MpLoginUser
mpLoginUser
;
private
Logger
log
=
LoggerFactory
.
getLogger
(
UserInfoUtil
.
class
);
public
MpLoginUser
getMpLoginUser
()
{
return
mpLoginUser
;
}
public
void
setMpLoginUser
(
MpLoginUser
mpLoginUser
)
{
this
.
mpLoginUser
=
mpLoginUser
;
}
public
String
getOpenId
(){
return
mpLoginUser
.
getOpenId
();
}
public
Long
getUseId
(){
return
mpLoginUser
.
getUserId
();
}
public
void
setUserId
(
Long
userId
){
mpLoginUser
.
setUserId
(
userId
);
}
public
Long
getPhone
(){
return
mpLoginUser
.
getPhone
();
}
public
String
getAvatar
(){
return
mpLoginUser
.
getAvatar
();
}
}
qianhe-framework/src/main/java/com/qianhe/framework/web/service/MpTokenService.java
0 → 100644
View file @
b548905e
package
com
.
qianhe
.
framework
.
web
.
service
;
import
com.qianhe.common.core.domain.model.MpLoginUser
;
import
com.qianhe.common.core.redis.RedisCache
;
import
com.qianhe.common.utils.ServletUtils
;
import
com.qianhe.common.utils.StringUtils
;
import
com.qianhe.common.utils.ip.AddressUtils
;
import
com.qianhe.common.utils.ip.IpUtils
;
import
com.qianhe.common.utils.uuid.IdUtils
;
import
eu.bitwalker.useragentutils.UserAgent
;
import
io.jsonwebtoken.Claims
;
import
io.jsonwebtoken.Jwts
;
import
io.jsonwebtoken.SignatureAlgorithm
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Component
;
import
javax.servlet.http.HttpServletRequest
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.concurrent.TimeUnit
;
/**
* token验证处理
*
* @author ruoyi
*/
@Component
public
class
MpTokenService
{
// 令牌自定义标识
@Value
(
"${token.header}"
)
private
String
header
;
// 令牌秘钥
@Value
(
"${token.secret}"
)
private
String
secret
;
// 令牌有效期(默认30分钟)
@Value
(
"${token.expireTime}"
)
private
int
expireTime
;
protected
static
final
long
MILLIS_SECOND
=
1000
;
protected
static
final
long
MILLIS_MINUTE
=
60
*
MILLIS_SECOND
;
private
static
final
Long
MILLIS_MINUTE_TEN
=
20
*
60
*
1000L
;
private
static
final
String
MP_PREFIX
=
"Bearer "
;
@Autowired
private
RedisCache
redisCache
;
/**
* 获取用户身份信息
*
* @return 用户信息
*/
public
MpLoginUser
getMpLoginUser
(
String
token
)
{
// 获取请求携带的令牌
if
(
StringUtils
.
isNotEmpty
(
token
))
{
try
{
Claims
claims
=
parseToken
(
token
);
// 解析对应的权限以及用户信息
String
uuid
=
(
String
)
claims
.
get
(
MP_PREFIX
);
String
userKey
=
getTokenKey
(
uuid
);
MpLoginUser
user
=
redisCache
.
getCacheObject
(
userKey
);
return
user
;
}
catch
(
Exception
e
)
{
}
}
return
null
;
}
/**
* 设置用户身份信息
*/
public
void
setMpLoginUser
(
MpLoginUser
mpLoginUser
)
{
if
(
StringUtils
.
isNotNull
(
mpLoginUser
)
&&
StringUtils
.
isNotEmpty
(
mpLoginUser
.
getMpToken
()))
{
refreshToken
(
mpLoginUser
);
}
}
/**
* 删除用户身份信息
*/
public
void
delMpLoginUser
(
String
token
)
{
if
(
StringUtils
.
isNotEmpty
(
token
))
{
// Claims claims = parseToken(token);
// String uuid = (String) claims.get(MP_PREFIX);
String
userKey
=
getTokenKey
(
token
);
redisCache
.
deleteObject
(
userKey
);
}
}
/**
* 创建令牌
*
* @param mpLoginUser 微信用户信息
* @return 令牌
*/
public
String
createToken
(
MpLoginUser
mpLoginUser
)
{
String
mpToken
=
IdUtils
.
fastUUID
();
mpLoginUser
.
setMpToken
(
mpToken
);
setUserAgent
(
mpLoginUser
);
refreshToken
(
mpLoginUser
);
Map
<
String
,
Object
>
claims
=
new
HashMap
<>();
claims
.
put
(
MP_PREFIX
,
mpToken
);
return
createToken
(
claims
);
}
/**
* 验证令牌有效期,相差不足20分钟,自动刷新缓存
*
* @param mpLoginUser
* @return 令牌
*/
public
void
verifyToken
(
MpLoginUser
mpLoginUser
)
{
long
expireTime
=
mpLoginUser
.
getExpireTime
();
long
currentTime
=
System
.
currentTimeMillis
();
if
(
expireTime
-
currentTime
<=
MILLIS_MINUTE_TEN
)
{
refreshToken
(
mpLoginUser
);
}
}
/**
* 刷新令牌有效期
*
* @param mpLoginUser 登录信息
*/
public
void
refreshToken
(
MpLoginUser
mpLoginUser
)
{
mpLoginUser
.
setLoginTime
(
System
.
currentTimeMillis
());
mpLoginUser
.
setExpireTime
(
mpLoginUser
.
getLoginTime
()
+
expireTime
*
MILLIS_MINUTE
);
// 根据uuid将loginUser缓存
String
userKey
=
getTokenKey
(
mpLoginUser
.
getMpToken
());
redisCache
.
setCacheObject
(
userKey
,
mpLoginUser
,
expireTime
,
TimeUnit
.
MINUTES
);
}
/**
* 设置用户代理信息
*
* @param mpLoginUser 登录信息
*/
public
void
setUserAgent
(
MpLoginUser
mpLoginUser
)
{
UserAgent
userAgent
=
UserAgent
.
parseUserAgentString
(
ServletUtils
.
getRequest
().
getHeader
(
"User-Agent"
));
String
ip
=
IpUtils
.
getIpAddr
(
ServletUtils
.
getRequest
());
mpLoginUser
.
setIpaddr
(
ip
);
mpLoginUser
.
setLoginLocation
(
AddressUtils
.
getRealAddressByIP
(
ip
));
mpLoginUser
.
setBrowser
(
userAgent
.
getBrowser
().
getName
());
mpLoginUser
.
setOs
(
userAgent
.
getOperatingSystem
().
getName
());
}
/**
* 从数据声明生成令牌
*
* @param claims 数据声明
* @return 令牌
*/
private
String
createToken
(
Map
<
String
,
Object
>
claims
)
{
String
token
=
Jwts
.
builder
()
.
setClaims
(
claims
)
.
signWith
(
SignatureAlgorithm
.
HS512
,
secret
).
compact
();
return
token
;
}
/**
* 从令牌中获取数据声明
*
* @param token 令牌
* @return 数据声明
*/
private
Claims
parseToken
(
String
token
)
{
return
Jwts
.
parser
()
.
setSigningKey
(
secret
)
.
parseClaimsJws
(
token
)
.
getBody
();
}
/**
* 从令牌中获取用户名
*
* @param token 令牌
* @return 用户名
*/
public
String
getUsernameFromToken
(
String
token
)
{
Claims
claims
=
parseToken
(
token
);
return
claims
.
getSubject
();
}
/**
* 获取请求token
*
* @param request
* @return token
*/
public
String
getToken
(
HttpServletRequest
request
)
{
String
token
=
request
.
getHeader
(
header
);
if
(
StringUtils
.
isNotEmpty
(
token
)
&&
token
.
startsWith
(
MP_PREFIX
))
{
return
token
.
replace
(
MP_PREFIX
,
""
);
}
return
null
;
}
private
String
getTokenKey
(
String
uuid
)
{
return
"mp_token:"
+
uuid
;
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment