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