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
2b09573a
Commit
2b09573a
authored
Jul 15, 2022
by
陈孝伟
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
兰蔻免登代码提交
parent
49233d86
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
1013 additions
and
0 deletions
+1013
-0
IndexController.java
...a/cn/com/duiba/jdactivity/controller/IndexController.java
+14
-0
Open2LankouController.java
...om/duiba/jdactivity/controller/Open2LankouController.java
+713
-0
autologin.html
src/main/resources/templates/lankou/autologin.html
+143
-0
autologin3.html
src/main/resources/templates/lankou/autologin3.html
+143
-0
No files found.
src/main/java/cn/com/duiba/jdactivity/controller/IndexController.java
View file @
2b09573a
...
...
@@ -44,6 +44,20 @@ public class IndexController {
return
modelAndView
;
}
@GetMapping
(
"/lankou/autologin"
)
public
ModelAndView
lankouAutologin
()
{
ModelAndView
modelAndView
=
new
ModelAndView
();
modelAndView
.
setViewName
(
"lankou/autologin"
);
return
modelAndView
;
}
@GetMapping
(
"/lankou/autologin3"
)
public
ModelAndView
lankouAutologin3
()
{
ModelAndView
modelAndView
=
new
ModelAndView
();
modelAndView
.
setViewName
(
"lankou/autologin3"
);
return
modelAndView
;
}
@GetMapping
(
"/jdshare"
)
public
ModelAndView
jdshare
()
{
ModelAndView
modelAndView
=
new
ModelAndView
();
...
...
src/main/java/cn/com/duiba/jdactivity/controller/Open2LankouController.java
0 → 100644
View file @
2b09573a
package
cn
.
com
.
duiba
.
jdactivity
.
controller
;
import
cn.com.duiba.credits.sdk.CreditTool
;
import
cn.com.duiba.credits.sdk.SignTool
;
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.vo.Result
;
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.JdShopEnum
;
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.JdApiUtil
;
import
cn.com.duiba.jdactivity.dto.*
;
import
cn.com.duiba.jdactivity.exception.BizException
;
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
org.apache.commons.lang3.StringUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.web.bind.annotation.*
;
import
javax.annotation.Resource
;
import
javax.servlet.http.HttpServletRequest
;
import
java.io.UnsupportedEncodingException
;
import
java.net.URLDecoder
;
import
java.net.URLEncoder
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.Objects
;
import
java.util.Optional
;
import
java.util.stream.Collectors
;
/**
* 开放给兰蔻接口
*
* @author cxw
* @date 2022/7/15 13:26
*/
@RestController
@RequestMapping
(
"/open2Lankou"
)
public
class
Open2LankouController
{
public
static
final
Logger
LOGGER
=
LoggerFactory
.
getLogger
(
Open2LankouController
.
class
);
public
static
final
String
ENCRYPT_KEY
=
"JuGi3FCECD1dA2BPL1lCWC=="
;
//默认超时或提前5分钟
private
static
final
long
DEFAULT_EXPIRE_TIME
=
5
*
60
*
1000L
;
@Resource
private
JdApiUtil
jdApiUtil
;
@Resource
private
AccessTokenUtils
accessTokenUtils
;
/**
* todo 根据环境获取不同的兰蔻地址
*/
private
static
String
getAutologinHome
(
String
env
)
{
if
(
StringUtils
.
isBlank
(
env
))
{
env
=
""
;
}
env
=
env
.
toLowerCase
();
String
path
=
"/autoLogin/autologin"
;
String
host
;
switch
(
env
)
{
case
"dev"
:
host
=
"http://activity.m.duibadev.com.cn"
;
break
;
case
"test"
:
host
=
"http://activity.m.duibatest.com.cn"
;
break
;
case
"pre"
:
host
=
"http://activity.m.duibapre.com.cn"
;
break
;
default
:
// 默认为线上
host
=
"http://activity.m.duiba.com.cn"
;
break
;
}
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
(
"签名校验不正确"
);
}
}
/**
* 微信、京东端 用户登陆后跳转到兰蔻
*
* @return
*/
@PostMapping
(
"/autologin"
)
public
Result
<
String
>
autologin
(
@RequestBody
AutologinParam
autologinParam
)
{
try
{
LOGGER
.
info
(
"autologin,autologinParam={}"
,
JSON
.
toJSONString
(
autologinParam
));
String
token
=
autologinParam
.
getToken
();
String
source
=
Optional
.
ofNullable
(
autologinParam
.
getSource
()).
orElse
(
JdTokenSourceEnum
.
JD
.
getSource
());
LOGGER
.
info
(
"source,source={}"
,
source
);
String
redirectUrl
=
autologinParam
.
getRedirectUrl
();
String
env
=
autologinParam
.
getEnv
();
Long
venderId
=
autologinParam
.
getVenderId
();
Long
shopId
=
autologinParam
.
getShopId
();
// 兑吧应用
DuibaAppEnum
duibaApp
=
Optional
.
ofNullable
(
DuibaAppEnum
.
getDuibaApp
(
autologinParam
.
getAppKey
()))
.
orElse
(
DuibaAppEnum
.
BOSIDENG_PROD
);
TbShopAccessTokenDto
accessToken
=
accessTokenUtils
.
getAccessTokenWithCache
(
venderId
,
shopId
);
LOGGER
.
info
(
"获取accessToken,结果={}"
,
JSON
.
toJSONString
(
accessToken
));
JdAppEnum
appByAppKey
=
JdAppEnum
.
getAppByAppKey
(
accessToken
.
getAppKey
());
Result
<
String
>
pinByToken
=
jdApiUtil
.
getPinByToken
(
appByAppKey
,
accessToken
.
getAccessToken
(),
source
,
token
);
LOGGER
.
info
(
"获取pin,结果={}"
,
JSON
.
toJSONString
(
pinByToken
));
Result
<
String
>
openIdByToken
=
jdApiUtil
.
getOpenIdByToken
(
appByAppKey
,
source
,
token
);
LOGGER
.
info
(
"获取openId,结果={}"
,
JSON
.
toJSONString
(
openIdByToken
));
Result
<
OAuthUserInfo
>
userInfoByOpenId
=
jdApiUtil
.
getUserInfoByOpenId
(
appByAppKey
,
accessToken
.
getAccessToken
(),
openIdByToken
.
getData
());
LOGGER
.
info
(
"获取userInfo,结果={}"
,
JSON
.
toJSONString
(
userInfoByOpenId
));
String
uid
=
convert2Uid
(
appByAppKey
,
accessToken
.
getAccessToken
(),
pinByToken
.
getData
());
LOGGER
.
info
(
"加密pin,pin={},uid={}"
,
pinByToken
.
getData
(),
uid
);
String
nickName
=
userInfoByOpenId
.
getData
().
getNickName
();
String
avatar
=
userInfoByOpenId
.
getData
().
getImageUrl
();
String
credits
=
null
;
if
(
StringUtils
.
equals
(
autologinParam
.
getNeedCredits
(),
"1"
))
{
Result
<
Long
>
customerPoints
=
jdApiUtil
.
getCustomerPoints
(
appByAppKey
,
pinByToken
.
getData
(),
accessToken
.
getAccessToken
());
credits
=
String
.
valueOf
(
customerPoints
.
getData
());
}
String
autoLogin
=
autologin
(
duibaApp
,
uid
,
nickName
,
avatar
,
redirectUrl
,
env
,
credits
);
LOGGER
.
info
(
"autoLogin={}"
,
autoLogin
);
return
ResultBuilder
.
success
(
autoLogin
);
}
catch
(
BizException
e
)
{
return
ResultBuilder
.
fail
(
e
.
getMessage
());
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
"跳转异常"
,
e
);
return
ResultBuilder
.
fail
(
"跳转异常"
);
}
}
/**
* 生成免登url
*/
private
String
autologin
(
DuibaAppEnum
duibaApp
,
String
uid
,
String
nickName
,
String
avatar
,
String
redirectUrl
,
String
env
,
String
credits
)
throws
UnsupportedEncodingException
{
if
(
env
!=
null
&&
env
.
equals
(
"taobao"
))
{
LOGGER
.
info
(
"taobaourl,avatar={},nickname={},uid={},url={}"
,
avatar
,
nickName
,
uid
,
redirectUrl
+
"&avatar="
+
avatar
+
"&nickname="
+
nickName
+
"&uid="
+
uid
);
LOGGER
.
info
(
"redirectUrl={}"
,
redirectUrl
);
return
redirectUrl
+
"&avatar="
+
avatar
+
"&nickname="
+
nickName
+
"&uid="
+
uid
;
}
if
(
env
!=
null
&&
env
.
equals
(
"taobaoshare"
))
{
LOGGER
.
info
(
"taobaourl,avatar={},nickname={},uid={},url={}"
,
avatar
,
nickName
,
uid
,
redirectUrl
+
"&avatar="
+
avatar
+
"&nickname="
+
nickName
+
"&uid="
+
uid
);
LOGGER
.
info
(
"redirectUrl={}"
,
redirectUrl
);
return
URLDecoder
.
decode
(
redirectUrl
,
"UTF-8"
)
+
"&avatar="
+
avatar
+
"&nickname="
+
nickName
+
"&uid="
+
uid
;
}
CreditTool
tool
=
new
CreditTool
(
duibaApp
.
getAppKey
(),
duibaApp
.
getAppSecret
());
Map
<
String
,
String
>
params
=
new
HashMap
<>();
//生成dcustom数据
Map
<
String
,
String
>
dcustomParam
=
new
HashMap
<>();
dcustomParam
.
put
(
"avatar"
,
avatar
);
dcustomParam
.
put
(
"nickname"
,
nickName
);
getDcustom
(
dcustomParam
,
params
);
if
(
StringUtils
.
equalsIgnoreCase
(
"null"
,
redirectUrl
))
{
redirectUrl
=
""
;
}
if
(
StringUtils
.
isNotBlank
(
redirectUrl
))
{
redirectUrl
=
UrlUtils
.
urlDecode
(
redirectUrl
);
params
.
put
(
"redirect"
,
redirectUrl
);
}
params
.
put
(
"uid"
,
uid
);
if
(
StringUtils
.
isNotBlank
(
credits
))
{
params
.
put
(
"credits"
,
credits
);
}
String
autoUrl
=
getAutologinHome
(
env
);
return
tool
.
buildUrlWithSign
(
autoUrl
,
params
);
}
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
{
try
{
String
uid
=
AESCS7Util
.
AESEncrypt
(
pin
,
ENCRYPT_KEY
);
LOGGER
.
info
(
"pin加密,pin={},uid={}"
,
pin
,
uid
);
return
uid
;
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
"pin加密失败,uid={}"
,
pin
,
e
);
throw
new
BizException
(
"pin加密失败"
);
}
}
/**
* 是否是会员
*/
@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
(
"关注商品失败"
);
}
}
}
src/main/resources/templates/lankou/autologin.html
0 → 100644
View file @
2b09573a
<!DOCTYPE html>
<html
lang=
"en"
>
<head>
<meta
charset=
"UTF-8"
>
<title>
正在加载..
</title>
<meta
name=
"viewport"
content=
"width=device-width,initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no"
/>
<meta
name=
"apple-mobile-web-app-capable"
content=
"yes"
/>
<meta
name=
"full-screen"
content=
"true"
/>
<meta
name=
"screen-orientation"
content=
"portrait"
/>
<meta
name=
"x5-fullscreen"
content=
"true"
/>
<meta
name=
"360-fullscreen"
content=
"true"
/>
<script
src=
"//yun.duiba.com.cn/aurora/assets/4c37d75a75d8e7534d9e3b056911ba06ac5bf8f8.js"
></script>
<!-- <script src="//yun.duiba.com.cn/js-libs/vConsole/3.3.4/vconsole.min.js"></script> -->
<!-- jquery.min.js -->
<script
src=
"//h5static.m.jd.com/act/jm-jdshare/2.0.0/jm-jdshare.js"
></script>
<script
src=
"//s3.pstatp.com/cdn/expire-1-M/jquery/3.3.1/jquery.min.js"
></script>
<script>
// new VConsole();
</script>
<style>
.box
{
width
:
100%
;
height
:
100vh
;
}
.box
>
div
{
width
:
100%
;
height
:
30px
;
line-height
:
30px
;
text-align
:
center
;
border
:
2px
solid
#ccc
;
margin
:
5px
0
;
}
</style>
</head>
<body>
<div
class=
"box"
>
<!-- <div onclick="openLoginPanel()">唤起登录面板</div> -->
<!-- <div onclick="jumpToPage()">跳转</div> -->
</div>
<script
language=
"javascript"
>
(
function
()
{
openLoginPanel
();
})()
function
openLoginPanel
()
{
console
.
log
(
"登录面板"
)
var
isWechat
=
JSSDK
.
Client
.
isWeixin
();
var
isQQ
=
JSSDK
.
Client
.
isQQ
();
if
(
isWechat
||
isQQ
)
{
var
redirectUrlPrimary
=
window
.
location
.
href
.
replace
(
'autologin'
,
'autologin3'
)
+
'&source=02'
var
url
=
'https://wq.jd.com/pinbind/pintokenredirect?biz=jm-business-center&url='
+
encodeURIComponent
(
redirectUrlPrimary
)
window
.
location
.
href
=
url
;
return
;
}
JSSDK
.
Isv
.
requestLogin
(
isLogin
);
}
function
isLogin
(
res
)
{
console
.
log
(
"login回调/打开登录面板的回调"
,
res
)
setTimeout
(
function
()
{
console
.
log
(
res
.
data
)
if
(
res
.
data
==
1
)
{
// 已登录
getToken
();
}
else
{
// 未登录
}
},
0
);
}
function
getToken
()
{
console
.
log
(
"进入获取token方法"
,
window
.
location
.
href
)
JSSDK
.
Isv
.
requestIsvToken
({
url
:
window
.
location
.
href
},
callBackToken
);
}
function
callBackToken
(
res
)
{
console
.
log
(
"获取token的返回"
,
res
)
autoLogin
(
res
.
data
);
}
var
pageUrl
=
""
;
function
autoLogin
(
token
)
{
var
redirect
=
getUrlParam
(
"redirect"
);
var
env
=
getUrlParam
(
"env"
);
var
shopId
=
getUrlParam
(
"shopId"
);
var
venderId
=
getUrlParam
(
"venderId"
);
var
appKey
=
getUrlParam
(
"appKey"
);
var
needCredits
=
getUrlParam
(
"needCredits"
);
$
.
ajax
({
type
:
'post'
,
url
:
`/open2Lankou/autologin`
,
data
:
JSON
.
stringify
({
token
:
token
,
redirectUrl
:
redirect
,
env
:
env
,
shopId
:
shopId
,
venderId
:
venderId
,
appKey
:
appKey
,
needCredits
:
needCredits
}),
async
:
false
,
contentType
:
'application/json'
,
dataType
:
'json'
,
//返回 JSON 数据
beforeSend
:
function
()
{
},
success
:
function
(
data
,
status
)
{
console
.
log
(
"autoLogin返回参数:"
,
data
)
pageUrl
=
data
.
data
;
console
.
log
(
pageUrl
)
window
.
location
.
href
=
pageUrl
;
},
complete
:
function
()
{
},
error
:
function
(
data
,
status
,
e
)
{
console
.
log
(
"接口调用错误"
,
e
)
}
});
}
function
jumpToPage
()
{
console
.
log
(
pageUrl
)
window
.
location
.
href
=
pageUrl
;
}
function
getUrlParam
(
name
)
{
var
search
=
window
.
location
.
search
;
var
matched
=
search
.
slice
(
1
)
.
match
(
new
RegExp
(
'(^|&)'
+
name
+
'=([^&]*)(&|$)'
,
'i'
));
return
search
.
length
?
matched
&&
matched
[
2
]
:
null
;
}
</script>
</body>
</html>
\ No newline at end of file
src/main/resources/templates/lankou/autologin3.html
0 → 100644
View file @
2b09573a
<!DOCTYPE html>
<html
lang=
"en"
>
<head>
<meta
charset=
"UTF-8"
>
<title>
正在加载..
</title>
<meta
name=
"viewport"
content=
"width=device-width,initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no"
/>
<meta
name=
"apple-mobile-web-app-capable"
content=
"yes"
/>
<meta
name=
"full-screen"
content=
"true"
/>
<meta
name=
"screen-orientation"
content=
"portrait"
/>
<meta
name=
"x5-fullscreen"
content=
"true"
/>
<meta
name=
"360-fullscreen"
content=
"true"
/>
<script
src=
"//yun.duiba.com.cn/aurora/assets/4c37d75a75d8e7534d9e3b056911ba06ac5bf8f8.js"
></script>
<!-- <script src="//yun.duiba.com.cn/js-libs/vConsole/3.3.4/vconsole.min.js"></script> -->
<!-- jquery.min.js -->
<script
src=
"//h5static.m.jd.com/act/jm-jdshare/2.0.0/jm-jdshare.js"
></script>
<script
src=
"//s3.pstatp.com/cdn/expire-1-M/jquery/3.3.1/jquery.min.js"
></script>
<script>
// new VConsole();
</script>
<style>
.box
{
width
:
100%
;
height
:
100vh
;
}
.box
>
div
{
width
:
100%
;
height
:
30px
;
line-height
:
30px
;
text-align
:
center
;
border
:
2px
solid
#ccc
;
margin
:
5px
0
;
}
</style>
</head>
<body>
<div
class=
"box"
>
<!-- <div onclick="openLoginPanel()">唤起登录面板</div> -->
<!-- <div onclick="jumpToPage()">跳转</div> -->
</div>
<script
language=
"javascript"
>
(
function
()
{
// openLoginPanel();
var
token
=
getUrlParam
(
"token"
);
autoLogin
(
token
)
})()
function
openLoginPanel
()
{
console
.
log
(
"登录面板"
)
JSSDK
.
Isv
.
requestLogin
(
isLogin
);
}
function
isLogin
(
res
)
{
console
.
log
(
"login回调/打开登录面板的回调"
,
res
)
setTimeout
(
function
()
{
console
.
log
(
res
.
data
)
if
(
res
.
data
==
1
)
{
// 已登录
getToken
();
}
else
{
// 未登录
}
},
0
);
}
function
getToken
()
{
console
.
log
(
"进入获取token方法"
,
window
.
location
.
href
)
JSSDK
.
Isv
.
requestIsvToken
({
url
:
window
.
location
.
href
},
callBackToken
);
}
function
callBackToken
(
res
)
{
console
.
log
(
"获取token的返回"
,
res
)
autoLogin
(
res
.
data
);
}
var
pageUrl
=
""
;
function
autoLogin
(
token
)
{
var
redirect
=
getUrlParam
(
"redirect"
);
var
env
=
getUrlParam
(
"env"
);
var
shopId
=
getUrlParam
(
"shopId"
);
var
venderId
=
getUrlParam
(
"venderId"
);
var
source
=
getUrlParam
(
"source"
);
var
appKey
=
getUrlParam
(
"appKey"
);
var
needCredits
=
getUrlParam
(
"needCredits"
);
$
.
ajax
({
type
:
'post'
,
url
:
`/open2Lankou/autologin`
,
data
:
JSON
.
stringify
({
token
:
token
,
redirectUrl
:
redirect
,
source
:
'02'
,
env
:
env
,
shopId
:
shopId
,
venderId
:
venderId
,
appKey
:
appKey
,
needCredits
:
needCredits
}),
async
:
false
,
contentType
:
'application/json'
,
dataType
:
'json'
,
//返回 JSON 数据
beforeSend
:
function
()
{
},
success
:
function
(
data
,
status
)
{
console
.
log
(
"autoLogin返回参数:"
,
data
)
pageUrl
=
data
.
data
;
console
.
log
(
pageUrl
)
window
.
location
.
href
=
pageUrl
;
},
complete
:
function
()
{
},
error
:
function
(
data
,
status
,
e
)
{
console
.
log
(
"接口调用错误"
,
e
)
}
});
}
function
jumpToPage
()
{
console
.
log
(
pageUrl
)
window
.
location
.
href
=
pageUrl
;
}
function
getUrlParam
(
name
)
{
var
search
=
window
.
location
.
search
;
var
matched
=
search
.
slice
(
1
)
.
match
(
new
RegExp
(
'(^|&)'
+
name
+
'=([^&]*)(&|$)'
,
'i'
));
return
search
.
length
?
matched
&&
matched
[
2
]
:
null
;
}
</script>
</body>
</html>
\ No newline at end of file
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