Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
cloud-platform
Project
Project
Details
Activity
Releases
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
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
youjj
cloud-platform
Commits
25ea6021
Commit
25ea6021
authored
Oct 30, 2019
by
周健威
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
8c66a7b4
4e5c405b
Changes
15
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
736 additions
and
31 deletions
+736
-31
AccountBindDTO.java
...com/github/wxiaoqi/security/admin/dto/AccountBindDTO.java
+22
-0
AppUserAlipay.java
...m/github/wxiaoqi/security/admin/entity/AppUserAlipay.java
+7
-4
AppUserDetail.java
...m/github/wxiaoqi/security/admin/entity/AppUserDetail.java
+8
-0
AppUserDTO.java
...m/github/wxiaoqi/security/admin/feign/dto/AppUserDTO.java
+6
-1
AppUserVo.java
.../java/com/github/wxiaoqi/security/admin/vo/AppUserVo.java
+5
-1
AppUserAlipayBiz.java
...m/github/wxiaoqi/security/admin/biz/AppUserAlipayBiz.java
+127
-3
AppUserDetailBiz.java
...m/github/wxiaoqi/security/admin/biz/AppUserDetailBiz.java
+19
-1
AppUserLoginBiz.java
...om/github/wxiaoqi/security/admin/biz/AppUserLoginBiz.java
+78
-7
AppUserController.java
...github/wxiaoqi/security/admin/rest/AppUserController.java
+36
-10
AppUserDetailMapper.xml
...e-admin/src/main/resources/mapper/AppUserDetailMapper.xml
+2
-0
ThirdFeign.java
...in/java/com/xxfc/platform/universal/feign/ThirdFeign.java
+5
-4
Base64.java
...c/main/java/com/xxfc/platform/universal/utils/Base64.java
+268
-0
SignUtils.java
...ain/java/com/xxfc/platform/universal/utils/SignUtils.java
+44
-0
OrderPayBiz.java
...ain/java/com/xxfc/platform/universal/biz/OrderPayBiz.java
+78
-0
UserInfoController.java
...xfc/platform/universal/controller/UserInfoController.java
+31
-0
No files found.
ace-modules/ace-admin-api/src/main/java/com/github/wxiaoqi/security/admin/dto/AccountBindDTO.java
0 → 100644
View file @
25ea6021
package
com
.
github
.
wxiaoqi
.
security
.
admin
.
dto
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/10/25 14:42
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
AccountBindDTO
{
private
String
openId
;
private
String
unionId
;
private
String
nickName
;
private
String
code
;
private
String
type
;
}
ace-modules/ace-admin-api/src/main/java/com/github/wxiaoqi/security/admin/entity/AppUserAlipay.java
View file @
25ea6021
...
...
@@ -2,10 +2,8 @@ package com.github.wxiaoqi.security.admin.entity;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.persistence.Column
;
import
javax.persistence.GeneratedValue
;
import
javax.persistence.Id
;
import
javax.persistence.Table
;
import
javax.persistence.*
;
/**
* 支付宝账号表
...
...
@@ -37,7 +35,12 @@ public class AppUserAlipay {
@Column
(
name
=
"is_del"
)
private
Integer
isDel
;
@ApiModelProperty
(
"昵称"
)
private
String
nickname
;
//类型 1、支付宝,2、微信
@Transient
private
Integer
type
;
}
\ No newline at end of file
ace-modules/ace-admin-api/src/main/java/com/github/wxiaoqi/security/admin/entity/AppUserDetail.java
View file @
25ea6021
package
com
.
github
.
wxiaoqi
.
security
.
admin
.
entity
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
javax.persistence.Column
;
import
javax.persistence.GeneratedValue
;
...
...
@@ -12,6 +14,8 @@ import javax.persistence.Table;
* 用户详情信息表
*/
@Table
(
name
=
"app_user_detail"
)
@AllArgsConstructor
@NoArgsConstructor
@Data
public
class
AppUserDetail
{
@Id
...
...
@@ -20,6 +24,10 @@ public class AppUserDetail {
private
Integer
userid
;
@Column
(
name
=
"is_member"
)
private
Integer
isMember
;
@Column
(
name
=
"wx_nickname"
)
private
String
wxNickname
;
@Column
(
name
=
"qq_nickname"
)
private
String
qqNickname
;
private
String
nickname
;
private
String
realname
;
private
String
headimgurl
;
...
...
ace-modules/ace-admin-api/src/main/java/com/github/wxiaoqi/security/admin/feign/dto/AppUserDTO.java
View file @
25ea6021
...
...
@@ -19,7 +19,10 @@ public class AppUserDTO {
private
Integer
userid
;
private
Integer
isMember
;
private
String
username
;
private
String
wxNickname
;
private
String
qqNickname
;
private
String
nickname
;
private
String
aliPayNickName
;
private
String
realname
;
private
String
headimgurl
;
private
String
email
;
...
...
@@ -87,6 +90,8 @@ public class AppUserDTO {
private
String
itemImg
;
private
Integer
memberNo
;
private
Long
cardLeave
;
private
Integer
isBind
;
private
Boolean
isBindWx
;
private
Boolean
isBindAliPay
;
private
Boolean
isBindQQ
;
}
ace-modules/ace-admin-api/src/main/java/com/github/wxiaoqi/security/admin/vo/AppUserVo.java
View file @
25ea6021
...
...
@@ -33,6 +33,9 @@ public class AppUserVo {
private
Integer
isMember
;
//昵称
private
String
nickname
;
private
String
wxNickname
;
private
String
aliPayNickName
;
private
String
qqNickname
;
//真实姓名
private
String
realname
;
//头像
...
...
@@ -84,5 +87,6 @@ public class AppUserVo {
@ApiModelProperty
(
value
=
"1-未激活;2-激活:"
)
private
Integer
state
;
@ApiModelProperty
(
value
=
"支付宝授权返回的code"
)
private
String
aliCode
;
}
ace-modules/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/biz/AppUserAlipayBiz.java
View file @
25ea6021
package
com
.
github
.
wxiaoqi
.
security
.
admin
.
biz
;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.bean.copier.CopyOptions
;
import
com.alibaba.fastjson.JSONObject
;
import
com.github.wxiaoqi.security.admin.entity.AppUserAlipay
;
import
com.github.wxiaoqi.security.admin.entity.AppUserRelationTemp
;
import
com.github.wxiaoqi.security.admin.mapper.AppUserAlipayMapper
;
import
com.github.wxiaoqi.security.admin.mapper.AppUserRelationTempMapper
;
import
com.github.wxiaoqi.security.auth.client.config.UserAuthConfig
;
import
com.github.wxiaoqi.security.auth.client.jwt.UserAuthUtil
;
import
com.github.wxiaoqi.security.common.biz.BaseBiz
;
import
com.github.wxiaoqi.security.common.msg.ObjectRestResponse
;
import
com.github.wxiaoqi.security.common.util.process.ResultCode
;
import
com.xxfc.platform.universal.feign.ThirdFeign
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
tk.mybatis.mapper.entity.Example
;
import
javax.servlet.http.HttpServletRequest
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
/**
...
...
@@ -18,7 +30,23 @@ import java.util.List;
* @date 2019-07-03 16:36:44
*/
@Service
public
class
AppUserAlipayBiz
extends
BaseBiz
<
AppUserAlipayMapper
,
AppUserAlipay
>
{
@Slf4j
public
class
AppUserAlipayBiz
extends
BaseBiz
<
AppUserAlipayMapper
,
AppUserAlipay
>{
@Autowired
private
UserAuthUtil
userAuthUtil
;
@Autowired
private
UserAuthConfig
userAuthConfig
;
@Autowired
AppUserLoginBiz
appUserLoginBiz
;
@Autowired
AppUserDetailBiz
appUserDetailBiz
;
@Autowired
ThirdFeign
thirdFeign
;
//添加支付宝账号
public
void
addAlipay
(
Integer
userId
,
String
txAlipay
){
...
...
@@ -44,4 +72,100 @@ public class AppUserAlipayBiz extends BaseBiz<AppUserAlipayMapper, AppUserAlipay
}
//获取支付宝用户信息
public
List
<
AppUserAlipay
>
getByUserId
(
HttpServletRequest
request
){
Example
example
=
new
Example
(
AppUserAlipay
.
class
);
Integer
userId
=
null
;
try
{
String
username
=
userAuthUtil
.
getInfoFromToken
(
userAuthConfig
.
getToken
(
request
)).
getId
();
if
(
StringUtils
.
isNotBlank
(
username
))
{
userId
=
Integer
.
parseInt
(
username
);
example
.
createCriteria
().
andEqualTo
(
"userId"
,
userId
).
andEqualTo
(
"isDel"
,
0
);
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
example
.
setOrderByClause
(
"is_default desc"
);
AppUserAlipay
appUserAlipay
=
mapper
.
selectOneByExample
(
example
);
List
<
AppUserAlipay
>
appUserAlipays
=
new
ArrayList
<>();
//支付宝
if
(
appUserAlipay
!=
null
)
{
appUserAlipay
.
setType
(
1
);
appUserAlipays
.
add
(
appUserAlipay
);
}
//微信
// AppUserLogin appUserLogin = appUserLoginBiz.getUserById(userId);
// if(appUserLogin != null && StringUtils.isNotBlank(appUserLogin.getWxOpenid())) {
// AppUserDetail appUserDetail = appUserDetailBiz.getUserByUserid(userId);
// AppUserAlipay wxAppUser = new AppUserAlipay();
// wxAppUser.setType(2);
// wxAppUser.setUserId(userId);
// wxAppUser.setNickname(StringUtils.isEmpty(appUserDetail.getWxNickname())?appUserDetail.getNickname():appUserDetail.getWxNickname());
// wxAppUser.setTxAlipay(appUserLogin.getWxOpenid());
// appUserAlipays.add(wxAppUser);
// }
return
appUserAlipays
;
}
public
void
save
(
AppUserAlipay
appUserAlipay
)
{
Example
example
=
new
Example
(
AppUserAlipay
.
class
);
example
.
createCriteria
().
andEqualTo
(
"userId"
,
appUserAlipay
.
getUserId
()).
andEqualTo
(
"isDel"
,
0
);
example
.
setOrderByClause
(
"is_default desc"
);
AppUserAlipay
oldValue
=
mapper
.
selectOneByExample
(
example
);
if
(
oldValue
!=
null
)
{
BeanUtil
.
copyProperties
(
appUserAlipay
,
oldValue
,
CopyOptions
.
create
().
setIgnoreNullValue
(
true
).
setIgnoreError
(
true
));
updateByIdRe
(
oldValue
);
}
else
{
insertSelectiveRe
(
appUserAlipay
);
}
}
/**
* 支付宝授权获取用户信息
* @param code
* @return
*/
public
ObjectRestResponse
getUserInfo
(
String
code
,
HttpServletRequest
request
)
{
String
username
=
null
;
AppUserAlipay
appUserAlipay
=
new
AppUserAlipay
();
try
{
username
=
userAuthUtil
.
getInfoFromToken
(
userAuthConfig
.
getToken
(
request
)).
getId
();
if
(
StringUtils
.
isBlank
(
username
))
{
return
ObjectRestResponse
.
createFailedResult
(
ResultCode
.
RSTOKEN_EXPIRED_CODE
,
ResultCode
.
getMsg
(
ResultCode
.
RSTOKEN_EXPIRED_CODE
));
}
else
{
appUserAlipay
.
setUserId
(
Integer
.
parseInt
(
username
));
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
if
(
StringUtils
.
isBlank
(
code
))
{
return
ObjectRestResponse
.
paramIsEmpty
();
}
String
result
=
thirdFeign
.
getAliPayUserInfo
(
code
).
getData
();
if
(
StringUtils
.
isNotBlank
(
result
))
{
log
.
info
(
"【支付宝】用户授权获取用户token, {}"
,
result
);
JSONObject
jsonObject
=
JSONObject
.
parseObject
(
result
);
if
(
jsonObject
.
getJSONObject
(
"error_response"
)
==
null
&&
jsonObject
.
getJSONObject
(
"alipay_user_info_share_response"
)
!=
null
)
{
JSONObject
responseObject
=
jsonObject
.
getJSONObject
(
"alipay_user_info_share_response"
);
String
account
=
responseObject
.
getString
(
"user_id"
);
if
(
account
!=
null
)
{
appUserAlipay
.
setTxAlipay
(
account
);
appUserAlipay
.
setCrtTime
(
new
Date
().
getTime
());
appUserAlipay
.
setIsDel
(
0
);
}
String
nickname
=
responseObject
.
getString
(
"nick_name"
);
if
(
nickname
!=
null
)
{
appUserAlipay
.
setNickname
(
nickname
);
}
log
.
info
(
"用户支付宝信息: {}"
,
appUserAlipay
.
toString
());
save
(
appUserAlipay
);
return
ObjectRestResponse
.
succ
(
appUserAlipay
.
getNickname
());
}
else
{
return
ObjectRestResponse
.
createFailedResult
(
Integer
.
parseInt
(
jsonObject
.
getJSONObject
(
"error_response"
).
getString
(
"code"
)),
jsonObject
.
getJSONObject
(
"error_response"
).
getString
(
"sub_msg"
));
}
}
return
ObjectRestResponse
.
createDefaultFail
();
}
}
\ No newline at end of file
ace-modules/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/biz/AppUserDetailBiz.java
View file @
25ea6021
...
...
@@ -2,6 +2,7 @@ package com.github.wxiaoqi.security.admin.biz;
import
com.ace.cache.annotation.Cache
;
import
com.ace.cache.annotation.CacheClear
;
import
com.github.wxiaoqi.security.admin.dto.AccountBindDTO
;
import
com.github.wxiaoqi.security.admin.entity.AppUserDetail
;
import
com.github.wxiaoqi.security.admin.mapper.AppUserDetailMapper
;
import
com.github.wxiaoqi.security.admin.rpc.service.AppPermissionService
;
...
...
@@ -89,12 +90,15 @@ public class AppUserDetailBiz extends BaseBiz<AppUserDetailMapper, AppUserDetail
@CacheClear
(
pre
=
"user{1.userid}"
)
public
void
updUuserInfoById
(
AppUserVo
userVo
)
{
AppUserDetail
entity
=
new
AppUserDetail
();
Example
example
=
new
Example
(
AppUserDetail
.
class
);
Example
.
Criteria
criteria
=
example
.
createCriteria
();
criteria
.
andEqualTo
(
"userid"
,
userVo
.
getUserid
());
try
{
BeanUtils
.
copyProperties
(
entity
,
userVo
);
if
(
entity
!=
null
)
{
entity
.
setUpdHost
(
AppPermissionService
.
getIp
());
entity
.
setUpdatetime
(
Instant
.
now
().
toEpochMilli
()
/
1000L
);
super
.
updateSelectiveById
(
entity
);
mapper
.
updateByExampleSelective
(
entity
,
example
);
}
}
catch
(
Exception
e
)
{
...
...
@@ -149,4 +153,18 @@ public class AppUserDetailBiz extends BaseBiz<AppUserDetailMapper, AppUserDetail
return
mapper
.
getUserIdByUsername
(
keywords
);
}
public
void
updateByUserId
(
AccountBindDTO
accountBindDTO
,
Integer
userId
)
{
AppUserDetail
appUserDetail
=
new
AppUserDetail
();
if
(
accountBindDTO
.
getType
().
equals
(
"wx"
)){
appUserDetail
.
setWxNickname
(
accountBindDTO
.
getNickName
());
}
if
(
accountBindDTO
.
getType
().
equals
(
"q"
)){
appUserDetail
.
setQqNickname
(
accountBindDTO
.
getNickName
());
}
Example
example
=
new
Example
(
AppUserDetail
.
class
);
Example
.
Criteria
criteria
=
example
.
createCriteria
();
criteria
.
andEqualTo
(
"userid"
,
userId
);
mapper
.
updateByExampleSelective
(
appUserDetail
,
example
);
}
}
ace-modules/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/biz/AppUserLoginBiz.java
View file @
25ea6021
...
...
@@ -2,21 +2,19 @@ package com.github.wxiaoqi.security.admin.biz;
import
com.ace.cache.annotation.Cache
;
import
com.ace.cache.annotation.CacheClear
;
import
com.alibaba.druid.sql.visitor.functions.If
;
import
com.alibaba.fastjson.JSONObject
;
import
com.github.wxiaoqi.security.admin.
entity.AppUserDetail
;
import
com.github.wxiaoqi.security.admin.
dto.AccountBindDTO
;
import
com.github.wxiaoqi.security.admin.entity.AppUserLogin
;
import
com.github.wxiaoqi.security.admin.mapper.AppUserLoginMapper
;
import
com.github.wxiaoqi.security.common.biz.BaseBiz
;
import
com.github.wxiaoqi.security.common.config.rabbit.RabbitConstant
;
import
com.github.wxiaoqi.security.common.constant.UserConstant
;
import
com.g
oogle.common.collect.Lists
;
import
com.
xxfc.platform.im.utils.StringUtil
;
import
com.g
ithub.wxiaoqi.security.common.exception.BaseException
;
import
com.
github.wxiaoqi.security.common.msg.ObjectRestResponse
;
import
com.xxfc.platform.universal.entity.IdInformation
;
import
com.xxfc.platform.universal.feign.MQSenderFeign
;
import
com.xxfc.platform.universal.feign.ThirdFeign
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder
;
import
org.springframework.stereotype.Service
;
...
...
@@ -24,6 +22,7 @@ import org.springframework.transaction.annotation.Propagation;
import
org.springframework.transaction.annotation.Transactional
;
import
tk.mybatis.mapper.entity.Example
;
import
javax.servlet.http.HttpServletRequest
;
import
java.time.Instant
;
import
java.util.HashMap
;
import
java.util.List
;
...
...
@@ -45,6 +44,7 @@ public class AppUserLoginBiz extends BaseBiz<AppUserLoginMapper, AppUserLogin> {
private
static
final
String
WX_TYPE
=
"wx"
;
private
static
final
String
QQ_TYPE
=
"q"
;
private
static
final
String
ALIPAY_TYPE
=
"aliPay"
;
@Autowired
ThirdFeign
thirdFeign
;
...
...
@@ -54,6 +54,9 @@ public class AppUserLoginBiz extends BaseBiz<AppUserLoginMapper, AppUserLogin> {
@Autowired
AppUserDetailBiz
appUserDetailBiz
;
@Autowired
private
AppUserAlipayBiz
appUserAlipayBiz
;
@Transactional
(
rollbackFor
=
Exception
.
class
,
propagation
=
Propagation
.
REQUIRED
)
@Override
public
void
insertSelective
(
AppUserLogin
entity
)
{
...
...
@@ -321,9 +324,77 @@ public class AppUserLoginBiz extends BaseBiz<AppUserLoginMapper, AppUserLogin> {
}
public
List
<
AppUserLogin
>
getUserByUsernameAndRealName
(
String
username
,
String
realName
)
{
return
mapper
.
getUserByUsernameAndRealName
(
username
,
realName
);
return
mapper
.
getUserByUsernameAndRealName
(
username
,
realName
);
}
@CacheClear
(
pre
=
"user{2}"
)
public
ObjectRestResponse
bindAccount
(
AccountBindDTO
accountBindDTO
,
Integer
userId
,
HttpServletRequest
request
)
{
switch
(
accountBindDTO
.
getType
())
{
case
WX_TYPE:
wxBinding
(
accountBindDTO
,
userId
);
break
;
case
QQ_TYPE:
qqBinding
(
accountBindDTO
,
userId
);
break
;
case
ALIPAY_TYPE:
return
appUserAlipayBiz
.
getUserInfo
(
accountBindDTO
.
getCode
(),
request
);
default
:
break
;
}
return
ObjectRestResponse
.
succ
(
accountBindDTO
.
getNickName
());
}
/**
* 微信绑定
*
* @param accountBindDTO
*/
private
void
wxBinding
(
AccountBindDTO
accountBindDTO
,
Integer
userId
)
{
//检查微信是否绑定
/* Example example = new Example(AppUserLogin.class);
Example.Criteria criteria = example.createCriteria();
criteria.andEqualTo("id", userId);
criteria.andEqualTo("wxOpenid", accountBindDTO.getOpendId());
List<AppUserLogin> appUserLogins = mapper.selectByExample(example);
if (CollectionUtils.isNotEmpty(appUserLogins)) {
throw new BaseException("该微信已经绑定过了");
}*/
AppUserLogin
appUserLogin
=
new
AppUserLogin
();
appUserLogin
.
setId
(
userId
);
appUserLogin
.
setWxOpenid
(
accountBindDTO
.
getOpenId
());
appUserLogin
.
setUnionid
(
accountBindDTO
.
getUnionId
());
mapper
.
updateByPrimaryKeySelective
(
appUserLogin
);
appUserDetailBiz
.
updateByUserId
(
accountBindDTO
,
userId
);
}
/**
* QQ绑定
*
* @param accountBindDTO
*/
private
void
qqBinding
(
AccountBindDTO
accountBindDTO
,
Integer
userId
)
{
//检查qq是否绑定
/* Example example = new Example(AppUserLogin.class);
Example.Criteria criteria = example.createCriteria();
criteria.andEqualTo("id", userId);
criteria.andEqualTo("openid", accountBindDTO.getOpendId());
List<AppUserLogin> appUserLogins = mapper.selectByExample(example);
if (CollectionUtils.isNotEmpty(appUserLogins)) {
throw new BaseException("该qq已经绑定过了");
}*/
AppUserLogin
appUserLogin
=
new
AppUserLogin
();
appUserLogin
.
setId
(
userId
);
appUserLogin
.
setOpenid
(
accountBindDTO
.
getOpenId
());
mapper
.
updateByPrimaryKeySelective
(
appUserLogin
);
appUserDetailBiz
.
updateByUserId
(
accountBindDTO
,
userId
);
}
public
void
updateAppuserLogin
(
AppUserLogin
appUserLogin
)
{
appUserLogin
.
setUpdatetime
(
Instant
.
now
().
getEpochSecond
());
mapper
.
updateByPrimaryKeySelective
(
appUserLogin
);
}
}
ace-modules/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/rest/AppUserController.java
View file @
25ea6021
package
com
.
github
.
wxiaoqi
.
security
.
admin
.
rest
;
import
com.github.wxiaoqi.security.admin.biz.*
;
import
com.github.wxiaoqi.security.admin.dto.AccountBindDTO
;
import
com.github.wxiaoqi.security.admin.entity.*
;
import
com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO
;
import
com.github.wxiaoqi.security.admin.vo.AppUserGroups
;
...
...
@@ -22,6 +23,8 @@ import com.xxfc.platform.order.feign.OrderFeign;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.beanutils.BeanUtils
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
...
...
@@ -69,6 +72,9 @@ public class AppUserController extends CommonBaseController{
@Autowired
private
OrderFeign
orderFeign
;
@Autowired
private
AppUserAlipayBiz
appUserAlipayBiz
;
@GetMapping
(
"page"
)
...
...
@@ -140,7 +146,7 @@ public class AppUserController extends CommonBaseController{
throw
new
Exception
();
}
Integer
id
=
userVo
.
getId
();
Integer
positionId
=
userVo
.
getPositionId
();
Integer
positionId
=
userVo
.
getPositionId
();
BeanUtils
.
copyProperties
(
userDTO
,
userVo
);
if
(
userVo
.
getIsMember
()!=
null
&&
userVo
.
getIsMember
()>
0
){
//获取用户会员信息
...
...
@@ -154,7 +160,6 @@ public class AppUserController extends CommonBaseController{
String
icon
=
memberLevel
.
getIcon
();
userDTO
.
setIcon
(
icon
);
userDTO
.
setBigIcon
(
memberLevel
.
getBigIcon
());
userDTO
.
setItemImg
(
memberLevel
.
getItemImg
());
}
}
}
...
...
@@ -162,7 +167,14 @@ public class AppUserController extends CommonBaseController{
if
(
userPosition
!=
null
&&
userPosition
.
getLevel
()>
0
){
userDTO
.
setPositionName
(
userPosition
.
getName
());
}
List
<
AppUserAlipay
>
appUserAlipays
=
appUserAlipayBiz
.
getByUserId
(
request
);
long
count
=
appUserAlipays
.
stream
().
filter
(
appUserAlipay
->
appUserAlipay
.
getType
()
==
1
).
count
();
userDTO
.
setIsBindAliPay
(
count
>
0
);
userDTO
.
setId
(
id
);
userDTO
.
setAliPayNickName
(
userDTO
.
getIsBindAliPay
()?
appUserAlipays
.
get
(
0
).
getNickname
():
""
);
AppUserLogin
appUserLogin
=
appUserLoginBiz
.
selectById
(
userid
);
userDTO
.
setIsBindWx
(
StringUtils
.
isNotEmpty
(
appUserLogin
.
getWxOpenid
()));
userDTO
.
setIsBindQQ
(
StringUtils
.
isNotEmpty
(
appUserLogin
.
getOpenid
()));
return
ObjectRestResponse
.
succ
(
userDTO
);
}
...
...
@@ -200,10 +212,9 @@ public class AppUserController extends CommonBaseController{
* @throws Exception
*/
@PostMapping
(
"/edit"
)
public
ObjectRestResponse
edit
(
@RequestBody
AppUserVo
userVo
)
throws
Exception
{
if
(
userVo
==
null
||
userVo
.
getId
()==
null
){
return
ObjectRestResponse
.
createFailedResult
(
ResultCode
.
NULL_CODE
,
"参数为空"
);
}
public
ObjectRestResponse
edit
(
@RequestBody
AppUserVo
userVo
,
HttpServletRequest
request
)
throws
Exception
{
String
id
=
userAuthUtil
.
getInfoFromToken
(
userAuthConfig
.
getToken
(
request
)).
getId
();
userVo
.
setUserid
(
Integer
.
valueOf
(
id
));
userDetailBiz
.
updUuserInfoById
(
userVo
);
Integer
userid
=
userVo
.
getUserid
();
if
(
userid
!=
null
){
...
...
@@ -213,8 +224,13 @@ public class AppUserController extends CommonBaseController{
appUserLogin
.
setOpenid
(
userVo
.
getOpenid
());
appUserLogin
.
setId
(
userid
);
appUserLogin
.
setUsername
(
userVo
.
getUsername
());
appUserLoginBiz
.
bindOpenid
(
appUserLogin
);
appUserLoginBiz
.
updateAppuserLogin
(
appUserLogin
);
//支付宝绑定
if
(
StringUtils
.
isNotEmpty
(
userVo
.
getAliCode
())
&&
userVo
.
getAliCode
().
trim
().
length
()>
0
){
appUserAlipayBiz
.
getUserInfo
(
userVo
.
getAliCode
(),
request
);
}
}
return
ObjectRestResponse
.
succ
();
}
...
...
@@ -291,7 +307,7 @@ public class AppUserController extends CommonBaseController{
}
@GetMapping
(
"/findusersByIds"
)
public
Map
<
Integer
,
AppUserLogin
>
findAppUsersByUserIds
(
@RequestParam
(
value
=
"userIds"
)
List
<
Integer
>
userIds
){
return
appUserLoginBiz
.
findUserIdAndUserLoginMapByMemberIds
(
userIds
);
return
appUserLoginBiz
.
findUserIdAndUserLoginMapByMemberIds
(
userIds
);
}
@GetMapping
(
"/finduserIdsByphones"
)
...
...
@@ -303,8 +319,8 @@ public class AppUserController extends CommonBaseController{
@IgnoreUserToken
@IgnoreClientToken
public
ObjectRestResponse
<
AppUserInfoVo
>
findUserInfoByCode
(
@PathVariable
(
"code"
)
String
code
){
AppUserInfoVo
appUserInfoVo
=
userDetailBiz
.
findUserInfoByCode
(
code
);
return
ObjectRestResponse
.
succ
(
appUserInfoVo
);
AppUserInfoVo
appUserInfoVo
=
userDetailBiz
.
findUserInfoByCode
(
code
);
return
ObjectRestResponse
.
succ
(
appUserInfoVo
);
}
@GetMapping
(
"/app/unauth/getUserIdByUsername"
)
...
...
@@ -321,4 +337,14 @@ public class AppUserController extends CommonBaseController{
public
Object
test
()
{
return
appUserLoginBiz
.
test
();
}
@PostMapping
(
"/bind"
)
private
ObjectRestResponse
accountBinding
(
@RequestBody
AccountBindDTO
accountBindDTO
,
HttpServletRequest
request
){
try
{
IJWTInfo
infoFromToken
=
userAuthUtil
.
getInfoFromToken
(
userAuthConfig
.
getToken
(
request
));
return
appUserLoginBiz
.
bindAccount
(
accountBindDTO
,
Integer
.
valueOf
(
infoFromToken
.
getId
()),
request
);
}
catch
(
Exception
ex
){
throw
new
BaseException
(
ex
);
}
}
}
ace-modules/ace-admin/src/main/resources/mapper/AppUserDetailMapper.xml
View file @
25ea6021
...
...
@@ -14,6 +14,8 @@
<result
column=
"certification_status"
property=
"certificationStatus"
/>
<result
column=
"is_member"
property=
"isMember"
/>
<result
column=
"nickname"
property=
"nickname"
/>
<result
column=
"wx_nickname"
property=
"wxNickname"
/>
<result
column=
"qq_nickname"
property=
"qqNickname"
/>
<result
column=
"realname"
property=
"realname"
/>
<result
column=
"headimgurl"
property=
"headimgurl"
/>
<result
column=
"birthday"
property=
"birthday"
/>
...
...
xx-universal/xx-universal-api/src/main/java/com/xxfc/platform/universal/feign/ThirdFeign.java
View file @
25ea6021
...
...
@@ -5,10 +5,7 @@ import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import
com.xxfc.platform.universal.dto.SmsTemplateDTO
;
import
com.xxfc.platform.universal.entity.Dictionary
;
import
com.xxfc.platform.universal.entity.IdInformation
;
import
com.xxfc.platform.universal.vo.OrderPayVo
;
import
com.xxfc.platform.universal.vo.OrderRefundVo
;
import
com.xxfc.platform.universal.vo.TrafficViolations
;
import
com.xxfc.platform.universal.vo.ViolationVO
;
import
com.xxfc.platform.universal.vo.*
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.multipart.MultipartFile
;
...
...
@@ -83,4 +80,8 @@ public interface ThirdFeign {
public
ObjectRestResponse
<
List
<
ViolationVO
>>
getRentViolation
(
@RequestParam
(
value
=
"rentViolationDTO"
)
Map
<
String
,
Object
>
rentViolationDTO
);
/*************************************支付***************************************/
@GetMapping
(
"/info/app/unauth/getAliPayUserInfo"
)
public
ObjectRestResponse
<
String
>
getAliPayUserInfo
(
@RequestParam
(
value
=
"code"
)
String
code
);
}
xx-universal/xx-universal-api/src/main/java/com/xxfc/platform/universal/utils/Base64.java
0 → 100644
View file @
25ea6021
package
com
.
xxfc
.
platform
.
universal
.
utils
;
public
final
class
Base64
{
private
static
final
int
BASELENGTH
=
128
;
private
static
final
int
LOOKUPLENGTH
=
64
;
private
static
final
int
TWENTYFOURBITGROUP
=
24
;
private
static
final
int
EIGHTBIT
=
8
;
private
static
final
int
SIXTEENBIT
=
16
;
private
static
final
int
FOURBYTE
=
4
;
private
static
final
int
SIGN
=
-
128
;
private
static
char
PAD
=
'='
;
private
static
byte
[]
base64Alphabet
=
new
byte
[
BASELENGTH
];
private
static
char
[]
lookUpBase64Alphabet
=
new
char
[
LOOKUPLENGTH
];
static
{
for
(
int
i
=
0
;
i
<
BASELENGTH
;
++
i
)
{
base64Alphabet
[
i
]
=
-
1
;
}
for
(
int
i
=
'Z'
;
i
>=
'A'
;
i
--)
{
base64Alphabet
[
i
]
=
(
byte
)
(
i
-
'A'
);
}
for
(
int
i
=
'z'
;
i
>=
'a'
;
i
--)
{
base64Alphabet
[
i
]
=
(
byte
)
(
i
-
'a'
+
26
);
}
for
(
int
i
=
'9'
;
i
>=
'0'
;
i
--)
{
base64Alphabet
[
i
]
=
(
byte
)
(
i
-
'0'
+
52
);
}
base64Alphabet
[
'+'
]
=
62
;
base64Alphabet
[
'/'
]
=
63
;
for
(
int
i
=
0
;
i
<=
25
;
i
++)
{
lookUpBase64Alphabet
[
i
]
=
(
char
)
(
'A'
+
i
);
}
for
(
int
i
=
26
,
j
=
0
;
i
<=
51
;
i
++,
j
++)
{
lookUpBase64Alphabet
[
i
]
=
(
char
)
(
'a'
+
j
);
}
for
(
int
i
=
52
,
j
=
0
;
i
<=
61
;
i
++,
j
++)
{
lookUpBase64Alphabet
[
i
]
=
(
char
)
(
'0'
+
j
);
}
lookUpBase64Alphabet
[
62
]
=
(
char
)
'+'
;
lookUpBase64Alphabet
[
63
]
=
(
char
)
'/'
;
}
private
static
boolean
isWhiteSpace
(
char
octect
)
{
return
(
octect
==
0x20
||
octect
==
0xd
||
octect
==
0xa
||
octect
==
0x9
);
}
private
static
boolean
isPad
(
char
octect
)
{
return
(
octect
==
PAD
);
}
private
static
boolean
isData
(
char
octect
)
{
return
(
octect
<
BASELENGTH
&&
base64Alphabet
[
octect
]
!=
-
1
);
}
/**
* Encodes hex octects into Base64
*
* @param binaryData
* Array containing binaryData
* @return Encoded Base64 array
*/
public
static
String
encode
(
byte
[]
binaryData
)
{
if
(
binaryData
==
null
)
{
return
null
;
}
int
lengthDataBits
=
binaryData
.
length
*
EIGHTBIT
;
if
(
lengthDataBits
==
0
)
{
return
""
;
}
int
fewerThan24bits
=
lengthDataBits
%
TWENTYFOURBITGROUP
;
int
numberTriplets
=
lengthDataBits
/
TWENTYFOURBITGROUP
;
int
numberQuartet
=
fewerThan24bits
!=
0
?
numberTriplets
+
1
:
numberTriplets
;
char
encodedData
[]
=
null
;
encodedData
=
new
char
[
numberQuartet
*
4
];
byte
k
=
0
,
l
=
0
,
b1
=
0
,
b2
=
0
,
b3
=
0
;
int
encodedIndex
=
0
;
int
dataIndex
=
0
;
for
(
int
i
=
0
;
i
<
numberTriplets
;
i
++)
{
b1
=
binaryData
[
dataIndex
++];
b2
=
binaryData
[
dataIndex
++];
b3
=
binaryData
[
dataIndex
++];
l
=
(
byte
)
(
b2
&
0x0f
);
k
=
(
byte
)
(
b1
&
0x03
);
byte
val1
=
((
b1
&
SIGN
)
==
0
)
?
(
byte
)
(
b1
>>
2
)
:
(
byte
)
((
b1
)
>>
2
^
0xc0
);
byte
val2
=
((
b2
&
SIGN
)
==
0
)
?
(
byte
)
(
b2
>>
4
)
:
(
byte
)
((
b2
)
>>
4
^
0xf0
);
byte
val3
=
((
b3
&
SIGN
)
==
0
)
?
(
byte
)
(
b3
>>
6
)
:
(
byte
)
((
b3
)
>>
6
^
0xfc
);
encodedData
[
encodedIndex
++]
=
lookUpBase64Alphabet
[
val1
];
encodedData
[
encodedIndex
++]
=
lookUpBase64Alphabet
[
val2
|
(
k
<<
4
)];
encodedData
[
encodedIndex
++]
=
lookUpBase64Alphabet
[(
l
<<
2
)
|
val3
];
encodedData
[
encodedIndex
++]
=
lookUpBase64Alphabet
[
b3
&
0x3f
];
}
// form integral number of 6-bit groups
if
(
fewerThan24bits
==
EIGHTBIT
)
{
b1
=
binaryData
[
dataIndex
];
k
=
(
byte
)
(
b1
&
0x03
);
byte
val1
=
((
b1
&
SIGN
)
==
0
)
?
(
byte
)
(
b1
>>
2
)
:
(
byte
)
((
b1
)
>>
2
^
0xc0
);
encodedData
[
encodedIndex
++]
=
lookUpBase64Alphabet
[
val1
];
encodedData
[
encodedIndex
++]
=
lookUpBase64Alphabet
[
k
<<
4
];
encodedData
[
encodedIndex
++]
=
PAD
;
encodedData
[
encodedIndex
++]
=
PAD
;
}
else
if
(
fewerThan24bits
==
SIXTEENBIT
)
{
b1
=
binaryData
[
dataIndex
];
b2
=
binaryData
[
dataIndex
+
1
];
l
=
(
byte
)
(
b2
&
0x0f
);
k
=
(
byte
)
(
b1
&
0x03
);
byte
val1
=
((
b1
&
SIGN
)
==
0
)
?
(
byte
)
(
b1
>>
2
)
:
(
byte
)
((
b1
)
>>
2
^
0xc0
);
byte
val2
=
((
b2
&
SIGN
)
==
0
)
?
(
byte
)
(
b2
>>
4
)
:
(
byte
)
((
b2
)
>>
4
^
0xf0
);
encodedData
[
encodedIndex
++]
=
lookUpBase64Alphabet
[
val1
];
encodedData
[
encodedIndex
++]
=
lookUpBase64Alphabet
[
val2
|
(
k
<<
4
)];
encodedData
[
encodedIndex
++]
=
lookUpBase64Alphabet
[
l
<<
2
];
encodedData
[
encodedIndex
++]
=
PAD
;
}
return
new
String
(
encodedData
);
}
/**
* Decodes Base64 data into octects
*
* @param encoded
* string containing Base64 data
* @return Array containind decoded data.
*/
public
static
byte
[]
decode
(
String
encoded
)
{
if
(
encoded
==
null
)
{
return
null
;
}
char
[]
base64Data
=
encoded
.
toCharArray
();
// remove white spaces
int
len
=
removeWhiteSpace
(
base64Data
);
if
(
len
%
FOURBYTE
!=
0
)
{
return
null
;
// should be divisible by four
}
int
numberQuadruple
=
(
len
/
FOURBYTE
);
if
(
numberQuadruple
==
0
)
{
return
new
byte
[
0
];
}
byte
decodedData
[]
=
null
;
byte
b1
=
0
,
b2
=
0
,
b3
=
0
,
b4
=
0
;
char
d1
=
0
,
d2
=
0
,
d3
=
0
,
d4
=
0
;
int
i
=
0
;
int
encodedIndex
=
0
;
int
dataIndex
=
0
;
decodedData
=
new
byte
[(
numberQuadruple
)
*
3
];
for
(;
i
<
numberQuadruple
-
1
;
i
++)
{
if
(!
isData
((
d1
=
base64Data
[
dataIndex
++]))
||
!
isData
((
d2
=
base64Data
[
dataIndex
++]))
||
!
isData
((
d3
=
base64Data
[
dataIndex
++]))
||
!
isData
((
d4
=
base64Data
[
dataIndex
++])))
{
return
null
;
}
// if found "no data" just return null
b1
=
base64Alphabet
[
d1
];
b2
=
base64Alphabet
[
d2
];
b3
=
base64Alphabet
[
d3
];
b4
=
base64Alphabet
[
d4
];
decodedData
[
encodedIndex
++]
=
(
byte
)
(
b1
<<
2
|
b2
>>
4
);
decodedData
[
encodedIndex
++]
=
(
byte
)
(((
b2
&
0xf
)
<<
4
)
|
((
b3
>>
2
)
&
0xf
));
decodedData
[
encodedIndex
++]
=
(
byte
)
(
b3
<<
6
|
b4
);
}
if
(!
isData
((
d1
=
base64Data
[
dataIndex
++]))
||
!
isData
((
d2
=
base64Data
[
dataIndex
++])))
{
return
null
;
// if found "no data" just return null
}
b1
=
base64Alphabet
[
d1
];
b2
=
base64Alphabet
[
d2
];
d3
=
base64Data
[
dataIndex
++];
d4
=
base64Data
[
dataIndex
++];
if
(!
isData
((
d3
))
||
!
isData
((
d4
)))
{
// Check if they are PAD characters
if
(
isPad
(
d3
)
&&
isPad
(
d4
))
{
if
((
b2
&
0xf
)
!=
0
)
// last 4 bits should be zero
{
return
null
;
}
byte
[]
tmp
=
new
byte
[
i
*
3
+
1
];
System
.
arraycopy
(
decodedData
,
0
,
tmp
,
0
,
i
*
3
);
tmp
[
encodedIndex
]
=
(
byte
)
(
b1
<<
2
|
b2
>>
4
);
return
tmp
;
}
else
if
(!
isPad
(
d3
)
&&
isPad
(
d4
))
{
b3
=
base64Alphabet
[
d3
];
if
((
b3
&
0x3
)
!=
0
)
// last 2 bits should be zero
{
return
null
;
}
byte
[]
tmp
=
new
byte
[
i
*
3
+
2
];
System
.
arraycopy
(
decodedData
,
0
,
tmp
,
0
,
i
*
3
);
tmp
[
encodedIndex
++]
=
(
byte
)
(
b1
<<
2
|
b2
>>
4
);
tmp
[
encodedIndex
]
=
(
byte
)
(((
b2
&
0xf
)
<<
4
)
|
((
b3
>>
2
)
&
0xf
));
return
tmp
;
}
else
{
return
null
;
}
}
else
{
// No PAD e.g 3cQl
b3
=
base64Alphabet
[
d3
];
b4
=
base64Alphabet
[
d4
];
decodedData
[
encodedIndex
++]
=
(
byte
)
(
b1
<<
2
|
b2
>>
4
);
decodedData
[
encodedIndex
++]
=
(
byte
)
(((
b2
&
0xf
)
<<
4
)
|
((
b3
>>
2
)
&
0xf
));
decodedData
[
encodedIndex
++]
=
(
byte
)
(
b3
<<
6
|
b4
);
}
return
decodedData
;
}
/**
* remove WhiteSpace from MIME containing encoded Base64 data.
*
* @param data
* the byte array of base64 data (with WS)
* @return the new length
*/
private
static
int
removeWhiteSpace
(
char
[]
data
)
{
if
(
data
==
null
)
{
return
0
;
}
// count characters that's not whitespace
int
newSize
=
0
;
int
len
=
data
.
length
;
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
if
(!
isWhiteSpace
(
data
[
i
]))
{
data
[
newSize
++]
=
data
[
i
];
}
}
return
newSize
;
}
}
xx-universal/xx-universal-api/src/main/java/com/xxfc/platform/universal/utils/SignUtils.java
0 → 100644
View file @
25ea6021
package
com
.
xxfc
.
platform
.
universal
.
utils
;
import
java.security.KeyFactory
;
import
java.security.PrivateKey
;
import
java.security.spec.PKCS8EncodedKeySpec
;
public
class
SignUtils
{
private
static
final
String
ALGORITHM
=
"RSA"
;
private
static
final
String
SIGN_ALGORITHMS
=
"SHA1WithRSA"
;
private
static
final
String
SIGN_SHA256RSA_ALGORITHMS
=
"SHA256WithRSA"
;
private
static
final
String
DEFAULT_CHARSET
=
"UTF-8"
;
private
static
String
getAlgorithms
(
boolean
rsa2
)
{
return
rsa2
?
SIGN_SHA256RSA_ALGORITHMS
:
SIGN_ALGORITHMS
;
}
public
static
String
sign
(
String
content
,
String
privateKey
,
boolean
rsa2
)
{
try
{
PKCS8EncodedKeySpec
priPKCS8
=
new
PKCS8EncodedKeySpec
(
Base64
.
decode
(
privateKey
));
KeyFactory
keyf
=
KeyFactory
.
getInstance
(
ALGORITHM
);
PrivateKey
priKey
=
keyf
.
generatePrivate
(
priPKCS8
);
java
.
security
.
Signature
signature
=
java
.
security
.
Signature
.
getInstance
(
getAlgorithms
(
rsa2
));
signature
.
initSign
(
priKey
);
signature
.
update
(
content
.
getBytes
(
DEFAULT_CHARSET
));
byte
[]
signed
=
signature
.
sign
();
return
Base64
.
encode
(
signed
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
null
;
}
}
xx-universal/xx-universal-server/src/main/java/com/xxfc/platform/universal/biz/OrderPayBiz.java
View file @
25ea6021
...
...
@@ -15,12 +15,14 @@ import com.github.wxiaoqi.security.common.config.rabbit.RabbitConstant;
import
com.github.wxiaoqi.security.common.msg.ObjectRestResponse
;
import
com.github.wxiaoqi.security.common.util.HTTPSUtils
;
import
com.github.wxiaoqi.security.common.util.OrderUtil
;
import
com.github.wxiaoqi.security.common.util.UUIDUtils
;
import
com.github.wxiaoqi.security.common.util.process.ResultCode
;
import
com.github.wxiaoqi.security.common.util.process.SystemConfig
;
import
com.github.wxiaoqi.security.common.util.result.JsonResultUtil
;
import
com.xxfc.platform.universal.entity.Dictionary
;
import
com.xxfc.platform.universal.entity.OrderPay
;
import
com.xxfc.platform.universal.mapper.OrderPayMapper
;
import
com.xxfc.platform.universal.utils.SignUtils
;
import
com.xxfc.platform.universal.vo.OrderPayVo
;
import
com.xxfc.platform.universal.weixin.api.WXPay
;
import
com.xxfc.platform.universal.weixin.util.HTTPUtils
;
...
...
@@ -370,6 +372,82 @@ public class OrderPayBiz extends BaseBiz<OrderPayMapper, OrderPay> {
}
}
/**
* 支付宝授权获取用户信息
* @param code
* @return
* @throws AlipayApiException
*/
public
String
getAlipayToken
(
String
code
)
throws
AlipayApiException
{
AlipayClient
alipayClient
=
getAlipayClient
();
AlipaySystemOauthTokenRequest
request
=
new
AlipaySystemOauthTokenRequest
();
request
.
setGrantType
(
"authorization_code"
);
request
.
setCode
(
code
);
AlipaySystemOauthTokenResponse
response
=
alipayClient
.
execute
(
request
);
if
(
response
.
isSuccess
()){
log
.
info
(
"获取用户token调用成功,获取用户信息 {}"
,
response
.
getBody
());
if
(
response
.
getAccessToken
()
!=
null
)
{
AlipayUserInfoShareRequest
alipayUserInfoShareRequest
=
new
AlipayUserInfoShareRequest
();
AlipayUserInfoShareResponse
alipayUserInfoShareResponse
=
alipayClient
.
execute
(
alipayUserInfoShareRequest
,
response
.
getAccessToken
());
if
(
alipayUserInfoShareResponse
.
isSuccess
()){
log
.
info
(
"获取用户支付宝信息调用成功, {}"
,
alipayUserInfoShareResponse
.
getBody
());
return
alipayUserInfoShareResponse
.
getBody
();
}
else
{
log
.
info
(
"获取用户支付宝信息调用失败, {}"
,
alipayUserInfoShareResponse
.
getBody
());
}
}
}
else
{
log
.
info
(
"获取用户token调用失败, {}"
,
response
.
getBody
());
}
return
response
.
getBody
();
}
public
String
generateAliPayInfo
(
String
apiName
,
String
appName
)
{
//apiname=com.alipay.account.auth&app_id=xxxxx&app_name=mc&auth_type=AUTHACCOUNT&biz_type=openservice&method=alipay.open.auth.sdk.code.get&pid=xxxxx&product_id=APP_FAST_LOGIN&scope=kuaijie&sign_type=RSA2&target_id=20141225xxxx&sign=fMcp4GtiM6rxSIeFnJCVePJKV43eXrUP86CQgiLhDHH2u%2FdN75eEvmywc2ulkm7qKRetkU9fbVZtJIqFdMJcJ9Yp%2BJI%2FF%2FpESafFR6rB2fRjiQQLGXvxmDGVMjPSxHxVtIqpZy5FDoKUSjQ2%2FILDKpu3%2F%2BtAtm2jRw1rUoMhgt0%3D
StringBuilder
stringBuilder
=
new
StringBuilder
();
stringBuilder
.
append
(
"apiname="
);
stringBuilder
.
append
(
apiName
);
stringBuilder
.
append
(
"&app_id="
);
stringBuilder
.
append
(
SystemConfig
.
ALIPAY_APPID
);
stringBuilder
.
append
(
"&app_name="
);
stringBuilder
.
append
(
appName
);
stringBuilder
.
append
(
"&auth_type=AUTHACCOUNT"
);
stringBuilder
.
append
(
"&biz_type=openservice"
);
stringBuilder
.
append
(
"&method=alipay.open.auth.sdk.code.get"
);
stringBuilder
.
append
(
"&pid="
);
stringBuilder
.
append
(
SystemConfig
.
ALIPAY_PID
);
stringBuilder
.
append
(
"&product_id=APP_FAST_LOGIN"
);
stringBuilder
.
append
(
"&scope=kuaijie"
);
stringBuilder
.
append
(
"&sign_type=RSA2"
);
stringBuilder
.
append
(
"&target_id="
);
stringBuilder
.
append
(
UUIDUtils
.
generateShortUuid
());
String
sign
=
SignUtils
.
sign
(
stringBuilder
.
toString
(),
SystemConfig
.
ALIPAY_PRIVATE_KEY
,
true
);
stringBuilder
.
append
(
"&sign="
);
stringBuilder
.
append
(
sign
);
return
stringBuilder
.
toString
();
}
public
String
alipayUserAuth
()
throws
AlipayApiException
{
AlipayClient
alipayClient
=
getAlipayClient
();
AlipayUserInfoAuthRequest
request
=
new
AlipayUserInfoAuthRequest
();
request
.
setBizContent
(
"{"
+
" \"scopes\":["
+
" \"auth_base\""
+
" ],"
+
"\"state\":\"init\","
+
"\"is_mobile\":\"true\""
+
" }"
);
AlipayUserInfoAuthResponse
response
=
alipayClient
.
execute
(
request
);
if
(
response
.
isSuccess
()){
System
.
out
.
println
(
"调用成功"
);
}
else
{
System
.
out
.
println
(
"调用失败"
);
}
return
response
.
getBody
();
}
//解冻预授权
public
void
fundAuthOrderUnFreeze
(
AlipayClient
alipayClient
)
throws
AlipayApiException
{
AlipayFundAuthOrderUnfreezeRequest
request
=
new
AlipayFundAuthOrderUnfreezeRequest
();
...
...
xx-universal/xx-universal-server/src/main/java/com/xxfc/platform/universal/controller/UserInfoController.java
View file @
25ea6021
...
...
@@ -4,9 +4,11 @@ package com.xxfc.platform.universal.controller;
import
com.alibaba.fastjson.JSONObject
;
import
com.alipay.api.AlipayApiException
;
import
com.github.wxiaoqi.security.auth.client.annotation.IgnoreUserToken
;
import
com.github.wxiaoqi.security.common.msg.ObjectRestResponse
;
import
com.github.wxiaoqi.security.common.util.UserAgentUtil
;
import
com.xxfc.platform.universal.biz.OrderPayBiz
;
import
com.xxfc.platform.universal.biz.WeixinService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
...
...
@@ -28,6 +30,9 @@ public class UserInfoController {
@Autowired
WeixinService
weixinService
;
@Autowired
OrderPayBiz
orderPayBiz
;
@Value
(
"${wx.sendUrl}"
)
private
String
sendUrl
;
...
...
@@ -51,5 +56,31 @@ public class UserInfoController {
return
ObjectRestResponse
.
succ
();
}
@GetMapping
(
"/app/unauth/getAliPayUserInfo"
)
public
ObjectRestResponse
<
String
>
getAliPayUserInfo
(
String
code
)
{
try
{
return
ObjectRestResponse
.
succ
(
orderPayBiz
.
getAlipayToken
(
code
));
}
catch
(
AlipayApiException
e
)
{
e
.
printStackTrace
();
}
return
ObjectRestResponse
.
createDefaultFail
();
}
@GetMapping
(
"/app/unauth/alipayUserAuth"
)
public
ObjectRestResponse
<
String
>
alipayUserAuth
()
{
try
{
JSONObject
jsonObject
=
JSONObject
.
parseObject
(
orderPayBiz
.
alipayUserAuth
());
return
ObjectRestResponse
.
succ
(
jsonObject
);
}
catch
(
AlipayApiException
e
)
{
e
.
printStackTrace
();
}
return
ObjectRestResponse
.
createDefaultFail
();
}
@GetMapping
(
"/app/unauth/getParam"
)
public
ObjectRestResponse
<
String
>
getParam
(
String
apiName
,
String
appName
)
{
return
ObjectRestResponse
.
succ
(
orderPayBiz
.
generateAliPayInfo
(
apiName
,
appName
));
}
}
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