package com.jilongda.applet.controller; import com.jilongda.applet.model.TAppUser; import com.jilongda.applet.service.TAppUserService; import com.jilongda.applet.wx.body.resp.Code2SessionRespBody; import com.jilongda.applet.wx.body.resq.Code2SessionResqBody; import com.jilongda.applet.wx.pojo.AppletUserDecodeData; import com.jilongda.applet.wx.pojo.AppletUserEncrypteData; import com.jilongda.applet.wx.utils.WeixinProperties; import com.jilongda.applet.wx.utils.WxAppletTools; import com.jilongda.applet.wx.utils.WxUtils; import com.jilongda.common.basic.ApiResult; import com.jilongda.common.redis.RedisAutoTemplate; import com.jilongda.common.security.SecurityUtils; import com.jilongda.common.utils.WebUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.client.RestTemplate; import java.util.Map; /** *

* 会员表 前端控制器 *

* * @author xiaochen * @since 2021-07-28 */ @Slf4j @Api(tags = "用户登录相关") @RestController @RequestMapping("/") public class LoginController { @Autowired private SecurityUtils securityUtils; @Autowired private AuthenticationManager authenticationManager; @Autowired private RedisAutoTemplate redisAutoTemplate; @Autowired private TAppUserService appUserService; @Autowired private WeixinProperties wxConfig; @Autowired private RestTemplate wxRestTemplate; @ApiOperation(value = "通过code获得openid,获取用户信息",tags = {"微信小程序登录"}) @PostMapping("openIdByJsCode") public ApiResult> openIdByJsCode(@RequestBody AppletUserEncrypteData data) { log.info("<<<<<<<<换取openid开始<<<<<<<<:{}", data.getCode()); // WxAppletTools appletTools = new WxAppletTools(wxRestTemplate, wxConfig, redisAutoTemplate); // Code2SessionRespBody body = appletTools.getOpenIdByJscode2session(new Code2SessionResqBody().build(data.getCode())); // String openid = body.getOpenid(); // String sessionKey = body.getSessionKey(); // if(!StringUtils.hasLength(data.getEncryptedData()) || !StringUtils.hasLength(data.getIv())){ // return ApiResult.failed("已拒绝授权",null); // } // AppletUserDecodeData appletUserDecodeData = WxUtils.encryptedData(data.getEncryptedData(), sessionKey, data.getIv()); // appletUserDecodeData.setOpenId(openid); // TAppUser appUser = appUserService.wxLogin(appletUserDecodeData); TAppUser appUser = appUserService.getById(1); Map tokenInfos = securityUtils.login(appUser.getOpenId(), appUser, authenticationManager, TAppUser.class, 3); return ApiResult.success(tokenInfos); } @ApiOperation("退出登录") @GetMapping("logout") public ApiResult logout() { boolean flag = securityUtils.invalidateToken(WebUtils.request()); if (flag) { return ApiResult.success("退出成功"); } return ApiResult.success(); } }