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
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
44 changed files
with
1029 additions
and
265 deletions
+1029
-265
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
+2
-1
qianhe-admin/src/main/java/com/qianhe/system/mapper/WaterUserMapper.java
+25
-1
qianhe-admin/src/main/java/com/qianhe/system/service/IWaterUserAddressService.java
+2
-1
qianhe-admin/src/main/java/com/qianhe/system/service/IWaterUserService.java
+19
-2
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
+0
-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
+30
-2
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
;
...
@@ -10,7 +11,7 @@ import java.util.List;
...
@@ -10,7 +11,7 @@ import java.util.List;
* @author qianhe
* @author qianhe
* @date 2023-11-23
* @date 2023-11-23
*/
*/
public
interface
WaterUserAddressMapper
public
interface
WaterUserAddressMapper
extends
BaseMapper
<
WaterUserAddress
>
{
{
/**
/**
* 查询用户地址
* 查询用户地址
...
...
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
;
...
@@ -10,7 +12,7 @@ import java.util.List;
...
@@ -10,7 +12,7 @@ import java.util.List;
* @author qianhe
* @author qianhe
* @date 2023-11-23
* @date 2023-11-23
*/
*/
public
interface
WaterUserMapper
public
interface
WaterUserMapper
extends
BaseMapper
<
WaterUser
>
{
{
/**
/**
* 查询用户
* 查询用户
...
@@ -59,4 +61,26 @@ public interface WaterUserMapper
...
@@ -59,4 +61,26 @@ public interface WaterUserMapper
* @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
;
...
@@ -10,7 +11,7 @@ import java.util.List;
...
@@ -10,7 +11,7 @@ import java.util.List;
* @author qianhe
* @author qianhe
* @date 2023-11-23
* @date 2023-11-23
*/
*/
public
interface
IWaterUserAddressService
public
interface
IWaterUserAddressService
extends
IService
<
WaterUserAddress
>
{
{
/**
/**
* 查询用户地址
* 查询用户地址
...
...
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
;
...
@@ -10,7 +13,7 @@ import java.util.List;
...
@@ -10,7 +13,7 @@ import java.util.List;
* @author qianhe
* @author qianhe
* @date 2023-11-23
* @date 2023-11-23
*/
*/
public
interface
IWaterUserService
public
interface
IWaterUserService
extends
IService
<
WaterUser
>
{
{
/**
/**
* 查询用户
* 查询用户
...
@@ -18,7 +21,7 @@ public interface IWaterUserService
...
@@ -18,7 +21,7 @@ public interface IWaterUserService
* @param id 用户主键
* @param id 用户主键
* @return 用户
* @return 用户
*/
*/
public
WaterUser
selectWaterUserById
(
Long
id
);
public
WaterUser
Vo
selectWaterUserById
(
Long
id
);
/**
/**
* 查询用户列表
* 查询用户列表
...
@@ -59,4 +62,18 @@ public interface IWaterUserService
...
@@ -59,4 +62,18 @@ public interface IWaterUserService
* @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
This diff is collapsed.
Click to expand it.
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
...
@@ -23,6 +23,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
...
@@ -23,6 +23,7 @@ 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>
...
@@ -38,6 +39,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
...
@@ -38,6 +39,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
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>
</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