|
@@ -3,11 +3,14 @@ package com.kmall.api.api;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.google.common.collect.Maps;
|
|
|
import com.kmall.api.annotation.IgnoreAuth;
|
|
|
+import com.kmall.api.cache.UserTokenCache;
|
|
|
import com.kmall.api.entity.*;
|
|
|
import com.kmall.api.service.*;
|
|
|
import com.kmall.api.util.ApiBaseAction;
|
|
|
import com.kmall.api.util.ApiUserUtils;
|
|
|
import com.kmall.api.util.CommonUtil;
|
|
|
+import com.kmall.common.utils.ApiRRException;
|
|
|
+import com.kmall.common.utils.CharUtil;
|
|
|
import com.qiniu.util.StringUtils;
|
|
|
import org.apache.commons.collections.MapUtils;
|
|
|
import org.apache.commons.logging.Log;
|
|
@@ -16,6 +19,7 @@ import org.apache.log4j.Logger;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.util.Date;
|
|
|
import java.util.HashMap;
|
|
@@ -43,13 +47,16 @@ public class ApiAuthController extends ApiBaseAction {
|
|
|
private ApiMerchUserService apiMerchUserService;
|
|
|
@Autowired
|
|
|
private ApiThirdMerchantBizService apiThirdMerchantBizService;
|
|
|
+ public static final String IS_REFUSED_LOGIN = "isRefusedLogin";
|
|
|
|
|
|
/**
|
|
|
- * 登录
|
|
|
+ * 授权登录保存用户信息,以及redis的token信息
|
|
|
*/
|
|
|
@IgnoreAuth
|
|
|
@PostMapping("login_by_weixin")
|
|
|
- public Object loginByWeixin() {
|
|
|
+ public Object loginByWeixin(HttpServletRequest request) {
|
|
|
+ //从header中获取IS_REFUSED_LOGIN
|
|
|
+ String isRefusedLogin = request.getHeader(IS_REFUSED_LOGIN);
|
|
|
Map<String, Object> resultObj = Maps.newHashMap();
|
|
|
JSONObject jsonParam = this.getJsonRequest();
|
|
|
FullUserInfo fullUserInfo = null;
|
|
@@ -108,7 +115,10 @@ public class ApiAuthController extends ApiBaseAction {
|
|
|
userVo.setGender(userInfo.getGender()); // //性别 0:未知、1:男、2:女
|
|
|
userService.update(userVo);
|
|
|
}
|
|
|
- Map<String, Object> tokenMap = tokenService.createAndUpdateToken(userVo.getWeixin_openid(), storeId,userVo.getId(),merchSn,"false");
|
|
|
+ if(userVo.getId()!=null){
|
|
|
+ isRefusedLogin = "false";
|
|
|
+ }
|
|
|
+ Map<String, Object> tokenMap = tokenService.createAndUpdateToken(userVo.getWeixin_openid(), storeId,userVo.getId(),merchSn, isRefusedLogin);
|
|
|
String token = MapUtils.getString(tokenMap, "token");
|
|
|
|
|
|
if (null == userInfo || StringUtils.isNullOrEmpty(token)) {
|
|
@@ -120,6 +130,109 @@ public class ApiAuthController extends ApiBaseAction {
|
|
|
resultObj.put("userId", userVo.getId());
|
|
|
return toResponsSuccess(resultObj);
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 授权登录保存token到redis
|
|
|
+ * @param request
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @IgnoreAuth
|
|
|
+ @PostMapping("loginSaveToken")
|
|
|
+ public Object loginSaveToken(HttpServletRequest request) {
|
|
|
+ //从header中获取IS_REFUSED_LOGIN
|
|
|
+ String isRefusedLogin = request.getHeader(IS_REFUSED_LOGIN);
|
|
|
+ Map<String, Object> resultObj = Maps.newHashMap();
|
|
|
+ JSONObject jsonParam = this.getJsonRequest();
|
|
|
+ Long storeId = jsonParam.getLong("storeId");
|
|
|
+ String merchSn = (String)jsonParam.get("merchSn");
|
|
|
+ UserInfo userInfo = null;
|
|
|
+ if (null != jsonParam.get("userInfo")) {
|
|
|
+ userInfo = jsonParam.getObject("userInfo", UserInfo.class);
|
|
|
+ }
|
|
|
+// if(userInfo == null){
|
|
|
+// return toResponsFail("登录失败");
|
|
|
+// }
|
|
|
+ String code = "";
|
|
|
+ if (!StringUtils.isNullOrEmpty(jsonParam.getString("code"))) {
|
|
|
+ code = jsonParam.getString("code");
|
|
|
+ }
|
|
|
+ //获取openid
|
|
|
+ String requestUrl = ApiUserUtils.getWebAccess(code);//通过自定义工具类组合出小程序需要的登录凭证 code
|
|
|
+ logger.info("》》》组合token为:" + requestUrl);
|
|
|
+ JSONObject sessionData = CommonUtil.httpsRequest(requestUrl, "GET", null);
|
|
|
+ logger.info("》》》sessionData为:" + sessionData);
|
|
|
+
|
|
|
+ if (null == sessionData) {
|
|
|
+ return toResponsFail("登录失败");
|
|
|
+ }
|
|
|
+ String openId = sessionData.getString("openid");
|
|
|
+ if (StringUtils.isNullOrEmpty(openId)) {
|
|
|
+ return toResponsFail("登录失败");
|
|
|
+ }
|
|
|
+ UserVo userVo = userService.queryByOpenId(openId);
|
|
|
+ if (null == userVo) {
|
|
|
+ userVo = new UserVo();
|
|
|
+ userVo.setPassword(openId);
|
|
|
+ userVo.setRegister_time(new Date());
|
|
|
+ userVo.setRegister_ip(this.getClientIp());
|
|
|
+ userVo.setLast_login_ip(userVo.getRegister_ip());
|
|
|
+ userVo.setLast_login_time(userVo.getRegister_time());
|
|
|
+ userVo.setWeixin_openid(sessionData.getString("openid"));
|
|
|
+ if(userInfo != null){
|
|
|
+ userVo.setAvatar(userInfo.getAvatarUrl());
|
|
|
+ userVo.setGender(userInfo.getGender()); // //性别 0:未知、1:男、2:女
|
|
|
+ userVo.setNickname(filterEmoji(userInfo.getNickName()));
|
|
|
+ }
|
|
|
+ userVo.setUser_level_id(1);
|
|
|
+ userService.save(userVo);
|
|
|
+
|
|
|
+ } else {
|
|
|
+ userVo.setLast_login_ip(this.getClientIp());
|
|
|
+ userVo.setLast_login_time(new Date());
|
|
|
+ if(userInfo != null){
|
|
|
+ userVo.setAvatar(userInfo.getAvatarUrl());
|
|
|
+ userVo.setGender(userInfo.getGender()); // //性别 0:未知、1:男、2:女
|
|
|
+ userVo.setNickname(filterEmoji(userInfo.getNickName()));
|
|
|
+ }
|
|
|
+ userService.update(userVo);
|
|
|
+ }
|
|
|
+ if(userVo.getId()!=null){
|
|
|
+ isRefusedLogin = "false";
|
|
|
+ }
|
|
|
+ Map<String, Object> tokenMap = tokenService.createAndUpdateToken(userVo.getWeixin_openid(), storeId,userVo.getId(),merchSn, isRefusedLogin);
|
|
|
+ String token = MapUtils.getString(tokenMap, "token");
|
|
|
+
|
|
|
+ if (StringUtils.isNullOrEmpty(token)) {
|
|
|
+ return toResponsFail("登录失败");
|
|
|
+ }
|
|
|
+
|
|
|
+ resultObj.put("token", token);
|
|
|
+ resultObj.put("userInfo", userInfo);
|
|
|
+ resultObj.put("userId", userVo.getId());
|
|
|
+ return toResponsSuccess(resultObj);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 校验当前token是否有效
|
|
|
+ * @param request
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @IgnoreAuth
|
|
|
+ @PostMapping("checkToken")
|
|
|
+ public Object checkToken(HttpServletRequest request) {
|
|
|
+ Map<String, Object> resultObj = Maps.newHashMap();
|
|
|
+ JSONObject jsonParam = this.getJsonRequest();
|
|
|
+ String token = (String)jsonParam.get("token");
|
|
|
+ //查询token信息
|
|
|
+ TokenEntity tokenEntity = UserTokenCache.getUserInfoByToken(token);
|
|
|
+ if ((tokenEntity == null || tokenEntity.getExpireTime().getTime() < System.currentTimeMillis())) {
|
|
|
+ logger.info("已授权,且token不为空,根据token查询token信息为空,校验token失效");//生成一个token
|
|
|
+ throw new ApiRRException("token失效", 401);
|
|
|
+ }
|
|
|
+
|
|
|
+ resultObj.put("token", tokenEntity.getToken());
|
|
|
+ return toResponsSuccess(resultObj);
|
|
|
+ }
|
|
|
/**
|
|
|
* 将emoji表情替换成空串
|
|
|
* @param source
|
|
@@ -134,11 +247,14 @@ public class ApiAuthController extends ApiBaseAction {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 根据经纬度选择门店
|
|
|
+ * 根据经纬度选择门店,审核成功删除
|
|
|
*/
|
|
|
@GetMapping("nearbyLists")
|
|
|
@IgnoreAuth
|
|
|
- public Object nearbyLists(@RequestParam BigDecimal latitude, @RequestParam BigDecimal longitude, @RequestParam String storeId,@RequestParam String thirdPartyMerchCode) {
|
|
|
+ public Object nearbyLists(@RequestParam BigDecimal latitude, @RequestParam BigDecimal longitude, @RequestParam String storeId,
|
|
|
+ @RequestParam String thirdPartyMerchCode, HttpServletRequest request) {
|
|
|
+ //从header中获取IS_REFUSED_LOGIN
|
|
|
+ String isRefusedLogin = request.getHeader(IS_REFUSED_LOGIN);
|
|
|
Map param = Maps.newHashMap();
|
|
|
if(org.apache.commons.lang3.StringUtils.isNotEmpty(storeId)){
|
|
|
param.put("storeId", storeId);
|
|
@@ -149,8 +265,20 @@ public class ApiAuthController extends ApiBaseAction {
|
|
|
param.put("latitude", latitude);
|
|
|
param.put("longitude", longitude);
|
|
|
List<StoreVo> storeVoList = apiStoreService.queryNearbyList(param);
|
|
|
+
|
|
|
+ if(org.apache.commons.lang3.StringUtils.isNotEmpty(storeId)){
|
|
|
+ if(storeVoList.size()==0){
|
|
|
+ Map param2 = Maps.newHashMap();
|
|
|
+ if(org.apache.commons.lang3.StringUtils.isNotEmpty(thirdPartyMerchCode)){
|
|
|
+ param2.put("thirdPartyMerchCode", thirdPartyMerchCode);
|
|
|
+ }
|
|
|
+ param2.put("latitude", latitude);
|
|
|
+ param2.put("longitude", longitude);
|
|
|
+ storeVoList = apiStoreService.queryNearbyList(param2);
|
|
|
+ }
|
|
|
+ }
|
|
|
if (null != storeVoList && storeVoList.size() > 0 && null != getOpenId()) {
|
|
|
- tokenService.createAndUpdateToken(getOpenId(), storeVoList.get(0).getId(),getUserId(),storeVoList.get(0).getMerchSn(),"false");
|
|
|
+ tokenService.createAndUpdateToken(getOpenId(), storeVoList.get(0).getId(),getUserId(),storeVoList.get(0).getMerchSn(),isRefusedLogin);
|
|
|
}
|
|
|
return toResponsSuccess(storeVoList);
|
|
|
}
|
|
@@ -191,6 +319,7 @@ public class ApiAuthController extends ApiBaseAction {
|
|
|
Long storeId = jsonParam.getLong("storeId");
|
|
|
String merchSn = (String)jsonParam.get("merchSn");
|
|
|
String isRefusedLogin = (String)jsonParam.get("isRefusedLogin");
|
|
|
+ logger.info("选择门店参数:storeId:"+storeId +";merchSn:"+merchSn+";isRefusedLogin:"+isRefusedLogin);
|
|
|
//
|
|
|
Map<String, Object> resultObj = Maps.newHashMap();
|
|
|
Map<String, Object> tokenMap = tokenService.createAndUpdateToken(openId, storeId, getUserId(), merchSn, isRefusedLogin);
|