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

update RequestHeader(app_id and tenantId)

parent 9238ed78
......@@ -34,6 +34,7 @@ public interface Constants {
String X_AUTH_TOKEN = "x-auth-token";
String X_AUTH_TENANT = "qg-tenant-id";
String X_AUTH_APP_ID = "qg-app-id";
String X_AUTH_FROM = "qg-registered-from";
......@@ -97,6 +98,8 @@ public interface Constants {
String REDIRECT_ORDER = "orders";
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 {
@RequestMapping("/receiveCode/extdata/{key}/{extdata}")
public void receiveCodeWithExtData(String code, @PathVariable(value = "key") String systemKey,
@PathVariable(value = "extdata") String extData, HttpServletResponse response,
@RequestParam(value = "appId",defaultValue = UserConstant.defaultAppId) String appId
,@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId ) {
@RequestHeader(value = Constants.X_AUTH_APP_ID,defaultValue = UserConstant.defaultAppId) String appId
,@RequestHeader(value = Constants.X_AUTH_TENANT,defaultValue = UserConstant.defaultTenantIdString) Integer tenantId ) {
Long registerFrom = null;
String redirect = null;
String schema = null;
......@@ -348,8 +348,8 @@ public class WeChatController implements IBaseController {
*/
@RequestMapping("/receiveCode/{key}")
public void receiveCodeNoRedirect(String code, @PathVariable(value = "key") String systemKey, HttpServletRequest request, HttpServletResponse response,
@RequestParam(value = "appId",defaultValue = UserConstant.defaultAppId) String appId,
@RequestParam(value = "tenantId",defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
@RequestHeader(value = Constants.X_AUTH_APP_ID,defaultValue = UserConstant.defaultAppId) String appId,
@RequestHeader(value = Constants.X_AUTH_TENANT,defaultValue = UserConstant.defaultTenantIdString) Integer tenantId) {
Long registerFrom = null;
String redirect = null;
String schema = Constants.PROTOCOL_HEAD_HTTP;
......@@ -462,7 +462,7 @@ public class WeChatController implements IBaseController {
@RequestMapping("/userIdToUnionId")
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;
if (userId != null && userId > 0) {
wechatUserInfoList = wechatService.queryListByUserId(userId,tenantId);
......@@ -471,7 +471,7 @@ public class WeChatController implements IBaseController {
}
@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;
if (unionId != null && !"".equals(unionId)) {
wechatUserInfoList = wechatService.queryListByUnionId(unionId,tenantId);
......@@ -480,7 +480,7 @@ public class WeChatController implements IBaseController {
}
@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;
if (MapUtils.isNotEmpty(params)) {
List<String> unionIds = (List<String>) params.get("unionIds");
......
package cn.quantgroup.xyqb.controller.internal.user;
import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.constant.UserConstant;
import cn.quantgroup.xyqb.constant.enums.LoginType;
import cn.quantgroup.xyqb.aspect.accessable.IpValidator;
......@@ -28,6 +29,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.core.Authentication;
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.RequestParam;
import org.springframework.web.bind.annotation.RestController;
......@@ -72,7 +74,7 @@ public class AppController implements IBaseController {
@RequestParam(required = false) Long registerFrom,
@RequestParam(required = true) Long channelId,
@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) {
if (TenantUtil.validationTenantIdIsNullOrZero(tenantId)) {
......@@ -153,7 +155,7 @@ public class AppController implements IBaseController {
@RequestParam(required = false, defaultValue = "1") Long registerFrom,
@RequestParam(required = false, defaultValue = "1") Long channelId,
@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) {
if (!ValidationUtil.validatePhoneNo(phoneNo)) {
return JsonResult.buildErrorStateResult(USER_ERROR_OR_PASSWORD_ERROR, null);
......@@ -208,7 +210,7 @@ public class AppController implements IBaseController {
@RequestParam(required = false, defaultValue = "1") Long registerFrom,
@RequestParam(required = false, defaultValue = "1") Long channelId,
@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) {
if (TenantUtil.validationTenantIdIsNullOrZero(tenantId)) {
......@@ -319,7 +321,7 @@ public class AppController implements IBaseController {
@RequestParam(required = false, defaultValue = "1") Long registerFrom,
@RequestParam(required = false, defaultValue = "1") Long channelId,
@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) {
//默认羊小咩租户
if (TenantUtil.validationTenantIdIsNullOrZero(tenantId)) {
......
package cn.quantgroup.xyqb.controller.internal.user;
import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.aspect.accessable.IpValidator;
import cn.quantgroup.xyqb.constant.UserConstant;
import cn.quantgroup.xyqb.entity.User;
......@@ -14,6 +15,7 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
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.RequestParam;
import org.springframework.web.bind.annotation.RestController;
......@@ -41,7 +43,7 @@ public class SyncUserController {
@RequestMapping("/save_detail")
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)) {
return JsonResult.buildErrorStateResult(null, null);
......@@ -90,7 +92,7 @@ public class SyncUserController {
}
@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)) {
return JsonResult.buildErrorStateResult(null, null);
......@@ -105,7 +107,7 @@ public class SyncUserController {
}
@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)) {
return JsonResult.buildErrorStateResult(null, null);
}
......@@ -128,7 +130,7 @@ public class SyncUserController {
*/
@IpValidator
@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);
if (!ValidationUtil.validateNumbers(userIds)) {
......
......@@ -40,7 +40,7 @@ public class UserApiController {
private ISmsService smsService;
@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)) {
return JsonResult.buildErrorStateResult(null, null);
}
......@@ -67,7 +67,7 @@ public class UserApiController {
public JsonResult checkToken(
@PathVariable("token") String token,
@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)) {
return JsonResult.buildErrorStateResult("token regular invalid ", token);
}
......
......@@ -82,7 +82,7 @@ public class UserCenterController {
* @return
*/
@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)) {
log.error("手机号为空,phoneNo:{}", phoneNo);
return JsonResult.buildErrorStateResult("参数不合法", null);
......@@ -107,7 +107,7 @@ public class UserCenterController {
* @return
*/
@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)) {
log.error("手机号为空,phoneNo:{}", phoneNo);
return JsonResult.buildErrorStateResult("参数不合法", null);
......@@ -154,7 +154,7 @@ public class UserCenterController {
* @return
*/
@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)) {
log.error("参数不合法:avatarUrl:{}, phoneNo:{}", avatarUrl, phoneNo);
return JsonResult.buildErrorStateResult("参数不合法", null);
......@@ -181,7 +181,7 @@ public class UserCenterController {
* @return
*/
@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)) {
log.error("手机号为空,phoneNo:{}", phoneNo);
return JsonResult.buildErrorStateResult("参数不合法", null);
......@@ -207,7 +207,7 @@ public class UserCenterController {
@AccessForbiddenValidator
@PasswordFreeAccessValidator
@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)) {
log.error("手机号为空,phoneNo:{}", phoneNo);
return JsonResult.buildErrorStateResult("参数不合法", null);
......
package cn.quantgroup.xyqb.controller.middleoffice.applet;
import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.constant.UserConstant;
import cn.quantgroup.xyqb.controller.middleoffice.login.ILoginModule;
import cn.quantgroup.xyqb.controller.middleoffice.login.LoginVo;
......@@ -65,7 +66,7 @@ public class AppletController {
*/
@Validated
@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)) {
throw new DataException("appName不合法");
}
......
package cn.quantgroup.xyqb.controller.middleoffice.login;
import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.constant.UserConstant;
import cn.quantgroup.xyqb.controller.middleoffice.common.VerifyTypeEnum;
import cn.quantgroup.xyqb.model.JsonResult;
......@@ -27,20 +28,20 @@ public class LoginController {
@RequestParam(required = false) String appChannel,
@RequestParam(required = false) String wechatOpenId,
@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);
return JsonResult.buildSuccessResultGeneric(login);
}
@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);
return JsonResult.buildSuccessResult();
}
@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);
return JsonResult.buildSuccessResult();
}
......
package cn.quantgroup.xyqb.controller.middleoffice.user;
import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.constant.UserConstant;
import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.event.DisableActiveEvent;
......@@ -35,7 +36,7 @@ public class UserController {
private ISessionService sessionService;
@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);
if (user == null) {
//todo 用户不存在,怎么处理
......@@ -49,7 +50,7 @@ public class UserController {
}
@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);
if (user == null) {
//todo 用户不存在,怎么处理
......@@ -68,7 +69,7 @@ public class UserController {
}
@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);
//TODO convert to userVO
return JsonResult.buildSuccessResultGeneric(user);
......@@ -76,14 +77,14 @@ public class UserController {
@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);
//TODO convert to userVO
return JsonResult.buildSuccessResultGeneric(user);
}
@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);
//TODO convert to userVO
return JsonResult.buildSuccessResultGeneric(user);
......
package cn.quantgroup.xyqb.controller.middleoffice.userdetail;
import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.constant.UserConstant;
import cn.quantgroup.xyqb.controller.middleoffice.userdetail.req.UserDetailReq;
import cn.quantgroup.xyqb.entity.User;
......@@ -37,7 +38,7 @@ public class UserDetailController {
*/
@PutMapping("/{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);
if (userDetail == null) {
return save(userId, userDetailReq,tenantId);
......@@ -58,7 +59,7 @@ public class UserDetailController {
*/
@PostMapping("/{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);
if (userDetail != null) {
return JsonResult.buildSuccessResultGeneric(userDetail);
......@@ -82,7 +83,7 @@ public class UserDetailController {
* @return
*/
@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);
return JsonResult.buildSuccessResultGeneric(userDetail);
}
......@@ -94,7 +95,7 @@ public class UserDetailController {
* @return
*/
@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);
return JsonResult.buildSuccessResultGeneric(userDetail);
}
......
package cn.quantgroup.xyqb.controller.middleoffice.userext;
import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.constant.UserConstant;
import cn.quantgroup.xyqb.controller.middleoffice.userext.req.UserExtReq;
import cn.quantgroup.xyqb.model.JsonResult;
......@@ -29,7 +30,7 @@ public class UserExtController {
//todo 保存失败的各种场景。
@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) {
userInfoRepository.updateUserEmail(userExtReq.getEmail(),userId,tenantId);
}
......
package cn.quantgroup.xyqb.controller.middleoffice.wx;
import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.constant.UserConstant;
import cn.quantgroup.xyqb.entity.WechatUserInfo;
import cn.quantgroup.xyqb.model.JsonResult;
......@@ -82,7 +83,7 @@ public class WxController {
}
@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);
log.info("取消微信关联 userId:{},reason:{},结果:{}", userId, reason, res);
return JsonResult.buildSuccessResultGeneric(res);
......@@ -92,7 +93,7 @@ public class WxController {
*
*/
@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);
List<Integer> userIds = (List<Integer>) params.get("userIds");
if (userIds.isEmpty()) {
......
package cn.quantgroup.xyqb.controller.modifyphoneno;
import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.constant.UserConstant;
import cn.quantgroup.xyqb.controller.IBaseController;
import cn.quantgroup.xyqb.controller.modifyphoneno.req.*;
......@@ -52,7 +53,7 @@ public class ModifyPhoneNoController implements IBaseController {
* @return
*/
@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();
if (user == null) {
return JsonResult.buildErrorStateResult("系统错误", null);
......@@ -92,7 +93,7 @@ public class ModifyPhoneNoController implements IBaseController {
* 后台客服处理功能 - 人工审核
*/
@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);
return JsonResult.buildSuccessResult();
}
......@@ -162,7 +163,7 @@ public class ModifyPhoneNoController implements IBaseController {
}
@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);
return JsonResult.buildSuccessResult("保存手机号修改失败原因成功");
}
......
......@@ -16,4 +16,9 @@ public class BizException extends RuntimeException {
this.msg = bizExceptionEnum.getMsg();
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 {
ERROR_SMS_CODE("1006","短信验证码错误"),
ERROR_OR_ENABLE_ERROR("1007","账号异常,请联系平台客服。"),
ERROR_DIRECT_LOGIN("1008","极验登录验证失败"),
ERROR_WECHAT_APP_ID("1009","请先配置微信appId"),
ERROR_WECHAT_LOGIN("1010","微信登录失败"),
// 验证码相关 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;
import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.config.data.WechatConfiguration;
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.WechatConfigBean;
import cn.quantgroup.xyqb.model.session.SessionStruct;
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 java.lang.reflect.Type;
import java.util.Map;
/**
* 微信小程序登录
*/
@Service
@Slf4j
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
public Integer getType() {
return 2101;
......@@ -18,12 +44,47 @@ public class WechatMiniLoginStrategy implements LoginStrategy{
@Override
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;
}
@Override
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;
import cn.quantgroup.xyqb.controller.req.v2.LoginReq;
import cn.quantgroup.xyqb.model.LoginBean;
import cn.quantgroup.xyqb.model.v2.login.BaseLoginParam;
import cn.quantgroup.xyqb.model.v2.login.WechatMiniPhoneLoginParam;
import org.springframework.stereotype.Service;
/**
......@@ -22,7 +23,9 @@ public class WechatMiniPhoneLoginStrategy implements LoginStrategy {
@Override
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