From 608f4bd5ff1a0024c04af0973b20ed360d1d16a0 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Tue, 09 Nov 2021 11:34:52 +0800
Subject: [PATCH] fix
---
zq-erp/src/main/java/com/matrix/system/app/action/ApiCommonAction.java | 182 +++++++++++++++++++++++++++++++++++++++------
1 files changed, 158 insertions(+), 24 deletions(-)
diff --git a/zq-erp/src/main/java/com/matrix/system/app/action/ApiCommonAction.java b/zq-erp/src/main/java/com/matrix/system/app/action/ApiCommonAction.java
index 6a882aa..133d87d 100644
--- a/zq-erp/src/main/java/com/matrix/system/app/action/ApiCommonAction.java
+++ b/zq-erp/src/main/java/com/matrix/system/app/action/ApiCommonAction.java
@@ -1,22 +1,24 @@
package com.matrix.system.app.action;
-import com.alibaba.fastjson.JSONObject;
-import com.matrix.component.redis.RedisClient;
-import com.matrix.core.constance.MatrixConstance;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
+import com.matrix.component.tools.HttpCurlUtil;
import com.matrix.core.pojo.AjaxResult;
import com.matrix.core.tools.*;
import com.matrix.system.app.authority.AppAuthorityManager;
-import com.matrix.system.app.dto.LoginDto;
-import com.matrix.system.app.dto.PwdResetDto;
-import com.matrix.system.app.dto.SmsCodeDto;
-import com.matrix.system.app.dto.UploadPhotoDto;
+import com.matrix.system.app.dto.*;
import com.matrix.system.app.utils.Sms106Send;
import com.matrix.system.app.vo.UserInfoVo;
import com.matrix.system.common.authority.strategy.AccountPasswordLogin;
import com.matrix.system.common.authority.strategy.LoginStrategy;
+import com.matrix.system.common.bean.SysCompany;
import com.matrix.system.common.bean.SysUsers;
import com.matrix.system.common.constance.AppConstance;
import com.matrix.system.common.dao.BusParameterSettingsDao;
+import com.matrix.system.common.init.LocalCache;
+import com.matrix.system.common.init.UserCacheManager;
+import com.matrix.system.common.interceptor.HostInterceptor;
+import com.matrix.system.common.service.SysCompanyService;
import com.matrix.system.common.service.SysUsersService;
import com.matrix.system.common.tools.PasswordUtil;
import com.matrix.system.common.tools.UploadUtil;
@@ -25,10 +27,12 @@
import com.matrix.system.hive.plugin.util.CollectionUtils;
import com.matrix.system.hive.plugin.util.ImageUtil;
import com.matrix.system.hive.service.SysShopInfoService;
+import com.matrix.system.shopXcx.api.WeChatApiTools;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
+import net.sf.json.JSONObject;
import org.apache.commons.fileupload.FileUploadException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -69,19 +73,28 @@
private BusParameterSettingsDao busParameterSettingsDao;
@Autowired
- private RedisClient redisClient;
+ private SysCompanyService sysCompanyService;;
+
+ @Autowired
+ WeChatApiTools weChatApiTools;
+
+ @Autowired
+ private UserCacheManager userCacheManager;
@Value("${file_storage_path}")
private String fileStoragePath;
@Value("${static_resource_url}")
private String nginxUrl;
+ @Value("${login_public_key}")
+ private String publicKey;
+
@ApiOperation(value = "登陆接口", notes = "手机端登陆接口")
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = UserInfoVo.class)
})
@PostMapping(value = "/login")
- public AjaxResult login(@RequestBody @Validated LoginDto loginDto) {
+ public AjaxResult login(@RequestBody @Validated LoginDto loginDto) throws Exception {
SysUsers user = new SysUsers();
user.setSuAccount(loginDto.getUsername());
@@ -98,17 +111,19 @@
user.setSuPassword(null);
String token = UUIDUtil.getRandomID();
- redisClient.saveValueForever(token, JSONObject.toJSONString(user));
+ LocalCache.save(token, user);
userInfoVo.setId(user.getSuId());
userInfoVo.setName(user.getSuName());
userInfoVo.setRoleName(user.getRoleName());
userInfoVo.setPhoto(user.getSuPhoto());
+ String sb = token + "_1" + "_/api/vip/findVipInfoById/972";
AjaxResult result = AjaxResult.buildSuccessInstance("登陆成功");
authorityManager.initUserPower(result,user);
result.putInMap("user", userInfoVo);
result.putInMap("token", token);
+ result.putInMap("rasToken", RSAUtils.encryptByPublicKey(sb, publicKey));
return result;
}
@@ -175,14 +190,14 @@
return AjaxResult.buildFailInstance("该手机号不存在");
}
- String codeExist = redisClient.getCachedValue(smsCodeDto.getTelphone());
+ String codeExist = LocalCache.get(smsCodeDto.getTelphone());
if (StringUtils.isNotBlank(codeExist)) {
return AjaxResult.buildFailInstance("请勿重复发送验证码");
}
Integer code =(int) ((Math.random() * 9 + 1) * 100000);
Sms106Send.sendVerifyCode(smsCodeDto.getTelphone(), code.toString(), 2);
- redisClient.saveValue(smsCodeDto.getTelphone(), code.toString(), 120);
+ LocalCache.save(smsCodeDto.getTelphone(), code.toString(), 120 * 1000);
return AjaxResult.buildSuccessInstance("发送成功");
}
@@ -196,7 +211,7 @@
return AjaxResult.buildFailInstance("该手机号不存在");
}
- String code = redisClient.getCachedValue(pwdResetDto.getTelphone());
+ String code = LocalCache.get(pwdResetDto.getTelphone());
if (StringUtils.isBlank(code)) {
return AjaxResult.buildFailInstance("验证码已失效,请重新发送");
}
@@ -211,7 +226,7 @@
int i = sysUsersService.updateUserPassword(user.getSuId(), pwd);
if (i > 0) {
- redisClient.removeObject(pwdResetDto.getTelphone());
+ LocalCache.remove(pwdResetDto.getTelphone());
return AjaxResult.buildSuccessInstance("修改成功");
}
return AjaxResult.buildFailInstance("修改失败");
@@ -227,19 +242,138 @@
}
+ @ApiOperation(value = "获取api接口地址", notes = "获取api接口地址")
+ @GetMapping(value = "/findApiUrl")
+ public AjaxResult findApiUrl() {
+ List<UrlDto> data = new ArrayList<>();
+ UrlDto urlDto = new UrlDto();
+ urlDto.setUrl("http://myapp.jyymatrix.cc");
+ urlDto.setName("正式环境");
+ data.add(urlDto);
- @ApiOperation(value = "获取app配置", notes = "获取app配置")
- @ApiResponses({
- @ApiResponse(code = 200, message = "ok", response = AppVersion.class)
- })
- @GetMapping(value = "/findAppSettings")
- public AjaxResult findAppSettings() {
- SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
- AjaxResult result = AjaxResult.buildSuccessInstance("查询成功");
- result.putInMap(AppConstance.APP_BANNER_GL, busParameterSettingsDao.selectCompanyParamByCode(AppConstance.APP_BANNER_GL,user.getCompanyId()));
- return result;
+ urlDto = new UrlDto();
+ urlDto.setUrl("http://test.hive.jyymatrix.cc");
+ urlDto.setName("测试环境");
+ data.add(urlDto);
+
+ urlDto = new UrlDto();
+ urlDto.setUrl("http://hive.mydoline.com");
+ urlDto.setName("美度专线");
+ data.add(urlDto);
+
+ urlDto = new UrlDto();
+ urlDto.setUrl("http://localhost:8080");
+ urlDto.setName("开发环境");
+ data.add(urlDto);
+
+ return AjaxResult.buildSuccessInstance(data);
}
+ @ApiOperation(value = "根据企业编码获取对应的请求地址")
+ @PostMapping(value = "/getUrlByCompanyCode")
+ public AjaxResult getUrlByCompanyCode(@RequestBody SettingDto codeDto) {
+ SysCompany query = new SysCompany();
+ query.setComCode(codeDto.getCode());
+ List<SysCompany> list = sysCompanyService.findByModel(query);
+ if (CollUtil.isEmpty(list)) {
+ return new AjaxResult(AjaxResult.STATUS_FAIL, "企业编码有误");
+ }
+
+ AjaxResult ajaxResult = new AjaxResult();
+ ajaxResult.setStatus(AjaxResult.STATUS_SUCCESS);
+ ajaxResult.putInMap("url", list.get(0).getComWebUrl());
+ return ajaxResult;
+ }
+
+ @ApiOperation(value = "管理端小程序登录")
+ @PostMapping(value = "/wxLogin/{code}")
+ public AjaxResult wxLogin(@PathVariable("code") String code) throws IOException {
+ if (StrUtil.isBlank(code)) {
+ return AjaxResult.buildFailInstance("code不存在");
+ }
+ AjaxResult res = new AjaxResult();
+ String requrl = weChatApiTools.getManagerXcxLoginUrl(code);
+
+ String resultData = HttpCurlUtil.sendGetHttp(requrl, null);
+ JSONObject json = JSONObject.fromObject(resultData);
+ LogUtil.debug("管理端小程序登录获取到登录信息={}", json);
+
+ if (json.containsKey("errcode")) {
+ res.setStatus(AjaxResult.STATUS_FAIL);
+ res.setInfo("自动登录失败");
+ LogUtil.info("微信登录获取到异常信息errcode");
+ return res;
+ }
+
+ String openId = json.getString("openid");
+ res.setStatus(AjaxResult.STATUS_SUCCESS);
+ res.putInMap("openId", openId);
+ SysUsers hasBind = sysUsersService.findByOpenId(openId, HostInterceptor.getCompanyId());
+ if (hasBind == null) {
+ res.setInfo("未绑定用户");
+ return res;
+ }
+
+ String token = userCacheManager.saveUserInfo(hasBind);
+ LogUtil.info("用户token={}", token);
+
+ authorityManager.initUserPower(res, hasBind);
+
+ UserInfoVo userInfoVo = new UserInfoVo();
+ userInfoVo.setId(hasBind.getSuId());
+ userInfoVo.setName(hasBind.getSuName());
+ userInfoVo.setRoleName(hasBind.getRoleName());
+ userInfoVo.setPhoto(hasBind.getSuPhoto());
+
+ res.putInMap("token", token);
+ res.putInMap("userInfo", userInfoVo);
+ return res;
+ }
+
+ @ApiOperation(value = "绑定用户")
+ @PostMapping(value = "/bindUser")
+ public AjaxResult bindUser(@RequestBody @Validated LoginDto loginDto) {
+ SysUsers user = new SysUsers();
+ user.setSuAccount(loginDto.getUsername());
+ user.setSuPassword(loginDto.getPassword());
+ LoginStrategy apLogin = new AccountPasswordLogin(user, sysUsersService);
+ user = authorityManager.login(apLogin);
+ user.setSuPassword(null);
+ user.setOpenIds(null);
+ String token = userCacheManager.saveUserInfo(user);
+
+ AjaxResult result = AjaxResult.buildSuccessInstance("登陆成功");
+ authorityManager.initUserPower(result, user);
+
+ UserInfoVo userInfoVo = new UserInfoVo();
+ userInfoVo.setId(user.getSuId());
+ userInfoVo.setName(user.getSuName());
+ userInfoVo.setRoleName(user.getRoleName());
+ userInfoVo.setPhoto(user.getSuPhoto());
+
+ result.putInMap("token", token);
+ result.putInMap("userInfo", userInfoVo);
+
+ synchronized (this) {
+ SysUsers hasBind = sysUsersService.findByOpenId(loginDto.getOpenId(), HostInterceptor.getCompanyId());
+ if (hasBind != null) {
+ if(StrUtil.isNotBlank(hasBind.getOpenIds())) {
+ List<String> openIds = StrUtil.split(hasBind.getOpenIds(), ',');
+ openIds.remove(loginDto.getOpenId());
+
+ hasBind.setOpenIds(CollUtil.join(openIds, ","));
+ sysUsersService.modifyByModel(hasBind);
+ }
+ }
+
+ List<String> openIds = StrUtil.split(user.getOpenIds(), ',');
+ openIds.add(loginDto.getOpenId());
+ user.setOpenIds(CollUtil.join(openIds, ","));
+ sysUsersService.modifyByModel(user);
+ }
+
+ return result;
+ }
}
--
Gitblit v1.9.1