Commit 5942f5df authored by 王亮's avatar 王亮

update RequestHeader(app_id and tenantId)

parent 9238ed78
...@@ -34,6 +34,7 @@ public interface Constants { ...@@ -34,6 +34,7 @@ public interface Constants {
String X_AUTH_TOKEN = "x-auth-token"; String X_AUTH_TOKEN = "x-auth-token";
String X_AUTH_TENANT = "qg-tenant-id"; String X_AUTH_TENANT = "qg-tenant-id";
String X_AUTH_APP_ID = "qg-app-id";
String X_AUTH_FROM = "qg-registered-from"; String X_AUTH_FROM = "qg-registered-from";
...@@ -97,6 +98,8 @@ public interface Constants { ...@@ -97,6 +98,8 @@ public interface Constants {
String REDIRECT_ORDER = "orders"; String REDIRECT_ORDER = "orders";
String DOCKER_DOMAIN = "liangkebang"; String DOCKER_DOMAIN = "liangkebang";
String WECHAT_ACCESS_TOKEN_REDIS="user:wechat:mini:token:";
/** /**
* 微信标识参数名 * 微信标识参数名
*/ */
......
package cn.quantgroup.xyqb.config.data;
import cn.quantgroup.xyqb.exception.BizException;
import cn.quantgroup.xyqb.exception.BizExceptionEnum;
import cn.quantgroup.xyqb.model.WechatConfigBean;
import com.alibaba.fastjson.JSONArray;
import com.ctrip.framework.apollo.ConfigService;
import lombok.Getter;
import org.springframework.stereotype.Component;
import javax.persistence.criteria.CriteriaBuilder;
import java.util.List;
import java.util.Optional;
@Component
@Getter
public class WechatConfiguration {
private final List<WechatConfigBean> list;
public WechatConfiguration() {
String data = ConfigService.getAppConfig().getProperty("wechat.configs", "[]");
list = JSONArray.parseArray(data, WechatConfigBean.class);
}
public WechatConfigBean getByAppIdAndTenantId(String appId, Integer tenantId){
Optional<WechatConfigBean> optional = list.stream().filter(i->i.getAppId().equals(appId)&&i.getTenantId().equals(tenantId)).findFirst();
if(!optional.isPresent()){
throw new BizException(BizExceptionEnum.ERROR_WECHAT_APP_ID);
}else{
return optional.get();
}
}
}
...@@ -183,8 +183,8 @@ public class WeChatController implements IBaseController { ...@@ -183,8 +183,8 @@ public class WeChatController implements IBaseController {
@RequestMapping("/receiveCode/extdata/{key}/{extdata}") @RequestMapping("/receiveCode/extdata/{key}/{extdata}")
public void receiveCodeWithExtData(String code, @PathVariable(value = "key") String systemKey, public void receiveCodeWithExtData(String code, @PathVariable(value = "key") String systemKey,
@PathVariable(value = "extdata") String extData, HttpServletResponse response, @PathVariable(value = "extdata") String extData, HttpServletResponse response,
@RequestParam(value = "appId",defaultValue = UserConstant.defaultAppId) String appId @RequestHeader(value = Constants.X_AUTH_APP_ID,defaultValue = UserConstant.defaultAppId) String appId
,@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId ) { ,@RequestHeader(value = Constants.X_AUTH_TENANT,defaultValue = UserConstant.defaultTenantIdString) Integer tenantId ) {
Long registerFrom = null; Long registerFrom = null;
String redirect = null; String redirect = null;
String schema = null; String schema = null;
...@@ -348,8 +348,8 @@ public class WeChatController implements IBaseController { ...@@ -348,8 +348,8 @@ public class WeChatController implements IBaseController {
*/ */
@RequestMapping("/receiveCode/{key}") @RequestMapping("/receiveCode/{key}")
public void receiveCodeNoRedirect(String code, @PathVariable(value = "key") String systemKey, HttpServletRequest request, HttpServletResponse response, public void receiveCodeNoRedirect(String code, @PathVariable(value = "key") String systemKey, HttpServletRequest request, HttpServletResponse response,
@RequestParam(value = "appId",defaultValue = UserConstant.defaultAppId) String appId, @RequestHeader(value = Constants.X_AUTH_APP_ID,defaultValue = UserConstant.defaultAppId) String appId,
@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) { @RequestHeader(value = Constants.X_AUTH_TENANT,defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
Long registerFrom = null; Long registerFrom = null;
String redirect = null; String redirect = null;
String schema = Constants.PROTOCOL_HEAD_HTTP; String schema = Constants.PROTOCOL_HEAD_HTTP;
...@@ -462,7 +462,7 @@ public class WeChatController implements IBaseController { ...@@ -462,7 +462,7 @@ public class WeChatController implements IBaseController {
@RequestMapping("/userIdToUnionId") @RequestMapping("/userIdToUnionId")
public JsonResult userIdToUnionId(@RequestParam Long userId, public JsonResult userIdToUnionId(@RequestParam Long userId,
@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) { @RequestHeader(value =Constants.X_AUTH_TENANT,defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
List<WechatUserInfo> wechatUserInfoList = null; List<WechatUserInfo> wechatUserInfoList = null;
if (userId != null && userId > 0) { if (userId != null && userId > 0) {
wechatUserInfoList = wechatService.queryListByUserId(userId,tenantId); wechatUserInfoList = wechatService.queryListByUserId(userId,tenantId);
...@@ -471,7 +471,7 @@ public class WeChatController implements IBaseController { ...@@ -471,7 +471,7 @@ public class WeChatController implements IBaseController {
} }
@RequestMapping("/unionIdToUserId") @RequestMapping("/unionIdToUserId")
public JsonResult unionIdToUserId(@RequestParam String unionId,@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) { public JsonResult unionIdToUserId(@RequestParam String unionId,@RequestHeader(value = Constants.X_AUTH_TENANT,defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
List<WechatUserInfo> wechatUserInfoList = null; List<WechatUserInfo> wechatUserInfoList = null;
if (unionId != null && !"".equals(unionId)) { if (unionId != null && !"".equals(unionId)) {
wechatUserInfoList = wechatService.queryListByUnionId(unionId,tenantId); wechatUserInfoList = wechatService.queryListByUnionId(unionId,tenantId);
...@@ -480,7 +480,7 @@ public class WeChatController implements IBaseController { ...@@ -480,7 +480,7 @@ public class WeChatController implements IBaseController {
} }
@PostMapping("/unionIdToUserIds") @PostMapping("/unionIdToUserIds")
public JsonResult unionIdToUserIds(@RequestBody Map<String, Object> params, @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) { public JsonResult unionIdToUserIds(@RequestBody Map<String, Object> params, @RequestHeader(value = Constants.X_AUTH_TENANT,defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
List<WechatUserInfo> wechatUserInfoList = null; List<WechatUserInfo> wechatUserInfoList = null;
if (MapUtils.isNotEmpty(params)) { if (MapUtils.isNotEmpty(params)) {
List<String> unionIds = (List<String>) params.get("unionIds"); List<String> unionIds = (List<String>) params.get("unionIds");
......
package cn.quantgroup.xyqb.controller.internal.user; package cn.quantgroup.xyqb.controller.internal.user;
import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.constant.UserConstant; import cn.quantgroup.xyqb.constant.UserConstant;
import cn.quantgroup.xyqb.constant.enums.LoginType; import cn.quantgroup.xyqb.constant.enums.LoginType;
import cn.quantgroup.xyqb.aspect.accessable.IpValidator; import cn.quantgroup.xyqb.aspect.accessable.IpValidator;
...@@ -28,6 +29,7 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -28,6 +29,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.core.Authentication; import org.springframework.security.core.Authentication;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
...@@ -72,7 +74,7 @@ public class AppController implements IBaseController { ...@@ -72,7 +74,7 @@ public class AppController implements IBaseController {
@RequestParam(required = false) Long registerFrom, @RequestParam(required = false) Long registerFrom,
@RequestParam(required = true) Long channelId, @RequestParam(required = true) Long channelId,
@RequestParam(required = true) String appChannel, @RequestParam(required = true) String appChannel,
@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId, @RequestHeader(value = Constants.X_AUTH_TENANT,defaultValue = UserConstant.defaultTenantIdString) Integer tenantId,
HttpServletRequest request) { HttpServletRequest request) {
if (TenantUtil.validationTenantIdIsNullOrZero(tenantId)) { if (TenantUtil.validationTenantIdIsNullOrZero(tenantId)) {
...@@ -153,7 +155,7 @@ public class AppController implements IBaseController { ...@@ -153,7 +155,7 @@ public class AppController implements IBaseController {
@RequestParam(required = false, defaultValue = "1") Long registerFrom, @RequestParam(required = false, defaultValue = "1") Long registerFrom,
@RequestParam(required = false, defaultValue = "1") Long channelId, @RequestParam(required = false, defaultValue = "1") Long channelId,
@RequestParam(required = false, defaultValue = "") String appChannel, @RequestParam(required = false, defaultValue = "") String appChannel,
@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId, @RequestHeader(value = Constants.X_AUTH_TENANT,defaultValue = UserConstant.defaultTenantIdString) Integer tenantId,
HttpServletRequest request) { HttpServletRequest request) {
if (!ValidationUtil.validatePhoneNo(phoneNo)) { if (!ValidationUtil.validatePhoneNo(phoneNo)) {
return JsonResult.buildErrorStateResult(USER_ERROR_OR_PASSWORD_ERROR, null); return JsonResult.buildErrorStateResult(USER_ERROR_OR_PASSWORD_ERROR, null);
...@@ -208,7 +210,7 @@ public class AppController implements IBaseController { ...@@ -208,7 +210,7 @@ public class AppController implements IBaseController {
@RequestParam(required = false, defaultValue = "1") Long registerFrom, @RequestParam(required = false, defaultValue = "1") Long registerFrom,
@RequestParam(required = false, defaultValue = "1") Long channelId, @RequestParam(required = false, defaultValue = "1") Long channelId,
@RequestParam(required = false, defaultValue = "") String appChannel, @RequestParam(required = false, defaultValue = "") String appChannel,
@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId, @RequestHeader(value = Constants.X_AUTH_TENANT,defaultValue = UserConstant.defaultTenantIdString) Integer tenantId,
HttpServletRequest request) { HttpServletRequest request) {
if (TenantUtil.validationTenantIdIsNullOrZero(tenantId)) { if (TenantUtil.validationTenantIdIsNullOrZero(tenantId)) {
...@@ -319,7 +321,7 @@ public class AppController implements IBaseController { ...@@ -319,7 +321,7 @@ public class AppController implements IBaseController {
@RequestParam(required = false, defaultValue = "1") Long registerFrom, @RequestParam(required = false, defaultValue = "1") Long registerFrom,
@RequestParam(required = false, defaultValue = "1") Long channelId, @RequestParam(required = false, defaultValue = "1") Long channelId,
@RequestParam(required = false, defaultValue = "") String appChannel, @RequestParam(required = false, defaultValue = "") String appChannel,
@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId, @RequestHeader(value = Constants.X_AUTH_TENANT,defaultValue = UserConstant.defaultTenantIdString) Integer tenantId,
HttpServletRequest request) { HttpServletRequest request) {
//默认羊小咩租户 //默认羊小咩租户
if (TenantUtil.validationTenantIdIsNullOrZero(tenantId)) { if (TenantUtil.validationTenantIdIsNullOrZero(tenantId)) {
......
package cn.quantgroup.xyqb.controller.internal.user; package cn.quantgroup.xyqb.controller.internal.user;
import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.aspect.accessable.IpValidator; import cn.quantgroup.xyqb.aspect.accessable.IpValidator;
import cn.quantgroup.xyqb.constant.UserConstant; import cn.quantgroup.xyqb.constant.UserConstant;
import cn.quantgroup.xyqb.entity.User; import cn.quantgroup.xyqb.entity.User;
...@@ -14,6 +15,7 @@ import lombok.extern.slf4j.Slf4j; ...@@ -14,6 +15,7 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataIntegrityViolationException; import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
...@@ -41,7 +43,7 @@ public class SyncUserController { ...@@ -41,7 +43,7 @@ public class SyncUserController {
@RequestMapping("/save_detail") @RequestMapping("/save_detail")
public JsonResult saveUserDetail(String key, String phoneNo, public JsonResult saveUserDetail(String key, String phoneNo,
@ChineseName @RequestParam String name,@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId @ChineseName @RequestParam String name,@RequestHeader(value = Constants.X_AUTH_TENANT,defaultValue = UserConstant.defaultTenantIdString) Integer tenantId
) { ) {
if (!Objects.equals(KEY, key)) { if (!Objects.equals(KEY, key)) {
return JsonResult.buildErrorStateResult(null, null); return JsonResult.buildErrorStateResult(null, null);
...@@ -90,7 +92,7 @@ public class SyncUserController { ...@@ -90,7 +92,7 @@ public class SyncUserController {
} }
@RequestMapping("/user") @RequestMapping("/user")
public JsonResult fetchUser(String key, String phoneNo,@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId public JsonResult fetchUser(String key, String phoneNo,@RequestHeader(value = Constants.X_AUTH_TENANT,defaultValue = UserConstant.defaultTenantIdString) Integer tenantId
) { ) {
if (!Objects.equals(KEY, key) || !ValidationUtil.validatePhoneNo(phoneNo)) { if (!Objects.equals(KEY, key) || !ValidationUtil.validatePhoneNo(phoneNo)) {
return JsonResult.buildErrorStateResult(null, null); return JsonResult.buildErrorStateResult(null, null);
...@@ -105,7 +107,7 @@ public class SyncUserController { ...@@ -105,7 +107,7 @@ public class SyncUserController {
} }
@RequestMapping("/user_uuid") @RequestMapping("/user_uuid")
public JsonResult fetchUserByUuid(String key, String uuid,@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) { public JsonResult fetchUserByUuid(String key, String uuid,@RequestHeader(value = Constants.X_AUTH_TENANT,defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
if (StringUtils.isEmpty(key) || !KEY.equals(key)) { if (StringUtils.isEmpty(key) || !KEY.equals(key)) {
return JsonResult.buildErrorStateResult(null, null); return JsonResult.buildErrorStateResult(null, null);
} }
...@@ -128,7 +130,7 @@ public class SyncUserController { ...@@ -128,7 +130,7 @@ public class SyncUserController {
*/ */
@IpValidator @IpValidator
@RequestMapping("/listByUserIds") @RequestMapping("/listByUserIds")
public JsonResult listByUserIds(String userIds,@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) { public JsonResult listByUserIds(String userIds,@RequestHeader(value = Constants.X_AUTH_TENANT,defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
// 过滤掉合法的多个数值串间的空白值 // 过滤掉合法的多个数值串间的空白值
userIds = ValidationUtil.filterNumbers(userIds); userIds = ValidationUtil.filterNumbers(userIds);
if (!ValidationUtil.validateNumbers(userIds)) { if (!ValidationUtil.validateNumbers(userIds)) {
......
...@@ -40,7 +40,7 @@ public class UserApiController { ...@@ -40,7 +40,7 @@ public class UserApiController {
private ISmsService smsService; private ISmsService smsService;
@RequestMapping("/user/is_passwd_set") @RequestMapping("/user/is_passwd_set")
public JsonResult isPasswordSet(String phoneNo , @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) { public JsonResult isPasswordSet(String phoneNo , @RequestHeader(value = Constants.X_AUTH_TENANT,defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
if (StringUtils.isEmpty(phoneNo)) { if (StringUtils.isEmpty(phoneNo)) {
return JsonResult.buildErrorStateResult(null, null); return JsonResult.buildErrorStateResult(null, null);
} }
...@@ -67,7 +67,7 @@ public class UserApiController { ...@@ -67,7 +67,7 @@ public class UserApiController {
public JsonResult checkToken( public JsonResult checkToken(
@PathVariable("token") String token, @PathVariable("token") String token,
@RequestParam(name = "prolong", required = false, defaultValue = "false") Boolean prolong, @RequestParam(name = "prolong", required = false, defaultValue = "false") Boolean prolong,
@RequestParam(name = "prolongTime", required = false, defaultValue = "86400") Long prolongTime , @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) { @RequestParam(name = "prolongTime", required = false, defaultValue = "86400") Long prolongTime , @RequestHeader(value =Constants.X_AUTH_TENANT,defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
if (Objects.isNull(token) || !ValidationUtil.validateToken(token)) { if (Objects.isNull(token) || !ValidationUtil.validateToken(token)) {
return JsonResult.buildErrorStateResult("token regular invalid ", token); return JsonResult.buildErrorStateResult("token regular invalid ", token);
} }
......
...@@ -82,7 +82,7 @@ public class UserCenterController { ...@@ -82,7 +82,7 @@ public class UserCenterController {
* @return * @return
*/ */
@RequestMapping("/queryNick") @RequestMapping("/queryNick")
public JsonResult queryUserNick(String phoneNo , @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) { public JsonResult queryUserNick(String phoneNo , @RequestHeader(value = Constants.X_AUTH_TENANT,defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
if (StringUtils.isEmpty(phoneNo)) { if (StringUtils.isEmpty(phoneNo)) {
log.error("手机号为空,phoneNo:{}", phoneNo); log.error("手机号为空,phoneNo:{}", phoneNo);
return JsonResult.buildErrorStateResult("参数不合法", null); return JsonResult.buildErrorStateResult("参数不合法", null);
...@@ -107,7 +107,7 @@ public class UserCenterController { ...@@ -107,7 +107,7 @@ public class UserCenterController {
* @return * @return
*/ */
@RequestMapping("/saveNick") @RequestMapping("/saveNick")
public JsonResult saveUserNick(String phoneNo, String nick , @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) { public JsonResult saveUserNick(String phoneNo, String nick , @RequestHeader(value =Constants.X_AUTH_TENANT,defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
if (StringUtils.isEmpty(phoneNo)) { if (StringUtils.isEmpty(phoneNo)) {
log.error("手机号为空,phoneNo:{}", phoneNo); log.error("手机号为空,phoneNo:{}", phoneNo);
return JsonResult.buildErrorStateResult("参数不合法", null); return JsonResult.buildErrorStateResult("参数不合法", null);
...@@ -154,7 +154,7 @@ public class UserCenterController { ...@@ -154,7 +154,7 @@ public class UserCenterController {
* @return * @return
*/ */
@RequestMapping("/save/avatar") @RequestMapping("/save/avatar")
public JsonResult SaveUserAvatarAddr(String phoneNo, String avatarUrl , @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) { public JsonResult SaveUserAvatarAddr(String phoneNo, String avatarUrl , @RequestHeader(value = Constants.X_AUTH_TENANT,defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
if (StringUtils.isBlank(avatarUrl) || StringUtils.isBlank(phoneNo)) { if (StringUtils.isBlank(avatarUrl) || StringUtils.isBlank(phoneNo)) {
log.error("参数不合法:avatarUrl:{}, phoneNo:{}", avatarUrl, phoneNo); log.error("参数不合法:avatarUrl:{}, phoneNo:{}", avatarUrl, phoneNo);
return JsonResult.buildErrorStateResult("参数不合法", null); return JsonResult.buildErrorStateResult("参数不合法", null);
...@@ -181,7 +181,7 @@ public class UserCenterController { ...@@ -181,7 +181,7 @@ public class UserCenterController {
* @return * @return
*/ */
@RequestMapping("/query/verified") @RequestMapping("/query/verified")
public JsonResult queryVerified(String phoneNo,@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) { public JsonResult queryVerified(String phoneNo,@RequestHeader(value = Constants.X_AUTH_TENANT,defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
if (StringUtils.isEmpty(phoneNo)) { if (StringUtils.isEmpty(phoneNo)) {
log.error("手机号为空,phoneNo:{}", phoneNo); log.error("手机号为空,phoneNo:{}", phoneNo);
return JsonResult.buildErrorStateResult("参数不合法", null); return JsonResult.buildErrorStateResult("参数不合法", null);
...@@ -207,7 +207,7 @@ public class UserCenterController { ...@@ -207,7 +207,7 @@ public class UserCenterController {
@AccessForbiddenValidator @AccessForbiddenValidator
@PasswordFreeAccessValidator @PasswordFreeAccessValidator
@RequestMapping("/personalData") @RequestMapping("/personalData")
public JsonResult personalData(String phoneNo , @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) { public JsonResult personalData(String phoneNo , @RequestHeader(value = Constants.X_AUTH_TENANT,defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
if (StringUtils.isBlank(phoneNo)) { if (StringUtils.isBlank(phoneNo)) {
log.error("手机号为空,phoneNo:{}", phoneNo); log.error("手机号为空,phoneNo:{}", phoneNo);
return JsonResult.buildErrorStateResult("参数不合法", null); return JsonResult.buildErrorStateResult("参数不合法", null);
......
package cn.quantgroup.xyqb.controller.middleoffice.applet; package cn.quantgroup.xyqb.controller.middleoffice.applet;
import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.constant.UserConstant; import cn.quantgroup.xyqb.constant.UserConstant;
import cn.quantgroup.xyqb.controller.middleoffice.login.ILoginModule; import cn.quantgroup.xyqb.controller.middleoffice.login.ILoginModule;
import cn.quantgroup.xyqb.controller.middleoffice.login.LoginVo; import cn.quantgroup.xyqb.controller.middleoffice.login.LoginVo;
...@@ -65,7 +66,7 @@ public class AppletController { ...@@ -65,7 +66,7 @@ public class AppletController {
*/ */
@Validated @Validated
@PostMapping("/login") @PostMapping("/login")
public JsonResult login(@RequestParam String appName, @RequestParam String openId, @RequestParam(required = false) Integer tenantId, String utmSource, @RequestParam(required = false) Integer appNo, @RequestParam(required = false) String unionId, @RequestParam(value = "appId",defaultValue = UserConstant.defaultAppId) String appId) { public JsonResult login(@RequestParam String appName, @RequestParam String openId, @RequestParam(required = false) Integer tenantId, String utmSource, @RequestParam(required = false) Integer appNo, @RequestParam(required = false) String unionId, @RequestHeader(value = Constants.X_AUTH_APP_ID,defaultValue = UserConstant.defaultAppId) String appId) {
if (!containsAppName(appName)) { if (!containsAppName(appName)) {
throw new DataException("appName不合法"); throw new DataException("appName不合法");
} }
......
package cn.quantgroup.xyqb.controller.middleoffice.login; package cn.quantgroup.xyqb.controller.middleoffice.login;
import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.constant.UserConstant; import cn.quantgroup.xyqb.constant.UserConstant;
import cn.quantgroup.xyqb.controller.middleoffice.common.VerifyTypeEnum; import cn.quantgroup.xyqb.controller.middleoffice.common.VerifyTypeEnum;
import cn.quantgroup.xyqb.model.JsonResult; import cn.quantgroup.xyqb.model.JsonResult;
...@@ -27,20 +28,20 @@ public class LoginController { ...@@ -27,20 +28,20 @@ public class LoginController {
@RequestParam(required = false) String appChannel, @RequestParam(required = false) String appChannel,
@RequestParam(required = false) String wechatOpenId, @RequestParam(required = false) String wechatOpenId,
@RequestParam String phoneNo, @RequestParam String phoneNo,
@RequestParam(required = false) String verify,@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId @RequestParam(required = false) String verify,@RequestHeader(value =Constants.X_AUTH_TENANT,defaultValue = UserConstant.defaultTenantIdString) Integer tenantId
) { ) {
LoginVo login = loginModule.login(type, autoReg, channelId, appChannel, wechatOpenId, phoneNo, verify,tenantId); LoginVo login = loginModule.login(type, autoReg, channelId, appChannel, wechatOpenId, phoneNo, verify,tenantId);
return JsonResult.buildSuccessResultGeneric(login); return JsonResult.buildSuccessResultGeneric(login);
} }
@PatchMapping("/modify/pwd") @PatchMapping("/modify/pwd")
public JsonResult modifyByPwd(String phoneNo, String password, String passwordNew,@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) { public JsonResult modifyByPwd(String phoneNo, String password, String passwordNew,@RequestHeader(value = Constants.X_AUTH_TENANT,defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
loginModule.modifyPwd(VerifyTypeEnum.pwd, phoneNo, password, passwordNew,tenantId); loginModule.modifyPwd(VerifyTypeEnum.pwd, phoneNo, password, passwordNew,tenantId);
return JsonResult.buildSuccessResult(); return JsonResult.buildSuccessResult();
} }
@PatchMapping("/modify/sms") @PatchMapping("/modify/sms")
public JsonResult modifyBySms(String phoneNo, String password, String verificationCode,@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) { public JsonResult modifyBySms(String phoneNo, String password, String verificationCode,@RequestHeader(value = Constants.X_AUTH_TENANT,defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
loginModule.modifyPwd(VerifyTypeEnum.sms, phoneNo, password, verificationCode,tenantId); loginModule.modifyPwd(VerifyTypeEnum.sms, phoneNo, password, verificationCode,tenantId);
return JsonResult.buildSuccessResult(); return JsonResult.buildSuccessResult();
} }
......
package cn.quantgroup.xyqb.controller.middleoffice.user; package cn.quantgroup.xyqb.controller.middleoffice.user;
import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.constant.UserConstant; import cn.quantgroup.xyqb.constant.UserConstant;
import cn.quantgroup.xyqb.entity.User; import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.event.DisableActiveEvent; import cn.quantgroup.xyqb.event.DisableActiveEvent;
...@@ -35,7 +36,7 @@ public class UserController { ...@@ -35,7 +36,7 @@ public class UserController {
private ISessionService sessionService; private ISessionService sessionService;
@PutMapping("/enable/{userId}") @PutMapping("/enable/{userId}")
public JsonResult enable(@PathVariable Long userId , @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) { public JsonResult enable(@PathVariable Long userId , @RequestHeader(value = Constants.X_AUTH_TENANT,defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
User user = userService.findById(userId,tenantId); User user = userService.findById(userId,tenantId);
if (user == null) { if (user == null) {
//todo 用户不存在,怎么处理 //todo 用户不存在,怎么处理
...@@ -49,7 +50,7 @@ public class UserController { ...@@ -49,7 +50,7 @@ public class UserController {
} }
@PutMapping("/disable/{userId}") @PutMapping("/disable/{userId}")
public JsonResult disable(@PathVariable Long userId , @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) { public JsonResult disable(@PathVariable Long userId , @RequestHeader(value = Constants.X_AUTH_TENANT,defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
User user = userService.findById(userId,tenantId); User user = userService.findById(userId,tenantId);
if (user == null) { if (user == null) {
//todo 用户不存在,怎么处理 //todo 用户不存在,怎么处理
...@@ -68,7 +69,7 @@ public class UserController { ...@@ -68,7 +69,7 @@ public class UserController {
} }
@GetMapping("/userId/{userId}") @GetMapping("/userId/{userId}")
public JsonResult user(@PathVariable Long userId , @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) { public JsonResult user(@PathVariable Long userId , @RequestHeader(value = Constants.X_AUTH_TENANT,defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
User user = userService.findById(userId,tenantId); User user = userService.findById(userId,tenantId);
//TODO convert to userVO //TODO convert to userVO
return JsonResult.buildSuccessResultGeneric(user); return JsonResult.buildSuccessResultGeneric(user);
...@@ -76,14 +77,14 @@ public class UserController { ...@@ -76,14 +77,14 @@ public class UserController {
@GetMapping("/phoneNo/{phoneNo}") @GetMapping("/phoneNo/{phoneNo}")
public JsonResult user(@PathVariable String phoneNo , @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) { public JsonResult user(@PathVariable String phoneNo , @RequestHeader(value = Constants.X_AUTH_TENANT,defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
User user = userService.findByPhoneInDb(phoneNo,tenantId); User user = userService.findByPhoneInDb(phoneNo,tenantId);
//TODO convert to userVO //TODO convert to userVO
return JsonResult.buildSuccessResultGeneric(user); return JsonResult.buildSuccessResultGeneric(user);
} }
@GetMapping("/uuid/{uuid}") @GetMapping("/uuid/{uuid}")
public JsonResult uuid(@PathVariable String uuid , @RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) { public JsonResult uuid(@PathVariable String uuid , @RequestHeader(value = Constants.X_AUTH_TENANT,defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
User user = userService.findByUuidWithCache(uuid,tenantId); User user = userService.findByUuidWithCache(uuid,tenantId);
//TODO convert to userVO //TODO convert to userVO
return JsonResult.buildSuccessResultGeneric(user); return JsonResult.buildSuccessResultGeneric(user);
......
package cn.quantgroup.xyqb.controller.middleoffice.userdetail; package cn.quantgroup.xyqb.controller.middleoffice.userdetail;
import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.constant.UserConstant; import cn.quantgroup.xyqb.constant.UserConstant;
import cn.quantgroup.xyqb.controller.middleoffice.userdetail.req.UserDetailReq; import cn.quantgroup.xyqb.controller.middleoffice.userdetail.req.UserDetailReq;
import cn.quantgroup.xyqb.entity.User; import cn.quantgroup.xyqb.entity.User;
...@@ -37,7 +38,7 @@ public class UserDetailController { ...@@ -37,7 +38,7 @@ public class UserDetailController {
*/ */
@PutMapping("/{userId}") @PutMapping("/{userId}")
public JsonResult update(@PathVariable Long userId, public JsonResult update(@PathVariable Long userId,
@Valid @RequestBody UserDetailReq userDetailReq,@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) { @Valid @RequestBody UserDetailReq userDetailReq,@RequestHeader(value = Constants.X_AUTH_TENANT,defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
UserInfoEntity userDetail = userInfoRepository.findByUserIdAndTenantId(userId,tenantId); UserInfoEntity userDetail = userInfoRepository.findByUserIdAndTenantId(userId,tenantId);
if (userDetail == null) { if (userDetail == null) {
return save(userId, userDetailReq,tenantId); return save(userId, userDetailReq,tenantId);
...@@ -58,7 +59,7 @@ public class UserDetailController { ...@@ -58,7 +59,7 @@ public class UserDetailController {
*/ */
@PostMapping("/{userId}") @PostMapping("/{userId}")
public JsonResult save(@PathVariable Long userId, public JsonResult save(@PathVariable Long userId,
@Valid @RequestBody UserDetailReq userDetailReq,@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) { @Valid @RequestBody UserDetailReq userDetailReq,@RequestHeader(value = Constants.X_AUTH_TENANT,defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
UserInfoEntity userDetail = userInfoRepository.findByUserIdAndTenantId(userId,tenantId); UserInfoEntity userDetail = userInfoRepository.findByUserIdAndTenantId(userId,tenantId);
if (userDetail != null) { if (userDetail != null) {
return JsonResult.buildSuccessResultGeneric(userDetail); return JsonResult.buildSuccessResultGeneric(userDetail);
...@@ -82,7 +83,7 @@ public class UserDetailController { ...@@ -82,7 +83,7 @@ public class UserDetailController {
* @return * @return
*/ */
@GetMapping("/userId/{userId}") @GetMapping("/userId/{userId}")
public JsonResult query(@PathVariable Long userId,@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) { public JsonResult query(@PathVariable Long userId,@RequestHeader(value = Constants.X_AUTH_TENANT,defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
UserInfoEntity userDetail = userInfoRepository.findByUserIdAndTenantId(userId,tenantId); UserInfoEntity userDetail = userInfoRepository.findByUserIdAndTenantId(userId,tenantId);
return JsonResult.buildSuccessResultGeneric(userDetail); return JsonResult.buildSuccessResultGeneric(userDetail);
} }
...@@ -94,7 +95,7 @@ public class UserDetailController { ...@@ -94,7 +95,7 @@ public class UserDetailController {
* @return * @return
*/ */
@GetMapping("/phoneNo/{phoneNo}") @GetMapping("/phoneNo/{phoneNo}")
public JsonResult query(@PathVariable String phoneNo,@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) { public JsonResult query(@PathVariable String phoneNo,@RequestHeader(value = Constants.X_AUTH_TENANT,defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
UserInfoEntity userDetail = userInfoRepository.findByPhoneNoAndTenantId(phoneNo,tenantId); UserInfoEntity userDetail = userInfoRepository.findByPhoneNoAndTenantId(phoneNo,tenantId);
return JsonResult.buildSuccessResultGeneric(userDetail); return JsonResult.buildSuccessResultGeneric(userDetail);
} }
......
package cn.quantgroup.xyqb.controller.middleoffice.userext; package cn.quantgroup.xyqb.controller.middleoffice.userext;
import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.constant.UserConstant; import cn.quantgroup.xyqb.constant.UserConstant;
import cn.quantgroup.xyqb.controller.middleoffice.userext.req.UserExtReq; import cn.quantgroup.xyqb.controller.middleoffice.userext.req.UserExtReq;
import cn.quantgroup.xyqb.model.JsonResult; import cn.quantgroup.xyqb.model.JsonResult;
...@@ -29,7 +30,7 @@ public class UserExtController { ...@@ -29,7 +30,7 @@ public class UserExtController {
//todo 保存失败的各种场景。 //todo 保存失败的各种场景。
@PutMapping("/{userId}") @PutMapping("/{userId}")
public JsonResult ext(@PathVariable Long userId, @RequestBody UserExtReq userExtReq,@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) { public JsonResult ext(@PathVariable Long userId, @RequestBody UserExtReq userExtReq,@RequestHeader(value = Constants.X_AUTH_TENANT,defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
if (userExtReq.getEmail() != null) { if (userExtReq.getEmail() != null) {
userInfoRepository.updateUserEmail(userExtReq.getEmail(),userId,tenantId); userInfoRepository.updateUserEmail(userExtReq.getEmail(),userId,tenantId);
} }
......
package cn.quantgroup.xyqb.controller.middleoffice.wx; package cn.quantgroup.xyqb.controller.middleoffice.wx;
import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.constant.UserConstant; import cn.quantgroup.xyqb.constant.UserConstant;
import cn.quantgroup.xyqb.entity.WechatUserInfo; import cn.quantgroup.xyqb.entity.WechatUserInfo;
import cn.quantgroup.xyqb.model.JsonResult; import cn.quantgroup.xyqb.model.JsonResult;
...@@ -82,7 +83,7 @@ public class WxController { ...@@ -82,7 +83,7 @@ public class WxController {
} }
@PatchMapping("/forbidden/{userId}") @PatchMapping("/forbidden/{userId}")
public JsonResult forbidden(@PathVariable Long userId, String reason,@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) { public JsonResult forbidden(@PathVariable Long userId, String reason,@RequestHeader(value = Constants.X_AUTH_TENANT,defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
int res = wechatService.forbiddenUserWeChat(userId,tenantId); int res = wechatService.forbiddenUserWeChat(userId,tenantId);
log.info("取消微信关联 userId:{},reason:{},结果:{}", userId, reason, res); log.info("取消微信关联 userId:{},reason:{},结果:{}", userId, reason, res);
return JsonResult.buildSuccessResultGeneric(res); return JsonResult.buildSuccessResultGeneric(res);
...@@ -92,7 +93,7 @@ public class WxController { ...@@ -92,7 +93,7 @@ public class WxController {
* *
*/ */
@PostMapping("/v1/getByOpenIdToUserIds") @PostMapping("/v1/getByOpenIdToUserIds")
public JsonResult getByOpenIdToUserIds(@RequestBody Map<String, Object> params, @RequestParam(required = false, defaultValue = "wuxi") String appName,@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) { public JsonResult getByOpenIdToUserIds(@RequestBody Map<String, Object> params, @RequestParam(required = false, defaultValue = "wuxi") String appName,@RequestHeader(value = Constants.X_AUTH_TENANT,defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
log.info("根据userIds获取用户的openId {}, appName:{}", params, appName); log.info("根据userIds获取用户的openId {}, appName:{}", params, appName);
List<Integer> userIds = (List<Integer>) params.get("userIds"); List<Integer> userIds = (List<Integer>) params.get("userIds");
if (userIds.isEmpty()) { if (userIds.isEmpty()) {
......
package cn.quantgroup.xyqb.controller.modifyphoneno; package cn.quantgroup.xyqb.controller.modifyphoneno;
import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.constant.UserConstant; import cn.quantgroup.xyqb.constant.UserConstant;
import cn.quantgroup.xyqb.controller.IBaseController; import cn.quantgroup.xyqb.controller.IBaseController;
import cn.quantgroup.xyqb.controller.modifyphoneno.req.*; import cn.quantgroup.xyqb.controller.modifyphoneno.req.*;
...@@ -52,7 +53,7 @@ public class ModifyPhoneNoController implements IBaseController { ...@@ -52,7 +53,7 @@ public class ModifyPhoneNoController implements IBaseController {
* @return * @return
*/ */
@PostMapping("/step_1") @PostMapping("/step_1")
public JsonResult step1(@Valid @RequestBody Step1Req step1Req,@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) { public JsonResult step1(@Valid @RequestBody Step1Req step1Req,@RequestHeader(value = Constants.X_AUTH_TENANT,defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
User user = getCurrentUserFromRedis(); User user = getCurrentUserFromRedis();
if (user == null) { if (user == null) {
return JsonResult.buildErrorStateResult("系统错误", null); return JsonResult.buildErrorStateResult("系统错误", null);
...@@ -92,7 +93,7 @@ public class ModifyPhoneNoController implements IBaseController { ...@@ -92,7 +93,7 @@ public class ModifyPhoneNoController implements IBaseController {
* 后台客服处理功能 - 人工审核 * 后台客服处理功能 - 人工审核
*/ */
@PostMapping("/audit") @PostMapping("/audit")
public JsonResult audit(@Valid @RequestBody AuditReq auditReq,@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) { public JsonResult audit(@Valid @RequestBody AuditReq auditReq,@RequestHeader(value = Constants.X_AUTH_TENANT,defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
modifyPhoneNoService.audit(auditReq,tenantId); modifyPhoneNoService.audit(auditReq,tenantId);
return JsonResult.buildSuccessResult(); return JsonResult.buildSuccessResult();
} }
...@@ -162,7 +163,7 @@ public class ModifyPhoneNoController implements IBaseController { ...@@ -162,7 +163,7 @@ public class ModifyPhoneNoController implements IBaseController {
} }
@PostMapping("/rejectReason/save") @PostMapping("/rejectReason/save")
public JsonResult saveRejectReason(@Valid @RequestBody ModifyRejectRecord modifyRejectRecord,@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId){ public JsonResult saveRejectReason(@Valid @RequestBody ModifyRejectRecord modifyRejectRecord,@RequestHeader(value = Constants.X_AUTH_TENANT,defaultValue = UserConstant.defaultTenantIdString) Integer tenantId){
modifyPhoneNoService.saveRejectReason(modifyRejectRecord,tenantId); modifyPhoneNoService.saveRejectReason(modifyRejectRecord,tenantId);
return JsonResult.buildSuccessResult("保存手机号修改失败原因成功"); return JsonResult.buildSuccessResult("保存手机号修改失败原因成功");
} }
......
...@@ -16,4 +16,9 @@ public class BizException extends RuntimeException { ...@@ -16,4 +16,9 @@ public class BizException extends RuntimeException {
this.msg = bizExceptionEnum.getMsg(); this.msg = bizExceptionEnum.getMsg();
this.businessCode = bizExceptionEnum.getBusinessCode(); this.businessCode = bizExceptionEnum.getBusinessCode();
} }
public BizException(BizExceptionEnum bizExceptionEnum,String attach) {
this.msg = bizExceptionEnum.getMsg()+attach;
this.businessCode = bizExceptionEnum.getBusinessCode();
}
} }
...@@ -17,6 +17,8 @@ public enum BizExceptionEnum { ...@@ -17,6 +17,8 @@ public enum BizExceptionEnum {
ERROR_SMS_CODE("1006","短信验证码错误"), ERROR_SMS_CODE("1006","短信验证码错误"),
ERROR_OR_ENABLE_ERROR("1007","账号异常,请联系平台客服。"), ERROR_OR_ENABLE_ERROR("1007","账号异常,请联系平台客服。"),
ERROR_DIRECT_LOGIN("1008","极验登录验证失败"), ERROR_DIRECT_LOGIN("1008","极验登录验证失败"),
ERROR_WECHAT_APP_ID("1009","请先配置微信appId"),
ERROR_WECHAT_LOGIN("1010","微信登录失败"),
// 验证码相关 20 开头 // 验证码相关 20 开头
......
package cn.quantgroup.xyqb.model;
import lombok.Data;
@Data
public class WechatConfigBean {
private Integer tenantId;
private String appId;
private String appSecret;
/**
* 0:为小程序
*/
private Integer type;
}
package cn.quantgroup.xyqb.model;
import lombok.Data;
@Data
public class WechatPhoneBean {
private Integer errcode;
private String errmsg;
private Phone phone_info;
@Data
public static class Phone {
private String phoneNumber;
private String purePhoneNumber;
private String countryCode;
}
}
package cn.quantgroup.xyqb.model.v2.login;
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Data
public class WechatMiniLoginParam extends BaseLoginParam{
/**
* 微信appId
*/
private String appId;
/**
* 微信login的code
*/
private String code;
}
package cn.quantgroup.xyqb.model.v2.login;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotNull;
@EqualsAndHashCode(callSuper = true)
@Data
public class WechatMiniPhoneLoginParam extends WechatMiniLoginParam {
/**
* 手机号获取凭证
*/
@NotNull
private String phoneCode;
}
package cn.quantgroup.xyqb.remote;
import cn.quantgroup.xyqb.model.WechatPhoneBean;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.Map;
@FeignClient(name = "wechatRemoteService", url = "https://api.weixin.qq.com")
public interface WechatRemoteService {
@GetMapping(value = "/sns/jscode2session?grant_type=authorization_code",consumes = MediaType.APPLICATION_JSON_VALUE,produces=MediaType.APPLICATION_JSON_VALUE)
String login(@RequestParam("appid") String appid,@RequestParam("secret") String secret,@RequestParam("js_code") String jsCode);
@GetMapping("/cgi-bin/token?grant_type=client_credential")
Map<String,String> getAccessToken(@RequestParam("appid") String appid,@RequestParam("secret") String secret);
@PostMapping("/wxa/business/getuserphonenumber")
WechatPhoneBean getUserPhoneNumber(@RequestParam("access_token") String accessToken, @RequestBody Map<String,String> code);
}
\ No newline at end of file
package cn.quantgroup.xyqb.service.v2; package cn.quantgroup.xyqb.service.v2;
import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.config.data.WechatConfiguration;
import cn.quantgroup.xyqb.controller.req.v2.LoginReq; import cn.quantgroup.xyqb.controller.req.v2.LoginReq;
import cn.quantgroup.xyqb.exception.BizException;
import cn.quantgroup.xyqb.exception.BizExceptionEnum;
import cn.quantgroup.xyqb.model.LoginBean; import cn.quantgroup.xyqb.model.LoginBean;
import cn.quantgroup.xyqb.model.WechatConfigBean;
import cn.quantgroup.xyqb.model.session.SessionStruct;
import cn.quantgroup.xyqb.model.v2.login.BaseLoginParam; import cn.quantgroup.xyqb.model.v2.login.BaseLoginParam;
import cn.quantgroup.xyqb.model.v2.login.WechatMiniLoginParam;
import cn.quantgroup.xyqb.remote.WechatRemoteService;
import cn.quantgroup.xyqb.session.XyqbSessionContextHolder;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.lang.reflect.Type;
import java.util.Map;
/** /**
* 微信小程序登录 * 微信小程序登录
*/ */
@Service @Service
@Slf4j
public class WechatMiniLoginStrategy implements LoginStrategy{ public class WechatMiniLoginStrategy implements LoginStrategy{
private final WechatRemoteService wechatRemoteService;
private final WechatConfiguration wechatConfiguration;
private final Gson gson;
public WechatMiniLoginStrategy(WechatRemoteService wechatRemoteService, WechatConfiguration wechatConfiguration, Gson gson) {
this.wechatRemoteService = wechatRemoteService;
this.wechatConfiguration = wechatConfiguration;
this.gson = gson;
}
@Override @Override
public Integer getType() { public Integer getType() {
return 2101; return 2101;
...@@ -18,12 +44,47 @@ public class WechatMiniLoginStrategy implements LoginStrategy{ ...@@ -18,12 +44,47 @@ public class WechatMiniLoginStrategy implements LoginStrategy{
@Override @Override
public LoginBean login(BaseLoginParam param) { public LoginBean login(BaseLoginParam param) {
WechatMiniLoginParam loginParam = (WechatMiniLoginParam)param;
SessionStruct sessionStruct = XyqbSessionContextHolder.getXSession();
//1、微信登录逻辑
WechatConfigBean wechatConfigBean = wechatConfiguration.getByAppIdAndTenantId(loginParam.getAppId(),sessionStruct.getTenantId());
String response =wechatRemoteService.login(wechatConfigBean.getAppId(),wechatConfigBean.getAppSecret(),((WechatMiniLoginParam) param).getCode());
Type resultType = new TypeToken<Map<String, String>>() {
}.getType();
Map<String, String> responseMap = gson.fromJson(response, resultType);
String openid,sessionKey,unionId;
assert responseMap != null;
if (responseMap.containsKey("errcode") && Integer.parseInt(responseMap.get("errcode")) != 0) {
log.error("code:{},errcode:{},errmsg:{}", ((WechatMiniLoginParam) param).getCode(), responseMap.get("errcode"),
responseMap.get("errmsg"));
throw new BizException(BizExceptionEnum.ERROR_WECHAT_LOGIN,responseMap.get("errmsg"));
} else {
openid = responseMap.get("openid");
if (responseMap.containsKey("session_key")) {
sessionKey = responseMap.get("session_key");
}
if (responseMap.containsKey("unionid")) {
unionId = responseMap.get("unionid");
}
}
//2、登录判断逻辑
return null; return null;
} }
@Override @Override
public BaseLoginParam checkParam(LoginReq loginReq) { public BaseLoginParam checkParam(LoginReq loginReq) {
return null; WechatMiniLoginParam param = loginReq.getData().toJavaObject(WechatMiniLoginParam.class);
validator.validate(param);
return param;
} }
} }
...@@ -3,6 +3,7 @@ package cn.quantgroup.xyqb.service.v2; ...@@ -3,6 +3,7 @@ package cn.quantgroup.xyqb.service.v2;
import cn.quantgroup.xyqb.controller.req.v2.LoginReq; import cn.quantgroup.xyqb.controller.req.v2.LoginReq;
import cn.quantgroup.xyqb.model.LoginBean; import cn.quantgroup.xyqb.model.LoginBean;
import cn.quantgroup.xyqb.model.v2.login.BaseLoginParam; import cn.quantgroup.xyqb.model.v2.login.BaseLoginParam;
import cn.quantgroup.xyqb.model.v2.login.WechatMiniPhoneLoginParam;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
/** /**
...@@ -22,7 +23,9 @@ public class WechatMiniPhoneLoginStrategy implements LoginStrategy { ...@@ -22,7 +23,9 @@ public class WechatMiniPhoneLoginStrategy implements LoginStrategy {
@Override @Override
public BaseLoginParam checkParam(LoginReq loginReq) { public BaseLoginParam checkParam(LoginReq loginReq) {
return null; WechatMiniPhoneLoginParam param = loginReq.getData().toJavaObject(WechatMiniPhoneLoginParam.class);
validator.validate(param);
return param;
} }
} }
package cn.quantgroup.xyqb.xxlJob;
import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.config.data.WechatConfiguration;
import cn.quantgroup.xyqb.remote.WechatRemoteService;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import java.util.Map;
@Component
@Slf4j
public class WechatTokenReloadJobHandler {
private final WechatConfiguration configuration;
private final WechatRemoteService wechatRemoteService;
@Autowired
@Qualifier("stringRedisTemplate")
private RedisTemplate<String, String> redisTemplate;
public WechatTokenReloadJobHandler(WechatConfiguration configuration, WechatRemoteService wechatRemoteService) {
this.configuration = configuration;
this.wechatRemoteService = wechatRemoteService;
}
/**
* 目前是7200秒之内的值。定时任务需要小于2小时
*/
@XxlJob(value = "wechatTokenReloadJobHandler")
public void execute() {
configuration.getList().stream().filter(i->i.getType()==0).forEach(i->{
Map<String,String > result = wechatRemoteService.getAccessToken(i.getAppId(),i.getAppSecret());
if (result.containsKey("errcode")) {
log.error("微信获取token失败:{}", i.getAppId());
} else {
redisTemplate.opsForValue().set(Constants.WECHAT_ACCESS_TOKEN_REDIS+i.getAppId(),result.get("access_token"));
}
});
}
}
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