Commit 927e8357 authored by haojiahong's avatar haojiahong

消费和查询店铺积分

parent f8ae509e
......@@ -219,8 +219,13 @@ public class Open2DuibaController {
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);
String autoLogin = autologin(duibaApp, uid, nickName, avatar, redirectUrl, env, credits);
LOGGER.info("autoLogin={}", autoLogin);
return ResultBuilder.success(autoLogin);
} catch (BizException e) {
......@@ -234,7 +239,7 @@ public class Open2DuibaController {
/**
* 生成免登url
*/
private String autologin(DuibaAppEnum duibaApp, String uid, String nickName, String avatar, String redirectUrl, String env) {
private String autologin(DuibaAppEnum duibaApp, String uid, String nickName, String avatar, String redirectUrl, String env, String credits) {
CreditTool tool = new CreditTool(duibaApp.getAppKey(), duibaApp.getAppSecret());
Map<String, String> params = new HashMap<>();
......@@ -253,7 +258,9 @@ public class Open2DuibaController {
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);
......@@ -571,6 +578,57 @@ public class Open2DuibaController {
}
}
/**
* 消费店铺积分
*/
@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加入购物车
*/
......
......@@ -31,6 +31,7 @@ import com.jd.open.api.sdk.request.seller.VenderShopQueryRequest;
import com.jd.open.api.sdk.request.sku.PopBeanSendBeanRequest;
import com.jd.open.api.sdk.request.user.FollowVenderReadIsFollowByPinAndVidRequest;
import com.jd.open.api.sdk.request.user.FollowVenderWriteFollowByPinAndVidRequest;
import com.jd.open.api.sdk.request.user.PopCrmGetCustomerPointsRequest;
import com.jd.open.api.sdk.request.user.PopCrmGetMemberInVenderRequest;
import com.jd.open.api.sdk.request.user.PopJmCenterUserGetEncryptPinNewRequest;
import com.jd.open.api.sdk.request.user.PopJmCenterUserGetOpenIdRequest;
......@@ -47,6 +48,7 @@ import com.jd.open.api.sdk.response.seller.VenderShopQueryResponse;
import com.jd.open.api.sdk.response.sku.PopBeanSendBeanResponse;
import com.jd.open.api.sdk.response.user.FollowVenderReadIsFollowByPinAndVidResponse;
import com.jd.open.api.sdk.response.user.FollowVenderWriteFollowByPinAndVidResponse;
import com.jd.open.api.sdk.response.user.PopCrmGetCustomerPointsResponse;
import com.jd.open.api.sdk.response.user.PopCrmGetMemberInVenderResponse;
import com.jd.open.api.sdk.response.user.PopJmCenterUserGetEncryptPinNewResponse;
import com.jd.open.api.sdk.response.user.PopJmCenterUserGetOpenIdResponse;
......@@ -425,7 +427,7 @@ public class JdApiUtil {
public Result<Boolean> consumePoints(JdAppEnum jdAppEnum, String pin, String businessId,
Integer points, String desc, String accessToken) {
if (points >= 0) {
return ResultBuilder.fail("发放积分须是负数");
return ResultBuilder.fail("消费积分须是负数");
}
return sendPoints(jdAppEnum, pin, businessId, (short) 37, points, desc, accessToken);
}
......@@ -703,4 +705,31 @@ public class JdApiUtil {
}
/**
* 获取用户积分
*
* @param jdAppEnum
* @param pin
* @param accessToken
* @return
*/
public Result<Long> getCustomerPoints(JdAppEnum jdAppEnum, String pin, String accessToken) {
try {
PopCrmGetCustomerPointsRequest request = new PopCrmGetCustomerPointsRequest();
request.setCustomerPin(pin);
Result<PopCrmGetCustomerPointsResponse> result = execute(jdAppEnum, accessToken, request);
if (!result.getSuccess()) {
return ResultBuilder.fail(result.getDesc());
}
PopCrmGetCustomerPointsResponse response = result.getData();
return Optional.ofNullable(response)
.map(r -> ResultBuilder.success(r.getGetcustomerpointsResult()))
.orElse(ResultBuilder.fail(JSON.toJSONString(response)));
} catch (Exception e) {
LOGGER.warn("获取用户积分接口,exception", e);
return ResultBuilder.fail("发生异常");
}
}
}
......@@ -19,6 +19,11 @@ public class AutologinParam implements Serializable {
private String redirectUrl;
/**
* 是否需要店铺积分
*/
private String needCredits;
/**
* 兑吧环境
*/
......@@ -29,6 +34,14 @@ public class AutologinParam implements Serializable {
*/
private String appKey;
public String getNeedCredits() {
return needCredits;
}
public void setNeedCredits(String needCredits) {
this.needCredits = needCredits;
}
public Long getVenderId() {
return venderId;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment