|
@@ -12,8 +12,10 @@ import com.ylx.common.core.controller.BaseController;
|
|
|
import com.ylx.common.core.domain.AjaxResult;
|
|
|
import com.ylx.common.core.domain.R;
|
|
|
import com.ylx.common.core.domain.model.WxLoginUser;
|
|
|
+import com.ylx.common.core.redis.RedisCache;
|
|
|
import com.ylx.common.enums.BusinessType;
|
|
|
import com.ylx.common.utils.MessageUtils;
|
|
|
+import com.ylx.common.utils.StringUtils;
|
|
|
import com.ylx.common.utils.file.FileUploadUtils;
|
|
|
import com.ylx.framework.config.ServerConfig;
|
|
|
import com.ylx.framework.manager.AsyncManager;
|
|
@@ -48,6 +50,7 @@ import java.util.Arrays;
|
|
|
import java.util.Date;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.Map;
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
|
|
|
|
import static com.ylx.massage.utils.OtherUtil.verification;
|
|
|
|
|
@@ -93,6 +96,10 @@ public class WeChatController extends BaseController {
|
|
|
@Autowired
|
|
|
private TbFileService tbFileService;
|
|
|
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private RedisCache redisCache;
|
|
|
+
|
|
|
/**
|
|
|
* 微信Token验证
|
|
|
*
|
|
@@ -269,6 +276,8 @@ public class WeChatController extends BaseController {
|
|
|
// config.setMargin(1);
|
|
|
// 生成二维码到文件,也可以到流
|
|
|
String code = weChatUtil.getCode(state);
|
|
|
+
|
|
|
+ redisCache.setCacheObject("code", state, 10, TimeUnit.MINUTES);
|
|
|
log.info("code:{}", code);
|
|
|
// QrCodeUtil.generate(code, config,
|
|
|
// FileUtil.file(IMG_PATH));
|
|
@@ -282,8 +291,9 @@ public class WeChatController extends BaseController {
|
|
|
* @return 访问令牌
|
|
|
*/
|
|
|
@GetMapping("/getAccessToken")
|
|
|
+ @ApiOperation("公众号网页登录")
|
|
|
@Log(title = "公众号网页登录", businessType = BusinessType.OTHER)
|
|
|
- public String getAccessToken(@RequestParam String code) {
|
|
|
+ public R<WxLoginUser> getAccessToken(@RequestParam String code) {
|
|
|
|
|
|
// 发送get请求获取 AccessToken
|
|
|
Map<?, ?> result = weChatUtil.getAccessToken(code);
|
|
@@ -301,17 +311,20 @@ public class WeChatController extends BaseController {
|
|
|
LambdaQueryWrapper<TWxUser> objectLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
objectLambdaQueryWrapper.eq(TWxUser::getcOpenid, openid);
|
|
|
TWxUser user = wxUserService.getOne(objectLambdaQueryWrapper);
|
|
|
- if (user == null || user.getcNickName() == null) {
|
|
|
- user = new TWxUser();
|
|
|
+ if (user == null || StringUtils.isEmpty(user.getcNickName())) {
|
|
|
+ if(user == null){
|
|
|
+ user = new TWxUser();
|
|
|
+ user.setcOpenid(openid);
|
|
|
+ TWxUser finalUser = user;
|
|
|
+ //异步 添加新人优惠卷
|
|
|
+ threadPoolTaskExecutor.submit(() -> couponReceiveService.submit(new CouponReceive().setOpenid(finalUser.getcOpenid()).setCouponId("1")));
|
|
|
+ }
|
|
|
user.setcOpenid(openid);
|
|
|
user.setcNickName(jsonObject.get("nickname").toString());
|
|
|
user.setcIcon(jsonObject.get("headimgurl").toString());
|
|
|
user.setcSessionKey(refreshToken);
|
|
|
// user.setcPhone(phoneNumber);
|
|
|
- wxUserService.save(user);
|
|
|
- //异步 添加新人优惠卷
|
|
|
- TWxUser finalUser = user;
|
|
|
- threadPoolTaskExecutor.submit(() -> couponReceiveService.submit(new CouponReceive().setOpenid(finalUser.getcOpenid()).setCouponId("1")));
|
|
|
+ wxUserService.saveOrUpdate(user);
|
|
|
user.setId(user.getId());
|
|
|
}
|
|
|
|
|
@@ -320,18 +333,15 @@ public class WeChatController extends BaseController {
|
|
|
// 生成并返回令牌
|
|
|
String token = wxTokenService.createToken(wxUser);
|
|
|
if (token == null || token.isEmpty()) {
|
|
|
- return null;
|
|
|
+ return R.fail("生成令牌失败");
|
|
|
}
|
|
|
wxUser.setToken(token);
|
|
|
// 返回用户信息
|
|
|
// 记录登录信息
|
|
|
AsyncManager.me().execute(AsyncFactory.recordLogininfor(wxUser.getCOpenid(), Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
|
|
|
-// return R.ok(wxUser);
|
|
|
-
|
|
|
- return "redirect:" + "https://test.baoxianzhanggui.com/fragrance/#/pages/my/wxLogin" + "?openid=" + openid;
|
|
|
+ return R.ok(wxUser);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/**
|
|
|
* 刷新token,微信提供的token是有限时间的,但是对于财务报销系统仅需授权一次的情况下一般不需要进行更新
|
|
|
*
|