Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
J
jd-activity
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
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
曾水平
jd-activity
Commits
eeac6fa2
Commit
eeac6fa2
authored
Aug 10, 2022
by
weichaochao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
无用代码去除
parent
0279bc34
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
7 additions
and
541 deletions
+7
-541
Open2LankouController.java
...om/duiba/jdactivity/controller/Open2LankouController.java
+7
-541
No files found.
src/main/java/cn/com/duiba/jdactivity/controller/Open2LankouController.java
View file @
eeac6fa2
package
cn
.
com
.
duiba
.
jdactivity
.
controller
;
package
cn
.
com
.
duiba
.
jdactivity
.
controller
;
import
cn.com.duiba.credits.sdk.CreditTool
;
import
cn.com.duiba.credits.sdk.SignTool
;
import
cn.com.duiba.credits.sdk.SignTool
;
import
cn.com.duiba.jdactivity.common.utils.AESCS7Util
;
import
cn.com.duiba.jdactivity.common.utils.AESCS7Util
;
import
cn.com.duiba.jdactivity.common.utils.RequestTool
;
import
cn.com.duiba.jdactivity.common.utils.UrlUtils
;
import
cn.com.duiba.jdactivity.common.utils.UrlUtils
;
import
cn.com.duiba.jdactivity.common.vo.Result
;
import
cn.com.duiba.jdactivity.common.vo.Result
;
import
cn.com.duiba.jdactivity.common.vo.ResultBuilder
;
import
cn.com.duiba.jdactivity.common.vo.ResultBuilder
;
import
cn.com.duiba.jdactivity.developer.duiba.DuibaAppEnum
;
import
cn.com.duiba.jdactivity.developer.jd.constant.JdAppEnum
;
import
cn.com.duiba.jdactivity.developer.jd.constant.JdAppEnum
;
import
cn.com.duiba.jdactivity.developer.jd.constant.JdShopEnum
;
import
cn.com.duiba.jdactivity.developer.jd.constant.JdTokenSourceEnum
;
import
cn.com.duiba.jdactivity.developer.jd.constant.JdTokenSourceEnum
;
import
cn.com.duiba.jdactivity.developer.jd.utils.AccessTokenUtils
;
import
cn.com.duiba.jdactivity.developer.jd.utils.AccessTokenUtils
;
import
cn.com.duiba.jdactivity.developer.jd.utils.JdApiUtil
;
import
cn.com.duiba.jdactivity.developer.jd.utils.JdApiUtil
;
import
cn.com.duiba.jdactivity.dto.*
;
import
cn.com.duiba.jdactivity.dto.AutologinParam
;
import
cn.com.duiba.jdactivity.dto.TbShopAccessTokenDto
;
import
cn.com.duiba.jdactivity.exception.BizException
;
import
cn.com.duiba.jdactivity.exception.BizException
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.google.common.collect.Maps
;
import
com.jd.open.api.sdk.domain.crm.VenderCustomerClientJsfService.response.getCustomer.EssentialCustomerInfo
;
import
com.jd.open.api.sdk.domain.user.UserRelatedRpcService.response.getUserInfoByOpenId.OAuthUserInfo
;
import
com.jd.open.api.sdk.domain.user.UserRelatedRpcService.response.getUserInfoByOpenId.OAuthUserInfo
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
javax.servlet.http.HttpServletRequest
;
import
java.io.UnsupportedEncodingException
;
import
java.io.UnsupportedEncodingException
;
import
java.net.URLDecoder
;
import
java.net.URLDecoder
;
import
java.net.URLEncoder
;
import
java.net.URLEncoder
;
import
java.util.HashMap
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.Map
;
import
java.util.Objects
;
import
java.util.Optional
;
import
java.util.Optional
;
import
java.util.stream.Collectors
;
/**
/**
* 开放给兰蔻接口
* 开放给兰蔻接口
...
@@ -49,8 +43,6 @@ public class Open2LankouController {
...
@@ -49,8 +43,6 @@ public class Open2LankouController {
public
static
final
String
ENCRYPT_KEY
=
"JuGi3FCECD1dA2BPL1lCWC=="
;
public
static
final
String
ENCRYPT_KEY
=
"JuGi3FCECD1dA2BPL1lCWC=="
;
public
static
final
String
APP_KEY
=
"lankou"
;
public
static
final
String
APP_KEY
=
"lankou"
;
public
static
final
String
APP_SECRET
=
"1ff078fc0c742773"
;
public
static
final
String
APP_SECRET
=
"1ff078fc0c742773"
;
//默认超时或提前5分钟
private
static
final
long
DEFAULT_EXPIRE_TIME
=
5
*
60
*
1000L
;
@Resource
@Resource
private
JdApiUtil
jdApiUtil
;
private
JdApiUtil
jdApiUtil
;
@Resource
@Resource
...
@@ -84,91 +76,6 @@ public class Open2LankouController {
...
@@ -84,91 +76,6 @@ public class Open2LankouController {
return
host
+
path
;
return
host
+
path
;
}
}
/**
* 签名校验
*/
private
static
void
signVerify
(
String
method
)
throws
BizException
{
//后期若多个项目调用可改为注解方式
HttpServletRequest
request
=
RequestTool
.
getHttpServletRequest
();
final
Map
<
String
,
String
>
parameterMap
=
RequestTool
.
getRequestParamMap
(
request
);
LOGGER
.
info
(
method
+
"参数:"
+
JSON
.
toJSONString
(
parameterMap
));
//前后5分钟内有效
String
timestamp
=
request
.
getParameter
(
"timestamp"
);
String
appKey
=
request
.
getParameter
(
"appKey"
);
String
sign
=
request
.
getParameter
(
"sign"
);
DuibaAppEnum
duibaAppEnum
=
DuibaAppEnum
.
getDuibaApp
(
appKey
);
if
(
duibaAppEnum
==
null
)
{
throw
new
BizException
(
"appKey不存在"
);
}
long
clientTimestamp
=
timestamp
==
null
?
0L
:
Long
.
parseLong
(
timestamp
);
long
now
=
System
.
currentTimeMillis
();
if
(
Math
.
abs
(
now
-
clientTimestamp
)
>
DEFAULT_EXPIRE_TIME
)
{
throw
new
BizException
(
String
.
format
(
"请同步服务器与客户端时间为%s分钟之内"
,
DEFAULT_EXPIRE_TIME
));
}
//验签sign
Map
<
String
,
String
>
signMap
=
new
HashMap
<>(
parameterMap
);
signMap
.
remove
(
"sign"
);
signMap
.
put
(
"appSecret"
,
duibaAppEnum
.
getAppSecret
());
String
correctSign
=
SignTool
.
sign
(
signMap
);
boolean
signVerify
=
Objects
.
equals
(
correctSign
,
sign
);
boolean
verify
=
SignTool
.
signVerify
(
duibaAppEnum
.
getAppSecret
(),
request
);
LOGGER
.
info
(
"signVerify={},verify={},correctSign={}"
,
signVerify
,
verify
,
correctSign
);
// 二选一,只要有一个正确就通过
if
(!
signVerify
&&
!
verify
)
{
throw
new
BizException
(
"签名校验不正确"
);
}
}
/**
* 签名校验
*/
private
static
<
T
extends
DuibaUserParam
>
void
signVerify4Post
(
T
param
,
String
method
)
throws
BizException
{
String
jsonString
=
JSON
.
toJSONString
(
param
);
LOGGER
.
info
(
method
+
"参数:"
+
jsonString
);
JSONObject
object
=
JSON
.
parseObject
(
jsonString
);
//前后5分钟内有效
String
timestamp
=
param
.
getTimestamp
();
String
appKey
=
param
.
getAppKey
();
String
sign
=
param
.
getSign
();
DuibaAppEnum
duibaAppEnum
=
DuibaAppEnum
.
getDuibaApp
(
appKey
);
if
(
duibaAppEnum
==
null
)
{
throw
new
BizException
(
"appKey不存在"
);
}
long
clientTimestamp
=
timestamp
==
null
?
0L
:
Long
.
parseLong
(
timestamp
);
long
now
=
System
.
currentTimeMillis
();
if
(
Math
.
abs
(
now
-
clientTimestamp
)
>
DEFAULT_EXPIRE_TIME
)
{
throw
new
BizException
(
String
.
format
(
"请同步服务器与客户端时间为%s分钟之内"
,
DEFAULT_EXPIRE_TIME
));
}
Map
<
String
,
String
>
parameterMap
=
Maps
.
newHashMapWithExpectedSize
(
object
.
size
());
for
(
Map
.
Entry
<
String
,
Object
>
entry
:
object
.
entrySet
())
{
parameterMap
.
put
(
entry
.
getKey
(),
entry
.
getValue
().
toString
());
}
//验签sign
Map
<
String
,
String
>
signMap
=
new
HashMap
<>(
parameterMap
);
signMap
.
remove
(
"sign"
);
signMap
.
put
(
"appSecret"
,
duibaAppEnum
.
getAppSecret
());
String
correctSign
=
SignTool
.
sign
(
signMap
);
boolean
signVerify
=
Objects
.
equals
(
correctSign
,
sign
);
LOGGER
.
info
(
"signVerify={},correctSign={}"
,
signVerify
,
correctSign
);
// 二选一,只要有一个正确就通过
if
(!
signVerify
)
{
throw
new
BizException
(
"签名校验不正确"
);
}
}
/**
/**
* 微信、京东端 用户登陆后跳转到兰蔻
* 微信、京东端 用户登陆后跳转到兰蔻
*
*
...
@@ -209,7 +116,7 @@ public class Open2LankouController {
...
@@ -209,7 +116,7 @@ public class Open2LankouController {
}
}
// 查询是否关注店铺
// 查询是否关注店铺
Result
<
Boolean
>
follow
=
jdApiUtil
.
isFollowByPinAndVid
(
appByAppKey
,
pinByToken
.
getData
(),
shopId
);
Result
<
Boolean
>
follow
=
jdApiUtil
.
isFollowByPinAndVid
(
appByAppKey
,
pinByToken
.
getData
(),
shopId
);
String
autoLogin
=
autologin
(
uid
,
nickName
,
avatar
,
redirectUrl
,
env
,
credits
,
follow
!=
null
?
follow
.
getData
():
false
);
String
autoLogin
=
autologin
(
uid
,
nickName
,
avatar
,
redirectUrl
,
env
,
credits
,
follow
!=
null
?
follow
.
getData
()
:
false
);
LOGGER
.
info
(
"autoLogin={}"
,
autoLogin
);
LOGGER
.
info
(
"autoLogin={}"
,
autoLogin
);
return
ResultBuilder
.
success
(
autoLogin
);
return
ResultBuilder
.
success
(
autoLogin
);
}
catch
(
BizException
e
)
{
}
catch
(
BizException
e
)
{
...
@@ -269,87 +176,6 @@ public class Open2LankouController {
...
@@ -269,87 +176,6 @@ public class Open2LankouController {
return
autoUrl
+
"?data="
+
URLEncoder
.
encode
(
paramsJsonStr
,
"UTF-8"
);
return
autoUrl
+
"?data="
+
URLEncoder
.
encode
(
paramsJsonStr
,
"UTF-8"
);
}
}
public
static
String
paramJson
(
String
paramIn
)
{
paramIn
=
paramIn
.
replaceAll
(
"="
,
"\":\""
);
paramIn
=
paramIn
.
replaceAll
(
"&"
,
"\",\""
);
return
"{\""
+
paramIn
+
"\"}"
;
}
private
void
getDcustom
(
Map
<
String
,
String
>
dcustomParam
,
Map
<
String
,
String
>
autoLoginParam
)
{
//生成dcustom字符串
String
dcustom
=
dcustomParam
.
entrySet
().
stream
()
.
map
(
entry
->
String
.
format
(
"%s=%s"
,
entry
.
getKey
(),
entry
.
getValue
()))
.
collect
(
Collectors
.
joining
(
"&"
));
//encode
String
dcustomStr
=
dcustom
;
try
{
dcustomStr
=
URLEncoder
.
encode
(
dcustom
,
"UTF-8"
);
}
catch
(
UnsupportedEncodingException
e
)
{
LOGGER
.
error
(
"生成dcustom失败,encode数据:{},错误原因:{}"
,
dcustom
,
e
);
}
autoLoginParam
.
put
(
"dcustom"
,
dcustomStr
);
}
/**
* 是否关注店铺
*/
@PostMapping
(
"/isFollowShop"
)
public
Result
<
Boolean
>
isFollowShop
(
@RequestParam
String
uid
,
@RequestParam
Long
shopId
,
@RequestParam
Long
venderId
)
{
try
{
uid
=
uid
.
replaceAll
(
" "
,
"+"
);
signVerify
(
"是否关注店铺"
);
TbShopAccessTokenDto
accessToken
=
accessTokenUtils
.
getAccessTokenWithCache
(
venderId
,
shopId
);
JdAppEnum
appEnum
=
JdAppEnum
.
getAppByAppKey
(
accessToken
.
getAppKey
());
String
pin
=
convert2Pin
(
appEnum
,
accessToken
.
getAccessToken
(),
uid
);
Result
<
Boolean
>
follow
=
jdApiUtil
.
isFollowByPinAndVid
(
appEnum
,
pin
,
shopId
);
LOGGER
.
info
(
"是否关注店铺,follow={},uid={},pin={}"
,
JSON
.
toJSONString
(
follow
),
uid
,
pin
);
return
follow
;
}
catch
(
BizException
e
)
{
return
ResultBuilder
.
fail
(
e
.
getMessage
());
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
"isFollowShop 异常"
,
e
);
return
ResultBuilder
.
fail
(
"发生异常"
);
}
}
public
static
String
convert2Pin
(
JdAppEnum
appByAppKey
,
String
accessToken
,
String
uid
)
throws
BizException
{
try
{
String
pin
=
AESCS7Util
.
AES256Decrypt
(
uid
,
ENCRYPT_KEY
);
LOGGER
.
info
(
"uid解密,pin={},uid={}"
,
pin
,
uid
);
return
pin
;
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
"uid解密失败,uid={}"
,
uid
,
e
);
throw
new
BizException
(
"uid解密失败"
);
}
}
/**
* 关注店铺
*/
@PostMapping
(
"/followShop"
)
public
Result
<
Boolean
>
followShop
(
@RequestParam
String
uid
,
@RequestParam
Long
shopId
,
@RequestParam
Long
venderId
)
{
try
{
uid
=
uid
.
replaceAll
(
" "
,
"+"
);
signVerify
(
"关注店铺"
);
TbShopAccessTokenDto
accessToken
=
accessTokenUtils
.
getAccessTokenWithCache
(
venderId
,
shopId
);
JdAppEnum
appEnum
=
JdAppEnum
.
getAppByAppKey
(
accessToken
.
getAppKey
());
String
pin
=
convert2Pin
(
appEnum
,
accessToken
.
getAccessToken
(),
uid
);
Result
<
Boolean
>
follow
=
jdApiUtil
.
followByPinAndVid
(
appEnum
,
pin
,
shopId
,
accessToken
.
getAccessToken
());
LOGGER
.
info
(
"关注店铺,follow={},uid={},pin={}"
,
JSON
.
toJSONString
(
follow
),
uid
,
pin
);
return
follow
;
}
catch
(
BizException
e
)
{
return
ResultBuilder
.
fail
(
e
.
getMessage
());
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
"isMember 异常"
,
e
);
return
ResultBuilder
.
fail
(
"发生异常"
);
}
}
public
static
String
convert2Uid
(
JdAppEnum
appByAppKey
,
String
accessToken
,
String
pin
)
throws
BizException
{
public
static
String
convert2Uid
(
JdAppEnum
appByAppKey
,
String
accessToken
,
String
pin
)
throws
BizException
{
try
{
try
{
String
uid
=
AESCS7Util
.
AESEncrypt
(
pin
,
ENCRYPT_KEY
);
String
uid
=
AESCS7Util
.
AESEncrypt
(
pin
,
ENCRYPT_KEY
);
...
@@ -361,364 +187,4 @@ public class Open2LankouController {
...
@@ -361,364 +187,4 @@ public class Open2LankouController {
}
}
}
}
/**
* 是否是会员
*/
@PostMapping
(
"/isMember"
)
public
Result
<
Boolean
>
isMember
(
@RequestParam
String
uid
,
@RequestParam
Long
shopId
,
@RequestParam
Long
venderId
)
{
try
{
uid
=
uid
.
replaceAll
(
" "
,
"+"
);
signVerify
(
"是否是会员"
);
TbShopAccessTokenDto
accessToken
=
accessTokenUtils
.
getAccessTokenWithCache
(
venderId
,
shopId
);
JdAppEnum
appEnum
=
JdAppEnum
.
getAppByAppKey
(
accessToken
.
getAppKey
());
String
pin
=
convert2Pin
(
appEnum
,
accessToken
.
getAccessToken
(),
uid
);
Result
<
EssentialCustomerInfo
>
result
=
jdApiUtil
.
getCustomer
(
appEnum
,
accessToken
.
getAccessToken
(),
pin
);
boolean
isMember
=
result
.
getSuccess
()
&&
result
.
getData
()
!=
null
&&
(
result
.
getData
().
getLevelAtShop
()
!=
null
||
result
.
getData
().
getCustomerPin
()
!=
null
);
LOGGER
.
info
(
"是否是会员,isMember={},uid={},pin={}"
,
isMember
,
uid
,
pin
);
return
ResultBuilder
.
success
(
isMember
);
}
catch
(
BizException
e
)
{
return
ResultBuilder
.
fail
(
e
.
getMessage
());
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
"isMember 异常"
,
e
);
return
ResultBuilder
.
fail
(
"发生异常"
);
}
}
private
static
String
getUid
(
String
uid2
)
{
String
uid
=
uid2
;
uid
=
uid
.
replaceAll
(
" "
,
"+"
);
return
uid
;
}
/**
* 发放优惠券
*/
@PostMapping
(
"/sendCouponId"
)
public
Result
<
Boolean
>
sendCouponId
(
@RequestParam
String
uid
,
@RequestParam
Long
couponId
,
@RequestParam
String
uuid
,
@RequestParam
Long
shopId
,
@RequestParam
Long
venderId
)
{
try
{
uid
=
uid
.
replaceAll
(
" "
,
"+"
);
signVerify
(
"发放优惠券"
);
TbShopAccessTokenDto
accessToken
=
accessTokenUtils
.
getAccessTokenWithCache
(
venderId
,
shopId
);
JdAppEnum
appEnum
=
JdAppEnum
.
getAppByAppKey
(
accessToken
.
getAppKey
());
String
pin
=
convert2Pin
(
appEnum
,
accessToken
.
getAccessToken
(),
uid
);
Result
<
Boolean
>
sendCouponResult
=
jdApiUtil
.
pushCoupon
(
appEnum
,
accessToken
.
getAccessToken
(),
couponId
,
pin
,
uuid
);
LOGGER
.
info
(
"发放优惠券,sendCouponResult={},uid={},pin={},uuid={}"
,
JSON
.
toJSONString
(
sendCouponResult
),
uid
,
pin
,
uuid
);
return
sendCouponResult
;
}
catch
(
BizException
e
)
{
return
ResultBuilder
.
fail
(
e
.
getMessage
());
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
"发券异常"
,
e
);
return
ResultBuilder
.
fail
(
"发券失败"
);
}
}
/**
* 是否关注店铺
*/
@PostMapping
(
"/isFollowShop/v2"
)
public
Result
<
Boolean
>
isFollowShopV2
(
@RequestBody
DuibaUserParam
duibaUserParam
)
{
try
{
String
uid
=
getUid
(
duibaUserParam
.
getUid
());
signVerify4Post
(
duibaUserParam
,
"是否关注店铺"
);
TbShopAccessTokenDto
accessToken
=
accessTokenUtils
.
getAccessTokenWithCache
(
duibaUserParam
);
JdAppEnum
appEnum
=
JdAppEnum
.
getAppByAppKey
(
accessToken
.
getAppKey
());
String
pin
=
convert2Pin
(
appEnum
,
accessToken
.
getAccessToken
(),
uid
);
Result
<
Boolean
>
follow
=
jdApiUtil
.
isFollowByPinAndVid
(
appEnum
,
pin
,
duibaUserParam
.
getShopId
());
LOGGER
.
info
(
"是否关注店铺,follow={},uid={},pin={}"
,
JSON
.
toJSONString
(
follow
),
uid
,
pin
);
return
follow
;
}
catch
(
BizException
e
)
{
return
ResultBuilder
.
fail
(
e
.
getMessage
());
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
"isFollowShop 异常"
,
e
);
return
ResultBuilder
.
fail
(
"发生异常"
);
}
}
/**
* 关注店铺
*/
@PostMapping
(
"/followShop/v2"
)
public
Result
<
Boolean
>
followShopV2
(
@RequestBody
DuibaUserParam
duibaUserParam
)
{
try
{
String
uid
=
getUid
(
duibaUserParam
.
getUid
());
signVerify4Post
(
duibaUserParam
,
"关注店铺"
);
TbShopAccessTokenDto
accessToken
=
accessTokenUtils
.
getAccessTokenWithCache
(
duibaUserParam
);
JdAppEnum
appEnum
=
JdAppEnum
.
getAppByAppKey
(
accessToken
.
getAppKey
());
String
pin
=
convert2Pin
(
appEnum
,
accessToken
.
getAccessToken
(),
uid
);
Result
<
Boolean
>
follow
=
jdApiUtil
.
followByPinAndVid
(
appEnum
,
pin
,
duibaUserParam
.
getShopId
(),
accessToken
.
getAccessToken
());
LOGGER
.
info
(
"关注店铺,follow={},uid={},pin={}"
,
JSON
.
toJSONString
(
follow
),
uid
,
pin
);
return
follow
;
}
catch
(
BizException
e
)
{
return
ResultBuilder
.
fail
(
e
.
getMessage
());
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
"followShop 异常"
,
e
);
return
ResultBuilder
.
fail
(
"发生异常"
);
}
}
/**
* 发放优惠券
*/
@PostMapping
(
"/sendCouponId/v2"
)
public
Result
<
Boolean
>
sendCouponId
(
@RequestBody
DuibaSendCouponParam
param
)
{
try
{
String
uid
=
param
.
getUid
();
Long
couponId
=
param
.
getCouponId
();
String
uuid
=
param
.
getUuid
();
uid
=
uid
.
replaceAll
(
" "
,
"+"
);
signVerify4Post
(
param
,
"发放优惠券"
);
TbShopAccessTokenDto
accessToken
=
accessTokenUtils
.
getAccessTokenWithCache
(
param
);
JdAppEnum
appEnum
=
JdAppEnum
.
getAppByAppKey
(
accessToken
.
getAppKey
());
String
pin
=
convert2Pin
(
appEnum
,
accessToken
.
getAccessToken
(),
uid
);
Result
<
Boolean
>
sendCouponResult
=
jdApiUtil
.
pushCoupon
(
appEnum
,
accessToken
.
getAccessToken
(),
couponId
,
pin
,
uuid
);
LOGGER
.
info
(
"发放优惠券,sendCouponResult={},uid={},pin={},uuid={}"
,
JSON
.
toJSONString
(
sendCouponResult
),
uid
,
pin
,
uuid
);
if
(!
sendCouponResult
.
getSuccess
())
{
// 如果失败是因为未锁券
if
(
Objects
.
equals
(
"67"
,
sendCouponResult
.
getCode
()))
{
// 锁券
sendCouponResult
=
jdApiUtil
.
lockCoupon
(
appEnum
,
accessToken
.
getAccessToken
(),
couponId
);
if
(
sendCouponResult
.
getSuccess
())
{
// 再发券
sendCouponResult
=
jdApiUtil
.
pushCoupon
(
appEnum
,
accessToken
.
getAccessToken
(),
couponId
,
pin
,
uuid
);
}
}
}
return
sendCouponResult
;
}
catch
(
BizException
e
)
{
return
ResultBuilder
.
fail
(
e
.
getMessage
());
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
"发券异常"
,
e
);
return
ResultBuilder
.
fail
(
"发券失败"
);
}
}
/**
* 是否是会员
*/
@PostMapping
(
"/isMember/v2"
)
public
Result
<
Boolean
>
isMemberV2
(
@RequestBody
DuibaUserParam
duibaUserParam
)
{
try
{
String
uid
=
getUid
(
duibaUserParam
.
getUid
());
signVerify4Post
(
duibaUserParam
,
"是否是会员"
);
TbShopAccessTokenDto
accessToken
=
accessTokenUtils
.
getAccessTokenWithCache
(
duibaUserParam
);
JdAppEnum
appEnum
=
JdAppEnum
.
getAppByAppKey
(
accessToken
.
getAppKey
());
String
pin
=
convert2Pin
(
appEnum
,
accessToken
.
getAccessToken
(),
uid
);
Result
<
EssentialCustomerInfo
>
result
=
jdApiUtil
.
getCustomer
(
appEnum
,
accessToken
.
getAccessToken
(),
pin
);
boolean
isMember
=
result
.
getSuccess
()
&&
result
.
getData
()
!=
null
&&
(
result
.
getData
().
getLevelAtShop
()
!=
null
||
result
.
getData
().
getCustomerPin
()
!=
null
);
LOGGER
.
info
(
"是否是会员,isMember={},uid={},pin={}"
,
isMember
,
uid
,
pin
);
return
ResultBuilder
.
success
(
isMember
);
}
catch
(
BizException
e
)
{
return
ResultBuilder
.
fail
(
e
.
getMessage
());
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
"是否是会员异常"
,
e
);
return
ResultBuilder
.
fail
(
"是否是会员异常"
);
}
}
/**
* 会员信息,包含首次成为会员的时间、会员等级、总订单金额、总下单次数、客单价、最新订单时间
*/
@PostMapping
(
"/memberInfo"
)
public
Result
<
EssentialCustomerInfo
>
memberInfo
(
@RequestBody
DuibaUserParam
duibaUserParam
)
{
try
{
String
uid
=
getUid
(
duibaUserParam
.
getUid
());
signVerify4Post
(
duibaUserParam
,
"会员信息"
);
TbShopAccessTokenDto
accessToken
=
accessTokenUtils
.
getAccessTokenWithCache
(
duibaUserParam
);
JdAppEnum
appEnum
=
JdAppEnum
.
getAppByAppKey
(
accessToken
.
getAppKey
());
String
pin
=
convert2Pin
(
appEnum
,
accessToken
.
getAccessToken
(),
uid
);
Result
<
EssentialCustomerInfo
>
result
=
jdApiUtil
.
getCustomer
(
appEnum
,
accessToken
.
getAccessToken
(),
pin
);
if
(!
result
.
getSuccess
())
{
return
result
;
}
EssentialCustomerInfo
customerInfo
=
result
.
getData
();
boolean
isMember
=
customerInfo
!=
null
&&
(
customerInfo
.
getLevelAtShop
()
!=
null
||
customerInfo
.
getCustomerPin
()
!=
null
);
if
(!
isMember
)
{
return
ResultBuilder
.
success
();
}
LOGGER
.
info
(
"会员信息,customerInfo={},uid={},pin={}"
,
JSON
.
toJSONString
(
customerInfo
),
uid
,
pin
);
return
ResultBuilder
.
success
(
customerInfo
);
}
catch
(
BizException
e
)
{
return
ResultBuilder
.
fail
(
e
.
getMessage
());
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
"会员信息异常"
,
e
);
return
ResultBuilder
.
fail
(
"会员信息异常"
);
}
}
/**
* 发放店铺积分
*/
@PostMapping
(
"/sendPoints"
)
public
Result
<
Boolean
>
sendPoints
(
@RequestBody
DuibaSendPointsParam
param
)
{
try
{
String
uid
=
getUid
(
param
.
getUid
());
signVerify4Post
(
param
,
"互动积分发放积分"
);
TbShopAccessTokenDto
accessToken
=
accessTokenUtils
.
getAccessTokenWithCache
(
param
);
JdAppEnum
appEnum
=
JdAppEnum
.
getAppByAppKey
(
accessToken
.
getAppKey
());
String
pin
=
convert2Pin
(
appEnum
,
accessToken
.
getAccessToken
(),
uid
);
Result
<
Boolean
>
result
=
jdApiUtil
.
sendPoints
(
appEnum
,
pin
,
param
.
getBusinessId
(),
param
.
getPoints
(),
param
.
getDesc
(),
accessToken
.
getAccessToken
());
LOGGER
.
info
(
"互动积分发放积分,result={},uid={},pin={}"
,
JSON
.
toJSONString
(
result
),
uid
,
pin
);
return
result
;
}
catch
(
BizException
e
)
{
return
ResultBuilder
.
fail
(
e
.
getMessage
());
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
"互动积分发放积分,异常"
,
e
);
return
ResultBuilder
.
fail
(
"互动积分发放积分异常"
);
}
}
/**
* 消费店铺积分
*/
@PostMapping
(
"/consumePoints"
)
public
Result
<
Boolean
>
consumePoints
(
@RequestBody
DuibaSendPointsParam
param
)
{
try
{
String
uid
=
getUid
(
param
.
getUid
());
signVerify4Post
(
param
,
"互动积分消费积分"
);
TbShopAccessTokenDto
accessToken
=
accessTokenUtils
.
getAccessTokenWithCache
(
param
);
JdAppEnum
appEnum
=
JdAppEnum
.
getAppByAppKey
(
accessToken
.
getAppKey
());
String
pin
=
convert2Pin
(
appEnum
,
accessToken
.
getAccessToken
(),
uid
);
Result
<
Boolean
>
result
=
jdApiUtil
.
consumePoints
(
appEnum
,
pin
,
param
.
getBusinessId
(),
param
.
getPoints
(),
param
.
getDesc
(),
accessToken
.
getAccessToken
());
LOGGER
.
info
(
"互动积分消费积分,result={},uid={},pin={}"
,
JSON
.
toJSONString
(
result
),
uid
,
pin
);
return
result
;
}
catch
(
BizException
e
)
{
return
ResultBuilder
.
fail
(
e
.
getMessage
());
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
"互动积分消费积分,异常"
,
e
);
return
ResultBuilder
.
fail
(
"互动积分消费积分异常"
);
}
}
/**
* 获取用户积分值
*/
@PostMapping
(
"/getCustomerPoints"
)
public
Result
<
Long
>
getCustomerPoints
(
@RequestBody
DuibaUserParam
param
)
{
try
{
String
uid
=
getUid
(
param
.
getUid
());
signVerify4Post
(
param
,
"获取用户积分"
);
TbShopAccessTokenDto
accessToken
=
accessTokenUtils
.
getAccessTokenWithCache
(
param
);
JdAppEnum
appEnum
=
JdAppEnum
.
getAppByAppKey
(
accessToken
.
getAppKey
());
String
pin
=
convert2Pin
(
appEnum
,
accessToken
.
getAccessToken
(),
uid
);
Result
<
Long
>
result
=
jdApiUtil
.
getCustomerPoints
(
appEnum
,
pin
,
accessToken
.
getAccessToken
());
LOGGER
.
info
(
"获取用户积分,result={},uid={},pin={}"
,
JSON
.
toJSONString
(
result
),
uid
,
pin
);
return
result
;
}
catch
(
BizException
e
)
{
return
ResultBuilder
.
fail
(
e
.
getMessage
());
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
"获取用户积分,异常"
,
e
);
return
ResultBuilder
.
fail
(
"获取用户积分异常"
);
}
}
/**
* 通过用户pin加入购物车
*/
@PostMapping
(
"/addCartItemByPin"
)
public
Result
<
Boolean
>
addCartItemByPin
(
@RequestBody
DuibaAddCartParam
param
)
{
try
{
String
uid
=
param
.
getUid
();
Integer
num
=
param
.
getNum
();
String
itemId
=
param
.
getItemId
();
uid
=
uid
.
replaceAll
(
" "
,
"+"
);
signVerify4Post
(
param
,
"通过用户pin加入购物车"
);
TbShopAccessTokenDto
accessToken
=
accessTokenUtils
.
getAccessTokenWithCache
(
param
);
JdAppEnum
appEnum
=
JdAppEnum
.
getAppByAppKey
(
accessToken
.
getAppKey
());
String
pin
=
convert2Pin
(
appEnum
,
accessToken
.
getAccessToken
(),
uid
);
Result
<
Boolean
>
result
=
jdApiUtil
.
addCartItemByPin
(
appEnum
,
pin
,
itemId
,
num
,
accessToken
.
getAccessToken
());
LOGGER
.
info
(
"通过用户pin加入购物车,result={}"
,
JSON
.
toJSONString
(
result
));
return
result
;
}
catch
(
BizException
e
)
{
return
ResultBuilder
.
fail
(
e
.
getMessage
());
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
"通过用户pin加入购物车,异常"
,
e
);
return
ResultBuilder
.
fail
(
"通过用户pin加入购物车失败"
);
}
}
/**
* 发送京豆
*/
@PostMapping
(
"/sendBean"
)
public
Result
<
Boolean
>
sendBean
(
@RequestBody
DuibaSendBeanParam
param
)
{
try
{
String
uid
=
param
.
getUid
();
uid
=
uid
.
replaceAll
(
" "
,
"+"
);
signVerify4Post
(
param
,
"发送京豆"
);
TbShopAccessTokenDto
accessToken
=
accessTokenUtils
.
getAccessTokenWithCache
(
param
);
JdAppEnum
appEnum
=
JdAppEnum
.
getAppByAppKey
(
accessToken
.
getAppKey
());
String
pin
=
convert2Pin
(
appEnum
,
accessToken
.
getAccessToken
(),
uid
);
Result
<
Boolean
>
result
=
jdApiUtil
.
sendBean
(
appEnum
,
accessToken
.
getAccessToken
(),
param
.
getRequestId
(),
param
.
getBeanNum
(),
accessToken
.
getVenderId
(),
param
.
getPlanId
(),
pin
,
param
.
getDesc
());
LOGGER
.
info
(
"发送京豆,result={}"
,
JSON
.
toJSONString
(
result
));
return
result
;
}
catch
(
BizException
e
)
{
return
ResultBuilder
.
fail
(
e
.
getMessage
());
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
"发送京豆,异常"
,
e
);
return
ResultBuilder
.
fail
(
"通过用户pin加入购物车失败"
);
}
}
/**
* 关注商品
*/
@PostMapping
(
"/followGood"
)
public
Result
<
Boolean
>
followGood
(
@RequestBody
FollowGoodParam
param
)
{
try
{
String
uid
=
param
.
getUid
();
Long
productId
=
param
.
getProductId
();
uid
=
uid
.
replaceAll
(
" "
,
"+"
);
signVerify4Post
(
param
,
"关注商品"
);
TbShopAccessTokenDto
accessToken
=
accessTokenUtils
.
getAccessTokenWithCache
(
param
);
JdAppEnum
appEnum
=
JdAppEnum
.
getAppByAppKey
(
accessToken
.
getAppKey
());
String
pin
=
convert2Pin
(
appEnum
,
accessToken
.
getAccessToken
(),
uid
);
Result
<
Boolean
>
result
=
jdApiUtil
.
followGood
(
appEnum
,
pin
,
productId
,
accessToken
.
getAccessToken
());
LOGGER
.
info
(
"关注商品,result={}"
,
JSON
.
toJSONString
(
result
));
return
result
;
}
catch
(
BizException
e
)
{
return
ResultBuilder
.
fail
(
e
.
getMessage
());
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
"关注商品,异常"
,
e
);
return
ResultBuilder
.
fail
(
"关注商品失败"
);
}
}
}
}
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