package com.stylefeng.guns.modular.api; import com.stylefeng.guns.core.util.ToolUtil; import com.stylefeng.guns.modular.system.model.Driver; import com.stylefeng.guns.modular.system.model.DriverService; import com.stylefeng.guns.modular.system.service.IDriverService; import com.stylefeng.guns.modular.system.util.ResultUtil; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import me.chanjar.weixin.common.api.WxConsts; import me.chanjar.weixin.common.exception.WxErrorException; import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.bean.result.WxMpOAuth2AccessToken; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.HashMap; import java.util.Map; @RestController @Slf4j @RequestMapping("") public class WinxinController { @Autowired private WxMpService wxMpService; @Autowired private IDriverService driverService; @ResponseBody @PostMapping("/api/wx/getOpenId") @ApiOperation(value = "获取最新openId", tags = {"司机端-个人中心"}, notes = "") @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), @ApiImplicitParam(value = "code", name = "code", required = true, dataType = "String"), }) public ResultUtil getOpenId(@RequestParam String code, HttpServletRequest request) { try { Integer uid = driverService.getUserIdFormRedis(request); if (ToolUtil.isEmpty(code)) { return ResultUtil.error("参数为空"); } //未登录过获取openId进行授权 String openID = null; WxMpOAuth2AccessToken accessToken = wxMpService.oauth2getAccessToken(code); openID = accessToken.getOpenId(); Driver driver = driverService.selectById(uid); driver.setAppletsOpenId(openID); driverService.updateById(driver); return ResultUtil.success(); } catch (Exception e) { // e.printStackTrace(); //尽量不要使用这个打印异常,会造成内存锁,使用log日志就好 return ResultUtil.error("获取openID异常"); } } }