Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
P
promotion-service
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
promotion
promotion-service
Commits
7a191ff3
提交
7a191ff3
authored
4月 16, 2024
作者:
李秋林
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
暂存代码
上级
71bacad6
显示空白字符变更
内嵌
并排
正在显示
26 个修改的文件
包含
322 行增加
和
125 行删除
+322
-125
pom.xml
pom.xml
+7
-0
RedisKeys.java
...java/com/wangxiaolu/promotion/common/redis/RedisKeys.java
+5
-1
RedisCache.java
...wangxiaolu/promotion/common/redis/service/RedisCache.java
+8
-0
ControllerLogAspect.java
...angxiaolu/promotion/config/aspet/ControllerLogAspect.java
+7
-0
ConsoleDataQueryController.java
...ion/controller/tengxunyun/ConsoleDataQueryController.java
+0
-20
TencentCoreController.java
...romotion/controller/tengxunyun/TencentCoreController.java
+3
-3
WeChatUserCoreController.java
...promotion/controller/wechat/WeChatUserCoreController.java
+9
-8
WeChatUserQueryController.java
...romotion/controller/wechat/WeChatUserQueryController.java
+22
-21
TemporaryInfoDao.java
...angxiaolu/promotion/domain/user/dao/TemporaryInfoDao.java
+5
-1
TemporaryInfoDaoImpl.java
.../promotion/domain/user/dao/impl/TemporaryInfoDaoImpl.java
+25
-7
TemporaryWrapper.java
...iaolu/promotion/domain/user/wrapper/TemporaryWrapper.java
+4
-0
WxTemporaryInfoDto.java
...angxiaolu/promotion/pojo/user/dto/WxTemporaryInfoDto.java
+5
-0
WxTemporaryEnrollVo.java
...angxiaolu/promotion/pojo/user/vo/WxTemporaryEnrollVo.java
+21
-18
WxTemporaryLoginVo.java
...wangxiaolu/promotion/pojo/user/vo/WxTemporaryLoginVo.java
+25
-0
ControllerExceptionAdvice.java
...lu/promotion/result/advice/ControllerExceptionAdvice.java
+20
-4
RCode.java
.../java/com/wangxiaolu/promotion/result/basedata/RCode.java
+2
-0
TencentCoreService.java
...wangxiaolu/promotion/service/user/TencentCoreService.java
+1
-1
TencentCoreServiceImpl.java
...u/promotion/service/user/impl/TencentCoreServiceImpl.java
+2
-2
WeChatUserCoreService.java
...iaolu/promotion/service/wechat/WeChatUserCoreService.java
+0
-1
WeChatUserQueryService.java
...aolu/promotion/service/wechat/WeChatUserQueryService.java
+3
-2
WeChatUserCoreServiceImpl.java
...motion/service/wechat/impl/WeChatUserCoreServiceImpl.java
+0
-4
WeChatUserQueryServiceImpl.java
...otion/service/wechat/impl/WeChatUserQueryServiceImpl.java
+30
-19
JwtUtils.java
src/main/java/com/wangxiaolu/promotion/utils/JwtUtils.java
+68
-0
application.yml
src/main/resources/application.yml
+12
-6
WeChatUserCoreControllerTest.java
...otion/controller/wechat/WeChatUserCoreControllerTest.java
+2
-7
WeChatUserQueryControllerTest.java
...tion/controller/wechat/WeChatUserQueryControllerTest.java
+36
-0
没有找到文件。
pom.xml
浏览文件 @
7a191ff3
...
@@ -155,6 +155,13 @@
...
@@ -155,6 +155,13 @@
<artifactId>
jedis
</artifactId>
<artifactId>
jedis
</artifactId>
</dependency>
</dependency>
<!-- https://mvnrepository.com/artifact/com.auth0/java-jwt -->
<dependency>
<groupId>
com.auth0
</groupId>
<artifactId>
java-jwt
</artifactId>
<version>
4.4.0
</version>
</dependency>
</dependencies>
</dependencies>
<build>
<build>
...
...
src/main/java/com/wangxiaolu/promotion/common/redis/RedisKeys.java
浏览文件 @
7a191ff3
...
@@ -11,7 +11,11 @@ public interface RedisKeys {
...
@@ -11,7 +11,11 @@ public interface RedisKeys {
/**
/**
* 用户接收手机验证码
* 用户接收手机验证码
*/
*/
PHONE_VER_CODE
(
"user:phone_"
),
PHONE_VER_CODE
(
"user:phone_code:phone_"
),
/**
* 用户登录信息:token
*/
TEMPORARY_TOKEN
(
"user:login_token:temporary:"
),
;
;
String
key
;
String
key
;
...
...
src/main/java/com/wangxiaolu/promotion/common/redis/service/RedisCache.java
浏览文件 @
7a191ff3
...
@@ -46,6 +46,14 @@ public class RedisCache {
...
@@ -46,6 +46,14 @@ public class RedisCache {
vo
.
set
(
key
,
valToJson
(
val
),
time
,
TimeUnit
.
MINUTES
);
vo
.
set
(
key
,
valToJson
(
val
),
time
,
TimeUnit
.
MINUTES
);
}
}
/**
* 保存一个值,并将val json化,设置过期时间(天)
*/
public
void
addToJsonToDays
(
String
key
,
Object
val
,
long
days
)
{
ValueOperations
<
String
,
String
>
vo
=
redisTemplate
.
opsForValue
();
vo
.
set
(
key
,
valToJson
(
val
),
days
,
TimeUnit
.
DAYS
);
}
/**
/**
* 获取一个值
* 获取一个值
*/
*/
...
...
src/main/java/com/wangxiaolu/promotion/config/aspet/ControllerLogAspect.java
浏览文件 @
7a191ff3
...
@@ -38,6 +38,13 @@ public class ControllerLogAspect {
...
@@ -38,6 +38,13 @@ public class ControllerLogAspect {
ServletRequestAttributes
sra
=
(
ServletRequestAttributes
)
RequestContextHolder
.
getRequestAttributes
();
ServletRequestAttributes
sra
=
(
ServletRequestAttributes
)
RequestContextHolder
.
getRequestAttributes
();
HttpServletRequest
request
=
sra
.
getRequest
();
HttpServletRequest
request
=
sra
.
getRequest
();
/**
* 暂时使用这个判断是否登录
*/
String
accessToken
=
request
.
getHeader
(
"access_token"
);
// Signature signature = joinPoint.getSignature();
// Signature signature = joinPoint.getSignature();
// String name = signature.getName();
// String name = signature.getName();
...
...
src/main/java/com/wangxiaolu/promotion/controller/tengxunyun/ConsoleDataQueryController.java
deleted
100644 → 0
浏览文件 @
71bacad6
package
com
.
wangxiaolu
.
promotion
.
controller
.
tengxunyun
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* @author : liqiulin
* @date : 2024-04-15 14
* @describe : 验证、控制相关数据接口
*/
@Slf4j
@RestController
@RequestMapping
(
"/console/query"
)
public
class
ConsoleDataQueryController
{
/**
* 查询验证码
*/
}
src/main/java/com/wangxiaolu/promotion/controller/tengxunyun/TencentCoreController.java
浏览文件 @
7a191ff3
...
@@ -22,7 +22,7 @@ import java.util.Map;
...
@@ -22,7 +22,7 @@ import java.util.Map;
*/
*/
@Slf4j
@Slf4j
@RestController
@RestController
@RequestMapping
(
"/tencent
/core
"
)
@RequestMapping
(
"/tencent"
)
public
class
TencentCoreController
{
public
class
TencentCoreController
{
@Autowired
@Autowired
...
@@ -31,13 +31,13 @@ public class TencentCoreController {
...
@@ -31,13 +31,13 @@ public class TencentCoreController {
/**
/**
* 腾讯云短信
* 腾讯云短信
*/
*/
@PostMapping
(
"/send/sms"
)
@PostMapping
(
"/send/sms
/ver_code
"
)
public
void
sendSms
(
@RequestBody
Map
<
String
,
String
>
phoneInfo
)
{
public
void
sendSms
(
@RequestBody
Map
<
String
,
String
>
phoneInfo
)
{
String
phone
=
phoneInfo
.
get
(
"phone"
);
String
phone
=
phoneInfo
.
get
(
"phone"
);
if
(
StringUtils
.
isEmpty
(
phone
)
||
!
DataUtils
.
phonePattern
(
phone
))
{
if
(
StringUtils
.
isEmpty
(
phone
)
||
!
DataUtils
.
phonePattern
(
phone
))
{
throw
new
ParamException
(
RCode
.
PHONE_PARAM_ERROR
,
null
);
throw
new
ParamException
(
RCode
.
PHONE_PARAM_ERROR
,
null
);
}
}
tencentCoreService
.
sendSmsPhoneVerC
O
de
(
phone
);
tencentCoreService
.
sendSmsPhoneVerC
o
de
(
phone
);
}
}
...
...
src/main/java/com/wangxiaolu/promotion/controller/wechat/WeChatUserCoreController.java
浏览文件 @
7a191ff3
...
@@ -5,7 +5,7 @@ import com.wangxiaolu.promotion.common.redis.RedisKeys;
...
@@ -5,7 +5,7 @@ import com.wangxiaolu.promotion.common.redis.RedisKeys;
import
com.wangxiaolu.promotion.common.redis.service.RedisCache
;
import
com.wangxiaolu.promotion.common.redis.service.RedisCache
;
import
com.wangxiaolu.promotion.exception.ParamException
;
import
com.wangxiaolu.promotion.exception.ParamException
;
import
com.wangxiaolu.promotion.pojo.user.dto.WxTemporaryInfoDto
;
import
com.wangxiaolu.promotion.pojo.user.dto.WxTemporaryInfoDto
;
import
com.wangxiaolu.promotion.pojo.user.vo.Wx
JsUserInfo
Vo
;
import
com.wangxiaolu.promotion.pojo.user.vo.Wx
TemporaryEnroll
Vo
;
import
com.wangxiaolu.promotion.result.basedata.RCode
;
import
com.wangxiaolu.promotion.result.basedata.RCode
;
import
com.wangxiaolu.promotion.service.wechat.WeChatUserCoreService
;
import
com.wangxiaolu.promotion.service.wechat.WeChatUserCoreService
;
import
com.wangxiaolu.promotion.utils.DataUtils
;
import
com.wangxiaolu.promotion.utils.DataUtils
;
...
@@ -38,24 +38,25 @@ public class WeChatUserCoreController {
...
@@ -38,24 +38,25 @@ public class WeChatUserCoreController {
* 促销员注册信息
* 促销员注册信息
*/
*/
@PostMapping
(
"/temporary/enroll"
)
@PostMapping
(
"/temporary/enroll"
)
public
boolean
enrollUserInfo
(
@RequestBody
@Validated
Wx
JsUserInfoVo
wxJsUserInfo
Vo
)
{
public
boolean
enrollUserInfo
(
@RequestBody
@Validated
Wx
TemporaryEnrollVo
wxTemporaryEnroll
Vo
)
{
log
.
info
(
"微信-促销员注册:{}"
,
JSONObject
.
toJSONString
(
wx
JsUserInfo
Vo
));
log
.
info
(
"微信-促销员注册:{}"
,
JSONObject
.
toJSONString
(
wx
TemporaryEnroll
Vo
));
// 人员信息校验
// 人员信息校验
boolean
isIden
=
DataUtils
.
idenCardPattern
(
wx
JsUserInfo
Vo
.
getIdenNumber
());
boolean
isIden
=
DataUtils
.
idenCardPattern
(
wx
TemporaryEnroll
Vo
.
getIdenNumber
());
boolean
isPhone
=
DataUtils
.
phonePattern
(
wx
JsUserInfo
Vo
.
getPhone
());
boolean
isPhone
=
DataUtils
.
phonePattern
(
wx
TemporaryEnroll
Vo
.
getPhone
());
if
(!
isIden
||
!
isPhone
)
{
if
(!
isIden
||
!
isPhone
)
{
throw
new
ParamException
(
RCode
.
ENROLL_PARAM_ERROR
,
null
);
throw
new
ParamException
(
RCode
.
ENROLL_PARAM_ERROR
,
null
);
}
}
// 手机号-验证码 校验
// 手机号-验证码 校验
String
redisKey
=
RedisKeys
.
UserKeys
.
PHONE_VER_CODE
.
getKey
()
+
wx
JsUserInfo
Vo
.
getPhone
();
String
redisKey
=
RedisKeys
.
UserKeys
.
PHONE_VER_CODE
.
getKey
()
+
wx
TemporaryEnroll
Vo
.
getPhone
();
String
phoneCodeOld
=
redisCache
.
get
(
redisKey
);
String
phoneCodeOld
=
redisCache
.
get
(
redisKey
);
if
(
StringUtils
.
isBlank
(
phoneCodeOld
)
||
!
phoneCodeOld
.
equals
(
wx
JsUserInfo
Vo
.
getPhoneCode
())){
if
(
StringUtils
.
isBlank
(
phoneCodeOld
)
||
!
phoneCodeOld
.
equals
(
wx
TemporaryEnroll
Vo
.
getPhoneCode
())){
throw
new
ParamException
(
RCode
.
TENCENT_SMS_PHONE_CODE_ERROR
,
null
);
throw
new
ParamException
(
RCode
.
TENCENT_SMS_PHONE_CODE_ERROR
,
null
);
}
}
redisCache
.
removeKey
(
redisKey
);
WxTemporaryInfoDto
temporaryDto
=
new
WxTemporaryInfoDto
();
WxTemporaryInfoDto
temporaryDto
=
new
WxTemporaryInfoDto
();
BeanUtils
.
copyProperties
(
wx
JsUserInfo
Vo
,
temporaryDto
);
BeanUtils
.
copyProperties
(
wx
TemporaryEnroll
Vo
,
temporaryDto
);
return
weChatUserCoreService
.
saveWxUserInfoTemporary
(
temporaryDto
);
return
weChatUserCoreService
.
saveWxUserInfoTemporary
(
temporaryDto
);
}
}
...
...
src/main/java/com/wangxiaolu/promotion/controller/wechat/WeChatUserQueryController.java
浏览文件 @
7a191ff3
package
com
.
wangxiaolu
.
promotion
.
controller
.
wechat
;
package
com
.
wangxiaolu
.
promotion
.
controller
.
wechat
;
import
com.wangxiaolu.promotion.exception.ParamException
;
import
com.wangxiaolu.promotion.pojo.user.dto.WxTemporaryInfoDto
;
import
com.wangxiaolu.promotion.pojo.user.dto.WxTemporaryInfoDto
;
import
com.wangxiaolu.promotion.pojo.user.vo.WxTemporaryLoginVo
;
import
com.wangxiaolu.promotion.result.basedata.RCode
;
import
com.wangxiaolu.promotion.service.wechat.WeChatUserQueryService
;
import
com.wangxiaolu.promotion.service.wechat.WeChatUserQueryService
;
import
com.wangxiaolu.promotion.utils.
WxM
aUtils
;
import
com.wangxiaolu.promotion.utils.
Dat
aUtils
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
me.chanjar.weixin.common.error.WxErrorException
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.servlet.http.HttpServletRequest
;
import
java.util.Objects
;
/**
/**
* @author : liqiulin
* @author : liqiulin
...
@@ -19,36 +22,34 @@ import org.springframework.web.bind.annotation.RestController;
...
@@ -19,36 +22,34 @@ import org.springframework.web.bind.annotation.RestController;
@RestController
@RestController
@RequestMapping
(
"/user/wechat/query"
)
@RequestMapping
(
"/user/wechat/query"
)
public
class
WeChatUserQueryController
{
public
class
WeChatUserQueryController
{
@Autowired
private
WxMaUtils
wxMaUtils
;
@Autowired
@Autowired
private
WeChatUserQueryService
weChatUserQueryService
;
private
WeChatUserQueryService
weChatUserQueryService
;
/**
/**
*
接收wx临时登录凭证code,查询openid是否已注册
*
根据OpenId、Phone登录(促销员查询是否存在)
*
促销员查询
*
@return 非null则登录成功
*/
*/
@GetMapping
(
"/temporary/login"
)
@PostMapping
(
"/temporary/login/phone_openid"
)
public
boolean
temporaryLoginByOpenId
(
String
jsCode
)
{
public
WxTemporaryInfoDto
temporaryLoginByPhoneAndOpenId
(
@RequestBody
WxTemporaryLoginVo
wxTemporaryLoginVo
)
{
String
userOpenId
=
null
;
if
(!
DataUtils
.
phonePattern
(
wxTemporaryLoginVo
.
getPhone
()))
{
try
{
throw
new
ParamException
(
RCode
.
PHONE_PARAM_ERROR
,
null
);
userOpenId
=
wxMaUtils
.
getWxOpenId
(
jsCode
);
return
weChatUserQueryService
.
loginTemporaryByOpenId
(
userOpenId
);
}
catch
(
WxErrorException
e
)
{
log
.
info
(
"微信-促销员登录无效,jsCode:{},获取openId:{}"
,
jsCode
,
userOpenId
);
}
}
return
false
;
WxTemporaryInfoDto
wxTemDto
=
weChatUserQueryService
.
loginTemporaryByOpenIdAndPhone
(
wxTemporaryLoginVo
.
getOpenId
(),
wxTemporaryLoginVo
.
getPhone
());
if
(
Objects
.
isNull
(
wxTemDto
)){
throw
new
ParamException
(
RCode
.
LOGIN_USER_IS_NULL_ERROR
,
null
);
}
return
wxTemDto
;
}
}
/**
/**
*
根据openId
查询人员详情
*
需要改成:根据token
查询人员详情
* 促销员查询
* 促销员查询
*/
*/
@GetMapping
(
"/temporary/openId"
)
@GetMapping
(
"/temporary/openId"
)
public
WxTemporaryInfoDto
getTemporaryInfoByOpenId
(
String
openId
)
{
public
WxTemporaryInfoDto
getTemporaryInfoByOpenId
(
String
openId
)
{
return
weChatUserQueryService
.
getTemporaryByOpenId
(
openId
);
return
weChatUserQueryService
.
getTemporaryByToken
(
openId
);
}
}
}
}
src/main/java/com/wangxiaolu/promotion/domain/user/dao/TemporaryInfoDao.java
浏览文件 @
7a191ff3
package
com
.
wangxiaolu
.
promotion
.
domain
.
user
.
dao
;
package
com
.
wangxiaolu
.
promotion
.
domain
.
user
.
dao
;
import
com.wangxiaolu.promotion.domain.user.mapper.entity.TemporaryInfoDO
;
import
com.wangxiaolu.promotion.pojo.user.dto.WxTemporaryInfoDto
;
import
com.wangxiaolu.promotion.pojo.user.dto.WxTemporaryInfoDto
;
/**
/**
...
@@ -19,4 +18,9 @@ public interface TemporaryInfoDao {
...
@@ -19,4 +18,9 @@ public interface TemporaryInfoDao {
* 根据OpenId查询人员是否存在(非保密信息)
* 根据OpenId查询人员是否存在(非保密信息)
*/
*/
WxTemporaryInfoDto
getUnimportantData
(
String
openId
);
WxTemporaryInfoDto
getUnimportantData
(
String
openId
);
/**
* 根据OpenId、phone查询人员是否存在(非保密信息)
*/
WxTemporaryInfoDto
getUnimportantData
(
String
openId
,
String
phone
);
}
}
src/main/java/com/wangxiaolu/promotion/domain/user/dao/impl/TemporaryInfoDaoImpl.java
浏览文件 @
7a191ff3
...
@@ -28,7 +28,7 @@ public class TemporaryInfoDaoImpl implements TemporaryInfoDao {
...
@@ -28,7 +28,7 @@ public class TemporaryInfoDaoImpl implements TemporaryInfoDao {
* 微信-小程序注册的促销员信息
* 微信-小程序注册的促销员信息
*/
*/
@Override
@Override
public
int
saveWxTemporaryInfo
(
WxTemporaryInfoDto
temporaryDto
)
{
public
int
saveWxTemporaryInfo
(
WxTemporaryInfoDto
temporaryDto
){
TemporaryInfoDO
entity
=
new
TemporaryInfoDO
();
TemporaryInfoDO
entity
=
new
TemporaryInfoDO
();
BeanUtils
.
copyProperties
(
temporaryDto
,
entity
);
BeanUtils
.
copyProperties
(
temporaryDto
,
entity
);
return
temporaryInfoMapper
.
insert
(
entity
);
return
temporaryInfoMapper
.
insert
(
entity
);
...
@@ -37,14 +37,15 @@ public class TemporaryInfoDaoImpl implements TemporaryInfoDao {
...
@@ -37,14 +37,15 @@ public class TemporaryInfoDaoImpl implements TemporaryInfoDao {
@Override
@Override
public
WxTemporaryInfoDto
getUnimportantData
(
String
openId
)
{
public
WxTemporaryInfoDto
getUnimportantData
(
String
openId
)
{
TemporaryInfoDO
temDo
=
temporaryInfoMapper
.
getUnimportantData
(
openId
);
TemporaryInfoDO
temDo
=
temporaryInfoMapper
.
getUnimportantData
(
openId
);
return
transitionDto
(
temDo
);
WxTemporaryInfoDto
temporaryDto
=
null
;
if
(!
Objects
.
isNull
(
temDo
)){
temporaryDto
=
new
WxTemporaryInfoDto
();
BeanUtils
.
copyProperties
(
temDo
,
temporaryDto
);
}
}
return
temporaryDto
;
@Override
public
WxTemporaryInfoDto
getUnimportantData
(
String
openId
,
String
phone
)
{
TemporaryWrapper
tw
=
new
TemporaryWrapper
().
setOpenId
(
openId
).
setPhone
(
phone
);
LambdaQueryWrapper
<
TemporaryInfoDO
>
doqwer
=
buildQueryList
(
tw
);
TemporaryInfoDO
temDo
=
temporaryInfoMapper
.
selectOne
(
doqwer
);
return
transitionDto
(
temDo
);
}
}
private
LambdaQueryWrapper
<
TemporaryInfoDO
>
buildQueryList
(
TemporaryWrapper
tw
){
private
LambdaQueryWrapper
<
TemporaryInfoDO
>
buildQueryList
(
TemporaryWrapper
tw
){
...
@@ -52,6 +53,23 @@ public class TemporaryInfoDaoImpl implements TemporaryInfoDao {
...
@@ -52,6 +53,23 @@ public class TemporaryInfoDaoImpl implements TemporaryInfoDao {
if
(!
StringUtils
.
isEmpty
(
tw
.
getOpenId
())){
if
(!
StringUtils
.
isEmpty
(
tw
.
getOpenId
())){
queryWrapper
.
eq
(
TemporaryInfoDO:
:
getOpenId
,
tw
.
getOpenId
());
queryWrapper
.
eq
(
TemporaryInfoDO:
:
getOpenId
,
tw
.
getOpenId
());
}
}
if
(!
StringUtils
.
isEmpty
(
tw
.
getPhone
())){
queryWrapper
.
eq
(
TemporaryInfoDO:
:
getPhone
,
tw
.
getPhone
());
}
return
queryWrapper
;
return
queryWrapper
;
}
}
/**
* DO to DTO (单个对象)
* @param temDo DO对象
* @return DTO对象
*/
private
WxTemporaryInfoDto
transitionDto
(
TemporaryInfoDO
temDo
){
WxTemporaryInfoDto
temporaryDto
=
null
;
if
(!
Objects
.
isNull
(
temDo
)){
temporaryDto
=
new
WxTemporaryInfoDto
();
BeanUtils
.
copyProperties
(
temDo
,
temporaryDto
);
}
return
temporaryDto
;
}
}
}
src/main/java/com/wangxiaolu/promotion/domain/user/wrapper/TemporaryWrapper.java
浏览文件 @
7a191ff3
...
@@ -19,5 +19,9 @@ public class TemporaryWrapper {
...
@@ -19,5 +19,9 @@ public class TemporaryWrapper {
* openId
* openId
*/
*/
String
openId
;
String
openId
;
/**
* 手机号
*/
String
phone
;
}
}
src/main/java/com/wangxiaolu/promotion/pojo/user/dto/WxTemporaryInfoDto.java
浏览文件 @
7a191ff3
...
@@ -76,4 +76,9 @@ public class WxTemporaryInfoDto {
...
@@ -76,4 +76,9 @@ public class WxTemporaryInfoDto {
* 详细地址
* 详细地址
*/
*/
String
address
;
String
address
;
/**
* 登录token
*/
String
token
;
}
}
src/main/java/com/wangxiaolu/promotion/pojo/user/vo/Wx
JsUserInfo
Vo.java
→
src/main/java/com/wangxiaolu/promotion/pojo/user/vo/Wx
TemporaryEnroll
Vo.java
浏览文件 @
7a191ff3
...
@@ -10,29 +10,13 @@ import javax.validation.constraints.NotBlank;
...
@@ -10,29 +10,13 @@ import javax.validation.constraints.NotBlank;
/**
/**
* @author : liqiulin
* @author : liqiulin
* @date : 2024-04-08 12
* @date : 2024-04-08 12
* @describe :
* @describe :
微信-促销员注册参数
*/
*/
@Data
@Data
@NoArgsConstructor
@NoArgsConstructor
@AllArgsConstructor
@AllArgsConstructor
@Accessors
(
chain
=
true
)
@Accessors
(
chain
=
true
)
public
class
WxJsUserInfoVo
{
public
class
WxTemporaryEnrollVo
{
/**
* js传过来的临时登录code
*/
// @NotBlank(message = "微信登录凭证错误")
// String jsCode;
/**
* 用户信息的加密文字
*/
// String encryptedData;
/**
* 标识
*/
// String iv;
/**
/**
* openId
* openId
*/
*/
...
@@ -104,4 +88,23 @@ public class WxJsUserInfoVo {
...
@@ -104,4 +88,23 @@ public class WxJsUserInfoVo {
*/
*/
@NotBlank
(
message
=
"验证码无效"
)
@NotBlank
(
message
=
"验证码无效"
)
String
phoneCode
;
String
phoneCode
;
// 暂时用不到的参数
/**
* js传过来的临时登录code
*/
// @NotBlank(message = "微信登录凭证错误")
// String jsCode;
/**
* 用户信息的加密文字
*/
// String encryptedData;
/**
* 标识
*/
// String iv;
}
}
src/main/java/com/wangxiaolu/promotion/pojo/user/vo/WxTemporaryLoginVo.java
0 → 100644
浏览文件 @
7a191ff3
package
com
.
wangxiaolu
.
promotion
.
pojo
.
user
.
vo
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.experimental.Accessors
;
import
javax.validation.constraints.NotBlank
;
/**
* @author : liqiulin
* @date : 2024-04-16 10
* @describe : 促销员登录
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors
(
chain
=
true
)
public
class
WxTemporaryLoginVo
{
@NotBlank
(
message
=
"微信登录错误"
)
String
openId
;
@NotBlank
(
message
=
"手机号不可为空"
)
String
phone
;
}
src/main/java/com/wangxiaolu/promotion/result/advice/ControllerExceptionAdvice.java
浏览文件 @
7a191ff3
...
@@ -8,6 +8,8 @@ import org.springframework.web.bind.MethodArgumentNotValidException;
...
@@ -8,6 +8,8 @@ import org.springframework.web.bind.MethodArgumentNotValidException;
import
org.springframework.web.bind.annotation.ExceptionHandler
;
import
org.springframework.web.bind.annotation.ExceptionHandler
;
import
org.springframework.web.bind.annotation.RestControllerAdvice
;
import
org.springframework.web.bind.annotation.RestControllerAdvice
;
import
java.sql.SQLIntegrityConstraintViolationException
;
/**
/**
* @author : liqiulin
* @author : liqiulin
* @date : 2024-03-28 19
* @date : 2024-03-28 19
...
@@ -18,19 +20,33 @@ import org.springframework.web.bind.annotation.RestControllerAdvice;
...
@@ -18,19 +20,33 @@ import org.springframework.web.bind.annotation.RestControllerAdvice;
public
class
ControllerExceptionAdvice
{
public
class
ControllerExceptionAdvice
{
@ExceptionHandler
({
ParamException
.
class
})
@ExceptionHandler
({
ParamException
.
class
})
public
R
P
aramExceptionHandler
(
ParamException
e
)
{
public
R
p
aramExceptionHandler
(
ParamException
e
)
{
return
new
R
(
e
.
getCode
(),
e
.
getMsg
(),
e
.
getMessage
());
return
new
R
(
e
.
getCode
(),
e
.
getMsg
(),
e
.
getMessage
());
}
}
@ExceptionHandler
({
APIException
.
class
})
@ExceptionHandler
({
APIException
.
class
})
public
R
API
ExceptionHandler
(
APIException
e
)
{
public
R
api
ExceptionHandler
(
APIException
e
)
{
return
new
R
(
e
.
getCode
(),
e
.
getMsg
(),
e
.
getMessage
());
return
new
R
(
e
.
getCode
(),
e
.
getMsg
(),
e
.
getMessage
());
}
}
@ExceptionHandler
({
SQLIntegrityConstraintViolationException
.
class
})
public
R
dbConstraintViolationExceptionHandler
(
SQLIntegrityConstraintViolationException
e
)
{
RCode
errorCode
=
RCode
.
USER_PHONE_IDENNUMBER_WXOPENID_UNIQUE_ERROR
;
String
msg
=
errorCode
.
getMsg
();
String
message
=
e
.
getMessage
();
if
(
message
.
contains
(
"phone_unique"
))
{
msg
=
"手机号已注册"
;
}
else
if
(
message
.
contains
(
"iden_num_unique"
))
{
msg
=
"身份证已注册"
;
}
else
if
(
message
.
contains
(
"open_id_unique"
))
{
msg
=
"微信号已注册"
;
}
return
new
R
(
errorCode
.
getCode
(),
msg
,
message
);
}
@ExceptionHandler
({
MethodArgumentNotValidException
.
class
})
@ExceptionHandler
({
MethodArgumentNotValidException
.
class
})
public
R
M
ethodArgumentNotValidExceptionHandler
(
MethodArgumentNotValidException
e
)
{
public
R
m
ethodArgumentNotValidExceptionHandler
(
MethodArgumentNotValidException
e
)
{
String
msg
=
e
.
getBindingResult
().
getFieldError
().
getDefaultMessage
();
String
msg
=
e
.
getBindingResult
().
getFieldError
().
getDefaultMessage
();
return
new
R
(
RCode
.
PARAM_ERROR
.
getCode
(),
msg
);
return
new
R
(
RCode
.
PARAM_ERROR
.
getCode
(),
msg
);
}
}
}
}
src/main/java/com/wangxiaolu/promotion/result/basedata/RCode.java
浏览文件 @
7a191ff3
...
@@ -31,6 +31,8 @@ public enum RCode implements StatusCode {
...
@@ -31,6 +31,8 @@ public enum RCode implements StatusCode {
LOGIN_PARAM_ERROR
(
3000
,
"登录信息错误"
),
LOGIN_PARAM_ERROR
(
3000
,
"登录信息错误"
),
ENROLL_PARAM_ERROR
(
3001
,
"注册信息错误"
),
ENROLL_PARAM_ERROR
(
3001
,
"注册信息错误"
),
PHONE_PARAM_ERROR
(
3002
,
"手机号异常"
),
PHONE_PARAM_ERROR
(
3002
,
"手机号异常"
),
USER_PHONE_IDENNUMBER_WXOPENID_UNIQUE_ERROR
(
3003
,
"个人信息已注册"
),
LOGIN_USER_IS_NULL_ERROR
(
3004
,
"账号未注册"
),
/**
/**
* 腾讯云
* 腾讯云
* 3500+
* 3500+
...
...
src/main/java/com/wangxiaolu/promotion/service/user/TencentCoreService.java
浏览文件 @
7a191ff3
...
@@ -10,5 +10,5 @@ public interface TencentCoreService {
...
@@ -10,5 +10,5 @@ public interface TencentCoreService {
* 发送手机号验证码
* 发送手机号验证码
* @param phone 手机号
* @param phone 手机号
*/
*/
void
sendSmsPhoneVerC
O
de
(
String
phone
);
void
sendSmsPhoneVerC
o
de
(
String
phone
);
}
}
src/main/java/com/wangxiaolu/promotion/service/user/impl/TencentCoreServiceImpl.java
浏览文件 @
7a191ff3
...
@@ -31,7 +31,7 @@ public class TencentCoreServiceImpl implements TencentCoreService {
...
@@ -31,7 +31,7 @@ public class TencentCoreServiceImpl implements TencentCoreService {
RedisCache
redisCache
;
RedisCache
redisCache
;
@Override
@Override
public
void
sendSmsPhoneVerC
O
de
(
String
phone
)
{
public
void
sendSmsPhoneVerC
o
de
(
String
phone
)
{
String
redisKey
=
RedisKeys
.
UserKeys
.
PHONE_VER_CODE
.
getKey
()
+
phone
;
String
redisKey
=
RedisKeys
.
UserKeys
.
PHONE_VER_CODE
.
getKey
()
+
phone
;
// 判断是否已获取
// 判断是否已获取
String
verCodeOld
=
redisCache
.
get
(
redisKey
);
String
verCodeOld
=
redisCache
.
get
(
redisKey
);
...
@@ -44,7 +44,7 @@ public class TencentCoreServiceImpl implements TencentCoreService {
...
@@ -44,7 +44,7 @@ public class TencentCoreServiceImpl implements TencentCoreService {
log
.
info
(
"腾讯云短信,发送验证码:{}-{}"
,
phone
,
phoneVerCode
);
log
.
info
(
"腾讯云短信,发送验证码:{}-{}"
,
phone
,
phoneVerCode
);
redisCache
.
addToMinute
(
redisKey
,
phoneVerCode
,
overdueLong
);
redisCache
.
addToMinute
(
redisKey
,
phoneVerCode
,
overdueLong
);
// boolean succss = tencentUtils.sendSmsPhoneVerCOde(phone, phoneVerCode);
//
todo
boolean succss = tencentUtils.sendSmsPhoneVerCOde(phone, phoneVerCode);
boolean
succss
=
true
;
boolean
succss
=
true
;
if
(!
succss
)
{
if
(!
succss
)
{
redisCache
.
removeKey
(
redisKey
);
redisCache
.
removeKey
(
redisKey
);
...
...
src/main/java/com/wangxiaolu/promotion/service/wechat/WeChatUserCoreService.java
浏览文件 @
7a191ff3
package
com
.
wangxiaolu
.
promotion
.
service
.
wechat
;
package
com
.
wangxiaolu
.
promotion
.
service
.
wechat
;
import
com.wangxiaolu.promotion.pojo.user.dto.WxTemporaryInfoDto
;
import
com.wangxiaolu.promotion.pojo.user.dto.WxTemporaryInfoDto
;
import
com.wangxiaolu.promotion.pojo.user.vo.WxJsUserInfoVo
;
/**
/**
* @author : liqiulin
* @author : liqiulin
...
...
src/main/java/com/wangxiaolu/promotion/service/wechat/WeChatUserQueryService.java
浏览文件 @
7a191ff3
...
@@ -8,7 +8,8 @@ import com.wangxiaolu.promotion.pojo.user.dto.WxTemporaryInfoDto;
...
@@ -8,7 +8,8 @@ import com.wangxiaolu.promotion.pojo.user.dto.WxTemporaryInfoDto;
* @describe :微信人员信息查询
* @describe :微信人员信息查询
*/
*/
public
interface
WeChatUserQueryService
{
public
interface
WeChatUserQueryService
{
boolean
loginTemporaryByOpenId
(
String
userOpenId
);
WxTemporaryInfoDto
getTemporaryByOpenId
(
String
openId
);
WxTemporaryInfoDto
loginTemporaryByOpenIdAndPhone
(
String
openId
,
String
phone
);
WxTemporaryInfoDto
getTemporaryByToken
(
String
openId
);
}
}
src/main/java/com/wangxiaolu/promotion/service/wechat/impl/WeChatUserCoreServiceImpl.java
浏览文件 @
7a191ff3
...
@@ -3,12 +3,8 @@ package com.wangxiaolu.promotion.service.wechat.impl;
...
@@ -3,12 +3,8 @@ package com.wangxiaolu.promotion.service.wechat.impl;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.wangxiaolu.promotion.domain.user.dao.TemporaryInfoDao
;
import
com.wangxiaolu.promotion.domain.user.dao.TemporaryInfoDao
;
import
com.wangxiaolu.promotion.pojo.user.dto.WxTemporaryInfoDto
;
import
com.wangxiaolu.promotion.pojo.user.dto.WxTemporaryInfoDto
;
import
com.wangxiaolu.promotion.pojo.user.vo.WxJsUserInfoVo
;
import
com.wangxiaolu.promotion.service.wechat.WeChatUserCoreService
;
import
com.wangxiaolu.promotion.service.wechat.WeChatUserCoreService
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
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
;
...
...
src/main/java/com/wangxiaolu/promotion/service/wechat/impl/WeChatUserQueryServiceImpl.java
浏览文件 @
7a191ff3
package
com
.
wangxiaolu
.
promotion
.
service
.
wechat
.
impl
;
package
com
.
wangxiaolu
.
promotion
.
service
.
wechat
.
impl
;
import
com.alibaba.fastjson.JSONObject
;
import
com.wangxiaolu.promotion.common.redis.RedisKeys
;
import
com.wangxiaolu.promotion.common.redis.service.RedisCache
;
import
com.wangxiaolu.promotion.domain.user.dao.TemporaryInfoDao
;
import
com.wangxiaolu.promotion.domain.user.dao.TemporaryInfoDao
;
import
com.wangxiaolu.promotion.domain.user.mapper.entity.TemporaryInfoDO
;
import
com.wangxiaolu.promotion.exception.ParamException
;
import
com.wangxiaolu.promotion.exception.ParamException
;
import
com.wangxiaolu.promotion.pojo.user.dto.WxTemporaryInfoDto
;
import
com.wangxiaolu.promotion.pojo.user.dto.WxTemporaryInfoDto
;
import
com.wangxiaolu.promotion.result.basedata.RCode
;
import
com.wangxiaolu.promotion.result.basedata.RCode
;
import
com.wangxiaolu.promotion.service.wechat.WeChatUserQueryService
;
import
com.wangxiaolu.promotion.service.wechat.WeChatUserQueryService
;
import
com.wangxiaolu.promotion.utils.JwtUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
@@ -25,38 +26,48 @@ public class WeChatUserQueryServiceImpl implements WeChatUserQueryService {
...
@@ -25,38 +26,48 @@ public class WeChatUserQueryServiceImpl implements WeChatUserQueryService {
private
static
final
Logger
log
=
LoggerFactory
.
getLogger
(
WeChatUserQueryServiceImpl
.
class
);
private
static
final
Logger
log
=
LoggerFactory
.
getLogger
(
WeChatUserQueryServiceImpl
.
class
);
@Autowired
@Autowired
TemporaryInfoDao
temporaryInfoDao
;
TemporaryInfoDao
temporaryInfoDao
;
@Autowired
RedisCache
redisCache
;
@Autowired
JwtUtils
jwtUtils
;
/**
* 根据openId、手机号登录
*/
@Override
@Override
public
boolean
loginTemporaryByOpenId
(
String
userOpenId
)
{
public
WxTemporaryInfoDto
loginTemporaryByOpenIdAndPhone
(
String
openId
,
String
phone
)
{
WxTemporaryInfoDto
temDto
=
temporaryInfoDao
.
getUnimportantData
(
userOpenId
);
WxTemporaryInfoDto
temDto
=
temporaryInfoDao
.
getUnimportantData
(
openId
,
phone
);
boolean
exist
=
!
Objects
.
isNull
(
temDto
);
if
(
Objects
.
isNull
(
temDto
))
{
// todo 查询到时,将个人信息放到reids中进行保存
log
.
info
(
"微信-促销员登录失败,当前信息未注册(openId、手机号),openId:{},phone:{}"
,
openId
,
phone
);
if
(
exist
)
{
return
null
;
log
.
info
(
"微信-促销员{}登录成功,openId:{}"
,
temDto
.
getName
(),
userOpenId
);
log
.
info
(
JSONObject
.
toJSONString
(
temDto
));
}
else
{
log
.
info
(
"微信-促销员登录失败,登录openId:{}"
,
userOpenId
);
}
}
return
exist
;
// 生成登录token
String
temToken
=
jwtUtils
.
getTemporaryToken
(
openId
,
phone
);
temDto
.
setToken
(
temToken
);
String
key
=
RedisKeys
.
UserKeys
.
TEMPORARY_TOKEN
.
getKey
();
redisCache
.
addToJsonToDays
(
key
+
temToken
,
temDto
,
3
);
log
.
info
(
"微信-促销员{}登录成功(openId、手机号),openId:{},phone:{}\n生成登录token:{}"
,
temDto
.
getName
(),
openId
,
phone
,
temToken
);
return
temDto
;
}
}
/**
/**
* 根据openId查询人员详情
* 不返回身份证照片等重要信息,详情请查看sql语句
* @param openId 微信openId
* @return 不返回身份证照片等重要信息,详情请查看sql语句
*/
*/
@Override
@Override
public
WxTemporaryInfoDto
getTemporaryBy
OpenId
(
String
openId
)
{
public
WxTemporaryInfoDto
getTemporaryBy
Token
(
String
openId
)
{
// todo 先查询redis中是否有缓存数据
// todo 先查询redis中是否有缓存数据
String
key
=
RedisKeys
.
UserKeys
.
TEMPORARY_TOKEN
.
getKey
();
// todo redis中没有缓存数据,则进行查询
// todo redis中没有缓存数据,则进行查询
WxTemporaryInfoDto
temporaryInfoDto
=
temporaryInfoDao
.
getUnimportantData
(
openId
);
WxTemporaryInfoDto
temporaryInfoDto
=
temporaryInfoDao
.
getUnimportantData
(
openId
);
if
(
Objects
.
isNull
(
temporaryInfoDto
)){
if
(
Objects
.
isNull
(
temporaryInfoDto
))
{
throw
new
ParamException
(
RCode
.
LOGIN_PARAM_ERROR
,
null
);
throw
new
ParamException
(
RCode
.
LOGIN_PARAM_ERROR
,
null
);
}
}
return
temporaryInfoDto
;
return
temporaryInfoDto
;
}
}
}
}
src/main/java/com/wangxiaolu/promotion/utils/JwtUtils.java
0 → 100644
浏览文件 @
7a191ff3
package
com
.
wangxiaolu
.
promotion
.
utils
;
import
com.auth0.jwt.JWT
;
import
com.auth0.jwt.JWTVerifier
;
import
com.auth0.jwt.algorithms.Algorithm
;
import
com.auth0.jwt.interfaces.DecodedJWT
;
import
com.wangxiaolu.promotion.exception.ParamException
;
import
com.wangxiaolu.promotion.result.basedata.RCode
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Component
;
/**
* @author : liqiulin
* @date : 2024-04-16 17
* @describe : java web token
*/
@Slf4j
@Component
public
class
JwtUtils
{
/**
* 促销员-解密秘钥
*/
@Value
(
"${wx.miniapp.temporary.token_secret}"
)
private
String
TEMPORARY_SECRET
;
public
String
getTemporaryToken
(
String
openId
,
String
phone
)
{
try
{
//用秘钥生成签名
Algorithm
algorithm
=
Algorithm
.
HMAC256
(
TEMPORARY_SECRET
);
//默认头部+载荷(手机号/id)+签名=jwt
String
jwtToken
=
JWT
.
create
()
.
withClaim
(
"openId"
,
openId
)
.
withClaim
(
"phone"
,
phone
)
.
sign
(
algorithm
);
return
jwtToken
;
}
catch
(
Exception
e
)
{
log
.
error
(
"用户{}的token生成异常:{}"
,
openId
,
e
);
throw
new
ParamException
(
RCode
.
LOGIN_PARAM_ERROR
,
e
.
getMessage
());
}
}
/**
* 校验token是否正确
**/
public
boolean
verifyTemporaryToken
(
String
token
,
String
openId
,
String
phone
)
{
try
{
// 生成JWT效验器
Algorithm
algorithm
=
Algorithm
.
HMAC256
(
TEMPORARY_SECRET
);
JWTVerifier
verifier
=
JWT
.
require
(
algorithm
).
build
();
verifier
.
verify
(
token
);
return
true
;
// DecodedJWT jwt = JWT.decode(token);
// if (
// openId.equals(jwt.getClaim("openId").asString())
// && phone.equals(jwt.getClaim("phone").asString())
// ){
// return true;
// }
// return false;
}
catch
(
Exception
e
)
{
log
.
error
(
"用户{}的token解析异常:{}"
,
openId
,
e
);
throw
new
ParamException
(
RCode
.
LOGIN_PARAM_ERROR
,
e
.
getMessage
());
}
}
}
src/main/resources/application.yml
浏览文件 @
7a191ff3
...
@@ -12,6 +12,9 @@ spring:
...
@@ -12,6 +12,9 @@ spring:
url
:
jdbc:mysql://bj-cdb-j8ppdy86.sql.tencentcdb.com:63569/promotion_dev?autoReconnect=true
url
:
jdbc:mysql://bj-cdb-j8ppdy86.sql.tencentcdb.com:63569/promotion_dev?autoReconnect=true
username
:
LnNDBM
username
:
LnNDBM
password
:
fd0%bhD4@oO(%
password
:
fd0%bhD4@oO(%
redis
:
port
:
6379
host
:
127.0.0.1
logging
:
logging
:
config
:
classpath:logback-spring.xml
config
:
classpath:logback-spring.xml
...
@@ -31,20 +34,22 @@ wx:
...
@@ -31,20 +34,22 @@ wx:
token
:
#微信小程序消息服务器配置的token
token
:
#微信小程序消息服务器配置的token
aesKey
:
#微信小程序消息服务器配置的EncodingAESKey
aesKey
:
#微信小程序消息服务器配置的EncodingAESKey
msgDataFormat
:
JSON
msgDataFormat
:
JSON
temporary
:
token_secret
:
sXwHPj#U#xmim^ts
tengxunyun
:
tengxunyun
:
secret_d
:
AKIDVt353sWyY0GXn0ANa0YyGdwDIBtjQwGS
secret_d
:
AKIDVt353sWyY0GXn0ANa0YyGdwDIBtjQwGS
secret_key
:
SBqJcrxypSxeGOPF81mLgsANXo3ALhz7
secret_key
:
SBqJcrxypSxeGOPF81mLgsANXo3ALhz7
sms
:
sms
:
#
指定接入地域域名,默认就近地域接入域名为 sms.tencentcloudapi.com
#指定接入地域域名,默认就近地域接入域名为 sms.tencentcloudapi.com
endpoint_beijing
:
sms.ap-beijing.tencentcloudapi.com
endpoint_beijing
:
sms.ap-beijing.tencentcloudapi.com
#
地域信息
#地域信息
ap_beijing
:
ap-beijing
ap_beijing
:
ap-beijing
#
应用ID
#
应用ID(默认应用)
sdk_app_id_defult
:
1400903035
sdk_app_id_defult
:
1400903035
#
模板名称
#
模板名称-手机验证码
sign_name_a
:
北京王小卤
sign_name_a
:
北京王小卤
#
模板ID
#
模板ID-手机验证码
template_id_a
:
2127434
template_id_a
:
2127434
#
验证码过期时间(分钟)
#验证码过期时间(分钟)
overdue_long
:
5
overdue_long
:
5
\ No newline at end of file
src/test/java/com/wangxiaolu/promotion/controller/wechat/WeChatUserCoreControllerTest.java
浏览文件 @
7a191ff3
package
com
.
wangxiaolu
.
promotion
.
controller
.
wechat
;
package
com
.
wangxiaolu
.
promotion
.
controller
.
wechat
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.wangxiaolu.promotion.pojo.user.vo.Wx
JsUserInfo
Vo
;
import
com.wangxiaolu.promotion.pojo.user.vo.Wx
TemporaryEnroll
Vo
;
import
org.junit.jupiter.api.Test
;
import
org.junit.jupiter.api.Test
;
import
org.junit.runner.RunWith
;
import
org.junit.runner.RunWith
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.test.context.junit4.SpringRunner
;
import
org.springframework.test.context.junit4.SpringRunner
;
import
static
org
.
junit
.
jupiter
.
api
.
Assertions
.*;
/**
/**
* @author : liqiulin
* @author : liqiulin
* @date : 2024-04-08 16
* @date : 2024-04-08 16
...
@@ -26,7 +24,7 @@ class WeChatUserCoreControllerTest {
...
@@ -26,7 +24,7 @@ class WeChatUserCoreControllerTest {
@Test
@Test
void
enrollUserInfo
()
{
void
enrollUserInfo
()
{
Wx
JsUserInfoVo
vo
=
new
WxJsUserInfo
Vo
()
Wx
TemporaryEnrollVo
vo
=
new
WxTemporaryEnroll
Vo
()
.
setOpenId
(
"openid111"
)
.
setOpenId
(
"openid111"
)
.
setAvatarUrl
(
"头像Url"
)
.
setAvatarUrl
(
"头像Url"
)
.
setName
(
"姓名"
)
.
setName
(
"姓名"
)
...
@@ -46,7 +44,5 @@ class WeChatUserCoreControllerTest {
...
@@ -46,7 +44,5 @@ class WeChatUserCoreControllerTest {
@Test
@Test
void
getOpenIdByWxcode
()
{
void
getOpenIdByWxcode
()
{
Boolean
openIdByWxcode
=
weChatUserQueryController
.
temporaryLoginByOpenId
(
"111"
);
System
.
out
.
println
(
openIdByWxcode
);
}
}
}
}
\ No newline at end of file
src/test/java/com/wangxiaolu/promotion/controller/wechat/WeChatUserQueryControllerTest.java
0 → 100644
浏览文件 @
7a191ff3
package
com
.
wangxiaolu
.
promotion
.
controller
.
wechat
;
import
com.wangxiaolu.promotion.pojo.user.dto.WxTemporaryInfoDto
;
import
com.wangxiaolu.promotion.pojo.user.vo.WxTemporaryLoginVo
;
import
org.junit.jupiter.api.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.test.context.junit4.SpringRunner
;
import
static
org
.
junit
.
jupiter
.
api
.
Assertions
.*;
/**
* @author : liqiulin
* @date : 2024-04-16 11
* @describe :
*/
@SpringBootTest
@RunWith
(
SpringRunner
.
class
)
class
WeChatUserQueryControllerTest
{
@Autowired
WeChatUserQueryController
weChatUserQueryController
;
@Test
void
temporaryLoginByPhoneAndOpenId
()
{
WxTemporaryLoginVo
loginVO
=
new
WxTemporaryLoginVo
().
setOpenId
(
"oCMt-66hnlY9-bQcZAAZKX0p3s6I"
).
setPhone
(
"15701654502"
);
WxTemporaryInfoDto
b
=
weChatUserQueryController
.
temporaryLoginByPhoneAndOpenId
(
loginVO
);
System
.
out
.
println
(
"temporaryLoginByPhoneAndOpenId 登录结果:"
+
b
);
}
@Test
void
getTemporaryInfoByOpenId
()
{
}
}
\ No newline at end of file
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论