Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
P
promotion-service
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
promotion
promotion-service
Commits
fb800cfd
提交
fb800cfd
authored
4月 15, 2024
作者:
lql-win
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
手机号校验
上级
63055f3e
隐藏空白字符变更
内嵌
并排
正在显示
12 个修改的文件
包含
125 行增加
和
28 行删除
+125
-28
WeChatUserCoreController.java
...promotion/controller/wechat/WeChatUserCoreController.java
+14
-0
WeChatUserQueryController.java
...romotion/controller/wechat/WeChatUserQueryController.java
+12
-1
TemporaryInfoDao.java
...angxiaolu/promotion/domain/user/dao/TemporaryInfoDao.java
+2
-2
TemporaryInfoDaoImpl.java
.../promotion/domain/user/dao/impl/TemporaryInfoDaoImpl.java
+12
-8
TemporaryInfoMapper.java
...olu/promotion/domain/user/mapper/TemporaryInfoMapper.java
+9
-5
WxTemporaryInfoDto.java
...angxiaolu/promotion/pojo/user/dto/WxTemporaryInfoDto.java
+5
-5
WxJsUserInfoVo.java
...com/wangxiaolu/promotion/pojo/user/vo/WxJsUserInfoVo.java
+1
-0
RCode.java
.../java/com/wangxiaolu/promotion/result/basedata/RCode.java
+3
-2
WeChatUserQueryService.java
...aolu/promotion/service/wechat/WeChatUserQueryService.java
+4
-0
WeChatUserQueryServiceImpl.java
...otion/service/wechat/impl/WeChatUserQueryServiceImpl.java
+27
-4
UserUtils.java
src/main/java/com/wangxiaolu/promotion/utils/UserUtils.java
+25
-0
TemporaryInfoMapper.xml
src/main/resources/mapper/TemporaryInfoMapper.xml
+11
-1
没有找到文件。
src/main/java/com/wangxiaolu/promotion/controller/wechat/WeChatUserCoreController.java
浏览文件 @
fb800cfd
package
com
.
wangxiaolu
.
promotion
.
controller
.
wechat
;
import
com.alibaba.fastjson.JSONObject
;
import
com.wangxiaolu.promotion.exception.ParamException
;
import
com.wangxiaolu.promotion.pojo.user.dto.WxTemporaryInfoDto
;
import
com.wangxiaolu.promotion.pojo.user.vo.WxJsUserInfoVo
;
import
com.wangxiaolu.promotion.result.basedata.RCode
;
import
com.wangxiaolu.promotion.service.wechat.WeChatUserCoreService
;
import
com.wangxiaolu.promotion.utils.UserUtils
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -13,6 +16,8 @@ import org.springframework.web.bind.annotation.RequestBody;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.Objects
;
/**
* @author : liqiulin
* @date : 2024-04-03 17
...
...
@@ -31,6 +36,15 @@ public class WeChatUserCoreController {
*/
@PostMapping
(
"/temporary/enroll"
)
public
boolean
enrollUserInfo
(
@RequestBody
@Validated
WxJsUserInfoVo
wxJsUserInfoVo
)
{
// 人员信息校验
boolean
isIden
=
UserUtils
.
idenCardPattern
(
wxJsUserInfoVo
.
getIdenNumber
());
boolean
isPhone
=
UserUtils
.
phonePattern
(
wxJsUserInfoVo
.
getPhone
());
if
(!
isIden
||
!
isPhone
)
{
throw
new
ParamException
(
RCode
.
ENROLL_PARAM_ERROR
,
null
);
}
// todo 手机号校验 wxJsUserInfoVo.getPhoneCode()
log
.
info
(
"微信-促销员注册:{}"
,
JSONObject
.
toJSONString
(
wxJsUserInfoVo
));
WxTemporaryInfoDto
temporaryDto
=
new
WxTemporaryInfoDto
();
...
...
src/main/java/com/wangxiaolu/promotion/controller/wechat/WeChatUserQueryController.java
浏览文件 @
fb800cfd
package
com
.
wangxiaolu
.
promotion
.
controller
.
wechat
;
import
com.wangxiaolu.promotion.pojo.user.dto.WxTemporaryInfoDto
;
import
com.wangxiaolu.promotion.service.wechat.WeChatUserQueryService
;
import
com.wangxiaolu.promotion.utils.WxMaUtils
;
import
lombok.extern.slf4j.Slf4j
;
import
me.chanjar.weixin.common.error.WxErrorException
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.util.StringUtils
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
...
...
@@ -40,4 +40,15 @@ public class WeChatUserQueryController {
}
return
false
;
}
/**
* 根据openId查询人员详情
* 促销员查询
*/
@GetMapping
(
"/temporary/openId"
)
public
WxTemporaryInfoDto
getTemporaryInfoByOpenId
(
String
openId
)
{
return
weChatUserQueryService
.
getTemporaryByOpenId
(
openId
);
}
}
src/main/java/com/wangxiaolu/promotion/domain/user/dao/TemporaryInfoDao.java
浏览文件 @
fb800cfd
...
...
@@ -16,7 +16,7 @@ public interface TemporaryInfoDao {
int
saveWxTemporaryInfo
(
WxTemporaryInfoDto
temporaryDto
);
/**
* 根据OpenId查询人员是否存在
* 根据OpenId查询人员是否存在
(非保密信息)
*/
TemporaryInfoDO
queryOneTemporaryByOpenId
(
String
openId
);
WxTemporaryInfoDto
getUnimportantData
(
String
openId
);
}
src/main/java/com/wangxiaolu/promotion/domain/user/dao/impl/TemporaryInfoDaoImpl.java
浏览文件 @
fb800cfd
...
...
@@ -11,6 +11,8 @@ import org.springframework.beans.BeanUtils;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.Objects
;
/**
* @author : liqiulin
* @date : 2024-04-08 16
...
...
@@ -33,14 +35,16 @@ public class TemporaryInfoDaoImpl implements TemporaryInfoDao {
}
@Override
public
TemporaryInfoDO
queryOneTemporaryByOpenId
(
String
openId
)
{
TemporaryWrapper
tw
=
new
TemporaryWrapper
().
setOpenId
(
openId
);
LambdaQueryWrapper
<
TemporaryInfoDO
>
qw
=
buildQueryList
(
tw
);
TemporaryInfoDO
temDo
=
temporaryInfoMapper
.
selectOne
(
qw
);
WxTemporaryInfoDto
temporaryDto
=
new
WxTemporaryInfoDto
();
BeanUtils
.
copyProperties
(
temDo
,
temporaryDto
);
return
temDo
;
public
WxTemporaryInfoDto
getUnimportantData
(
String
openId
)
{
TemporaryInfoDO
temDo
=
temporaryInfoMapper
.
getUnimportantData
(
openId
);
WxTemporaryInfoDto
temporaryDto
=
null
;
if
(!
Objects
.
isNull
(
temDo
)){
temporaryDto
=
new
WxTemporaryInfoDto
();
BeanUtils
.
copyProperties
(
temDo
,
temporaryDto
);
}
return
temporaryDto
;
}
private
LambdaQueryWrapper
<
TemporaryInfoDO
>
buildQueryList
(
TemporaryWrapper
tw
){
...
...
src/main/java/com/wangxiaolu/promotion/domain/user/mapper/TemporaryInfoMapper.java
浏览文件 @
fb800cfd
...
...
@@ -3,18 +3,22 @@ package com.wangxiaolu.promotion.domain.user.mapper;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.wangxiaolu.promotion.domain.user.mapper.entity.TemporaryInfoDO
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Param
;
import
org.springframework.stereotype.Repository
;
/**
* @author a02200059
* @description 针对表【temporary_info】的数据库操作Mapper
* @createDate 2024-04-09 18:34:54
* @Entity com.wangxiaolu.promotion.domain.user.mapper.entity.TemporaryInfo
*/
* @author a02200059
* @description 针对表【temporary_info】的数据库操作Mapper
* @createDate 2024-04-09 18:34:54
* @Entity com.wangxiaolu.promotion.domain.user.mapper.entity.TemporaryInfo
*/
@Mapper
@Repository
public
interface
TemporaryInfoMapper
extends
BaseMapper
<
TemporaryInfoDO
>
{
// 根据openId查询非保密数据,保密数据不返回:身份证号、身份证照片等信息
TemporaryInfoDO
getUnimportantData
(
@Param
(
"openId"
)
String
openId
);
}
...
...
src/main/java/com/wangxiaolu/promotion/pojo/user/dto/WxTemporaryInfoDto.java
浏览文件 @
fb800cfd
...
...
@@ -15,6 +15,11 @@ import lombok.experimental.Accessors;
@NoArgsConstructor
@Accessors
(
chain
=
true
)
public
class
WxTemporaryInfoDto
{
/**
* temporary_info表id
*/
private
Integer
id
;
/**
* openId
*/
...
...
@@ -71,9 +76,4 @@ public class WxTemporaryInfoDto {
* 详细地址
*/
String
address
;
/**
* 手机验证码
*/
String
phoneCode
;
}
src/main/java/com/wangxiaolu/promotion/pojo/user/vo/WxJsUserInfoVo.java
浏览文件 @
fb800cfd
...
...
@@ -43,6 +43,7 @@ public class WxJsUserInfoVo {
/**
* 头像
*/
@NotBlank
(
message
=
"请上传头像"
)
String
avatarUrl
;
...
...
src/main/java/com/wangxiaolu/promotion/result/basedata/RCode.java
浏览文件 @
fb800cfd
...
...
@@ -25,10 +25,11 @@ public enum RCode implements StatusCode {
API_ERROR
(
2000
,
"业务异常"
),
/**
* user
模块
* user
* 3000+
*/
LOGIN_PARAM_ERROR
(
3000
,
"登录信息错误"
);
LOGIN_PARAM_ERROR
(
3000
,
"登录信息错误"
),
ENROLL_PARAM_ERROR
(
3001
,
"注册信息错误"
);
;
...
...
src/main/java/com/wangxiaolu/promotion/service/wechat/WeChatUserQueryService.java
浏览文件 @
fb800cfd
package
com
.
wangxiaolu
.
promotion
.
service
.
wechat
;
import
com.wangxiaolu.promotion.pojo.user.dto.WxTemporaryInfoDto
;
/**
* @author : liqiulin
* @date : 2024-04-09 18
...
...
@@ -7,4 +9,6 @@ package com.wangxiaolu.promotion.service.wechat;
*/
public
interface
WeChatUserQueryService
{
boolean
loginTemporaryByOpenId
(
String
userOpenId
);
WxTemporaryInfoDto
getTemporaryByOpenId
(
String
openId
);
}
src/main/java/com/wangxiaolu/promotion/service/wechat/impl/WeChatUserQueryServiceImpl.java
浏览文件 @
fb800cfd
...
...
@@ -3,6 +3,9 @@ package com.wangxiaolu.promotion.service.wechat.impl;
import
com.alibaba.fastjson.JSONObject
;
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.pojo.user.dto.WxTemporaryInfoDto
;
import
com.wangxiaolu.promotion.result.basedata.RCode
;
import
com.wangxiaolu.promotion.service.wechat.WeChatUserQueryService
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
...
...
@@ -25,15 +28,35 @@ public class WeChatUserQueryServiceImpl implements WeChatUserQueryService {
@Override
public
boolean
loginTemporaryByOpenId
(
String
userOpenId
)
{
TemporaryInfoDO
temDo
=
temporaryInfoDao
.
queryOneTemporaryByOpenId
(
userOpenId
);
boolean
exist
=
!
Objects
.
isNull
(
temDo
);
WxTemporaryInfoDto
temDto
=
temporaryInfoDao
.
getUnimportantData
(
userOpenId
);
boolean
exist
=
!
Objects
.
isNull
(
temD
t
o
);
// todo 查询到时,将个人信息放到reids中进行保存
if
(
exist
)
{
log
.
info
(
"{}登录成功,openId:{}"
,
temDo
.
getName
(),
userOpenId
);
log
.
info
(
JSONObject
.
toJSONString
(
temDo
));
log
.
info
(
"微信-促销员{}登录成功,openId:{}"
,
temDto
.
getName
(),
userOpenId
);
log
.
info
(
JSONObject
.
toJSONString
(
temDto
));
}
else
{
log
.
info
(
"微信-促销员登录失败,登录openId:{}"
,
userOpenId
);
}
return
exist
;
}
/**
* 根据openId查询人员详情
* @param openId 微信openId
* @return 不返回身份证照片等重要信息,详情请查看sql语句
*/
@Override
public
WxTemporaryInfoDto
getTemporaryByOpenId
(
String
openId
)
{
// todo 先查询redis中是否有缓存数据
// todo redis中没有缓存数据,则进行查询
WxTemporaryInfoDto
temporaryInfoDto
=
temporaryInfoDao
.
getUnimportantData
(
openId
);
if
(
Objects
.
isNull
(
temporaryInfoDto
)){
throw
new
ParamException
(
RCode
.
LOGIN_PARAM_ERROR
,
null
);
}
return
temporaryInfoDto
;
}
}
src/main/java/com/wangxiaolu/promotion/utils/UserUtils.java
0 → 100644
浏览文件 @
fb800cfd
package
com
.
wangxiaolu
.
promotion
.
utils
;
import
java.util.regex.Pattern
;
/**
* 人员信息校验
*/
public
class
UserUtils
{
private
static
final
String
ID_CARD_PATTERN
=
"^[1-9]\\d{5}(19|20)\\d{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2]\\d|3[0-1])|(04|06|09|11)(0[1-9]|[1-2]\\d|30)|02(0[1-9]|[1-2]\\d))\\d{3}[\\dXx]$"
;
private
static
final
String
PHONE_NUMBER_PATTERN
=
"^1[3-9]\\d{9}$"
;
/**
* 身份证号检验
*/
public
static
boolean
idenCardPattern
(
String
idCard
)
{
return
Pattern
.
matches
(
ID_CARD_PATTERN
,
idCard
);
}
public
static
boolean
phonePattern
(
String
phoneNumber
)
{
return
phoneNumber
.
matches
(
PHONE_NUMBER_PATTERN
);
}
}
src/main/resources/mapper/TemporaryInfoMapper.xml
浏览文件 @
fb800cfd
...
...
@@ -21,10 +21,20 @@
</resultMap>
<sql
id=
"Base_Column_List"
>
id,name,phone,
id
,name,phone,
iden_number,open_id,avatar_url,
avatar_url_field_id,iden_front_photo_url,iden_front_photo_field_id,
iden_reverse_photo_url,iden_reverse_photo_field_id,create_time,
modify_time
</sql>
<sql
id=
"Base_Column_Unimportant"
>
id,name,phone,open_id,avatar_url,create_time,modify_time
</sql>
<select
id=
"getUnimportantData"
resultMap=
"BaseResultMap"
>
select
<include
refid=
"Base_Column_Unimportant"
/>
from temporary_info where open_id = #{openId}
</select>
</mapper>
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论