4 changed files with 184 additions and 0 deletions
@ -0,0 +1,55 @@ |
|||||
|
package com.elink.esua.epdc.modules.analysis.controller; |
||||
|
|
||||
|
import com.elink.esua.epdc.common.token.dto.WorkUserAuthorizationDTO; |
||||
|
import com.elink.esua.epdc.common.token.dto.WorkUserLoginDTO; |
||||
|
import com.elink.esua.epdc.commons.tools.utils.Result; |
||||
|
import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils; |
||||
|
import com.elink.esua.epdc.dto.form.EpdcWorkAppUserMaTokenFormDTO; |
||||
|
import com.elink.esua.epdc.modules.analysis.service.AnalysisUserService; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.web.bind.annotation.*; |
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* 移动端接口-数据分析模块(项目) |
||||
|
* @Author LPF |
||||
|
* @Date 2019/11/18 13:32 |
||||
|
*/ |
||||
|
@RestController |
||||
|
@RequestMapping("analysis/user") |
||||
|
public class ApiAnalysisUserController { |
||||
|
|
||||
|
@Autowired |
||||
|
private AnalysisUserService analysisUserService; |
||||
|
|
||||
|
/** |
||||
|
* |
||||
|
* 数据分析端-用户登录 |
||||
|
* |
||||
|
* @params [formDto] |
||||
|
* @return com.elink.esua.epdc.commons.tools.utils.Result<com.elink.esua.epdc.common.token.dto.WorkUserAuthorizationDTO> |
||||
|
* @author liuchuang |
||||
|
* @since 2020/2/12 10:57 |
||||
|
*/ |
||||
|
@PostMapping("login") |
||||
|
public Result<WorkUserAuthorizationDTO> login(@RequestBody WorkUserLoginDTO formDto) { |
||||
|
ValidatorUtils.validateEntity(formDto); |
||||
|
return analysisUserService.login(formDto); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* |
||||
|
* 数据分析端-获取token |
||||
|
* |
||||
|
* @params [formDto] |
||||
|
* @return com.elink.esua.epdc.commons.tools.utils.Result<com.elink.esua.epdc.common.token.dto.WorkUserAuthorizationDTO> |
||||
|
* @author liuchuang |
||||
|
* @since 2020/2/12 10:58 |
||||
|
*/ |
||||
|
@GetMapping("getToken") |
||||
|
public Result<WorkUserAuthorizationDTO> getMaToken(EpdcWorkAppUserMaTokenFormDTO formDto) { |
||||
|
ValidatorUtils.validateEntity(formDto); |
||||
|
return analysisUserService.getMaToken(formDto); |
||||
|
} |
||||
|
|
||||
|
} |
@ -0,0 +1,37 @@ |
|||||
|
package com.elink.esua.epdc.modules.analysis.service; |
||||
|
|
||||
|
import com.elink.esua.epdc.common.token.dto.WorkUserAuthorizationDTO; |
||||
|
import com.elink.esua.epdc.common.token.dto.WorkUserLoginDTO; |
||||
|
import com.elink.esua.epdc.commons.tools.utils.Result; |
||||
|
import com.elink.esua.epdc.dto.form.EpdcWorkAppUserMaTokenFormDTO; |
||||
|
|
||||
|
/** |
||||
|
* 项目模块-数据分析移动端 |
||||
|
* |
||||
|
* @Author LPF |
||||
|
* @Date 2019/11/18 13:34 |
||||
|
*/ |
||||
|
public interface AnalysisUserService { |
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* 数据分析端-用户登录 |
||||
|
* |
||||
|
* @return com.elink.esua.epdc.commons.tools.utils.Result<com.elink.esua.epdc.common.token.dto.WorkUserAuthorizationDTO> |
||||
|
* @params [formDto] |
||||
|
* @author liuchuang |
||||
|
* @since 2020/2/12 10:59 |
||||
|
*/ |
||||
|
Result<WorkUserAuthorizationDTO> login(WorkUserLoginDTO formDto); |
||||
|
|
||||
|
/** |
||||
|
* 数据分析端-获取token |
||||
|
* |
||||
|
* @return com.elink.esua.epdc.commons.tools.utils.Result<com.elink.esua.epdc.common.token.dto.WorkUserAuthorizationDTO> |
||||
|
* @params [formDto] |
||||
|
* @author liuchuang |
||||
|
* @since 2020/2/12 11:00 |
||||
|
*/ |
||||
|
Result<WorkUserAuthorizationDTO> getMaToken(EpdcWorkAppUserMaTokenFormDTO formDto); |
||||
|
|
||||
|
} |
@ -0,0 +1,92 @@ |
|||||
|
package com.elink.esua.epdc.modules.analysis.service.impl; |
||||
|
|
||||
|
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; |
||||
|
import com.elink.esua.epdc.common.token.dto.WorkUserAuthorizationDTO; |
||||
|
import com.elink.esua.epdc.common.token.dto.WorkUserLoginDTO; |
||||
|
import com.elink.esua.epdc.common.token.dto.WorkUserTokenFormDTO; |
||||
|
import com.elink.esua.epdc.commons.tools.constant.NumConstant; |
||||
|
import com.elink.esua.epdc.commons.tools.exception.RenException; |
||||
|
import com.elink.esua.epdc.commons.tools.utils.ConvertUtils; |
||||
|
import com.elink.esua.epdc.commons.tools.utils.Result; |
||||
|
import com.elink.esua.epdc.dto.SysUserDTO; |
||||
|
import com.elink.esua.epdc.dto.form.EpdcWorkAppUserMaTokenFormDTO; |
||||
|
import com.elink.esua.epdc.feign.AdminFeignClient; |
||||
|
import com.elink.esua.epdc.feign.ResourceFeignClient; |
||||
|
import com.elink.esua.epdc.modules.analysis.service.AnalysisUserService; |
||||
|
import com.elink.esua.epdc.utils.WxMaServiceUtils; |
||||
|
import me.chanjar.weixin.common.error.WxErrorException; |
||||
|
import org.apache.commons.lang3.StringUtils; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.stereotype.Service; |
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* 项目模块-移动app端 |
||||
|
* |
||||
|
* @Author LPF |
||||
|
* @Date 2019/11/18 16:34 |
||||
|
*/ |
||||
|
@Service |
||||
|
public class AnalysisUserServiceImpl implements AnalysisUserService { |
||||
|
|
||||
|
@Autowired |
||||
|
private WxMaServiceUtils wxMaServiceUtils; |
||||
|
|
||||
|
@Autowired |
||||
|
private ResourceFeignClient resourceFeignClient; |
||||
|
|
||||
|
@Autowired |
||||
|
private AdminFeignClient adminFeignClient; |
||||
|
|
||||
|
|
||||
|
@Override |
||||
|
public Result<WorkUserAuthorizationDTO> login(WorkUserLoginDTO formDto) { |
||||
|
// 获取openId
|
||||
|
String openId = this.getWxMaUser(formDto.getWxCode()).getOpenid(); |
||||
|
formDto.setOpenId(openId); |
||||
|
return resourceFeignClient.workLogin(formDto); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public Result<WorkUserAuthorizationDTO> getMaToken(EpdcWorkAppUserMaTokenFormDTO formDto) { |
||||
|
// 获取openId
|
||||
|
String openId = this.getWxMaUser(formDto.getWxCode()).getOpenid(); |
||||
|
|
||||
|
// 检查当前微信是否已绑定账户
|
||||
|
Result<SysUserDTO> sysUserDtoResult = adminFeignClient.getSysUserInfoByOpenId(openId); |
||||
|
if (!sysUserDtoResult.success()) { |
||||
|
return new Result<WorkUserAuthorizationDTO>().error(sysUserDtoResult.getMsg()); |
||||
|
} |
||||
|
SysUserDTO userDto = sysUserDtoResult.getData(); |
||||
|
if (null == userDto) { |
||||
|
WorkUserAuthorizationDTO resultDto = new WorkUserAuthorizationDTO(); |
||||
|
resultDto.setRegisterState(NumConstant.ZERO_STR); |
||||
|
return new Result<WorkUserAuthorizationDTO>().ok(resultDto); |
||||
|
} |
||||
|
|
||||
|
return resourceFeignClient.getToken(ConvertUtils.sourceToTarget(userDto, WorkUserTokenFormDTO.class)); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 解析微信code获取小程序用户信息 |
||||
|
* |
||||
|
* @return cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult |
||||
|
* @params [wxCode] |
||||
|
* @author liuchuang |
||||
|
* @since 2020/2/12 13:20 |
||||
|
*/ |
||||
|
private WxMaJscode2SessionResult getWxMaUser(String wxCode) { |
||||
|
WxMaJscode2SessionResult wxMaJscode2SessionResult = null; |
||||
|
try { |
||||
|
wxMaJscode2SessionResult = wxMaServiceUtils.analysisWxMaService().jsCode2SessionInfo(wxCode); |
||||
|
} catch (WxErrorException e) { |
||||
|
e.printStackTrace(); |
||||
|
} |
||||
|
if (null == wxMaJscode2SessionResult) { |
||||
|
throw new RenException("解析微信用户信息失败"); |
||||
|
} else if (StringUtils.isBlank(wxMaJscode2SessionResult.getOpenid())) { |
||||
|
throw new RenException("获取微信openid失败"); |
||||
|
} |
||||
|
return wxMaJscode2SessionResult; |
||||
|
} |
||||
|
} |
Loading…
Reference in new issue