From 49886f5e517f91bff10be8fe83dc58b319a1cbd9 Mon Sep 17 00:00:00 2001 From: wangpengfei <1928057482@qq.com> Date: Wed, 9 Aug 2023 18:12:16 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9D=99=E9=BB=98=E7=99=BB=E5=BD=95=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/sysuser/SysUserService.java | 105 +++++++++++++++++- .../system/sysuser/wx/WxSysUserRest.java | 11 +- .../system/sysuserwxauth/SysUserWxAuth.java | 17 +++ .../sysuserwxauth/SysUserWxAuthFeign.java | 13 +++ .../sysuserwxauth/SysUserWxAuthMapper.java | 12 ++ .../sysuserwxauth/SysUserWxAuthMapper.xml | 14 +++ .../sysuserwxauth/SysUserWxAuthRest.java | 12 ++ .../sysuserwxauth/SysUserWxAuthService.java | 24 ++++ 8 files changed, 206 insertions(+), 2 deletions(-) create mode 100644 yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuserwxauth/SysUserWxAuth.java create mode 100644 yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuserwxauth/SysUserWxAuthFeign.java create mode 100644 yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuserwxauth/SysUserWxAuthMapper.java create mode 100644 yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuserwxauth/SysUserWxAuthMapper.xml create mode 100644 yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuserwxauth/SysUserWxAuthRest.java create mode 100644 yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuserwxauth/SysUserWxAuthService.java diff --git a/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuser/SysUserService.java b/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuser/SysUserService.java index 11eff6a4..c3a74b80 100644 --- a/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuser/SysUserService.java +++ b/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuser/SysUserService.java @@ -32,6 +32,7 @@ import com.yxt.supervise.system.sysuser.wx.*; import com.yxt.supervise.system.sysuserrole.SysUserRole; import com.yxt.supervise.system.sysuserrole.SysUserRoleService; import com.yxt.supervise.system.sysuserwxauth.SysUserWxAuth; +import com.yxt.supervise.system.sysuserwxauth.SysUserWxAuthService; import org.apache.ibatis.annotations.Param; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; @@ -92,6 +93,8 @@ public class SysUserService extends MybatisBaseService { private SysStaffOrgService sysStaffOrgService; @Autowired private RedisUtil redisUtil; + @Autowired + private SysUserWxAuthService sysUserWxAuthService; @Autowired private SysOrganizationService sysOrganizationService; @@ -1209,7 +1212,79 @@ public class SysUserService extends MybatisBaseService { return rb.success().setData(sysUser); } - + /** + * 微信静默登录 + * @param wxCode 临时凭证code值 + * @return ResultBean data:Token + * 登陆成功后data返回用户Sid + * 聂金毅 2022/6/8 20:30 创建 + */ + public ResultBean vSilentLogin(String wxCode){ + ResultBean rb = ResultBean.fireFail(); + // 通过wxCode获取unionid,失败返回微信的错误提示。 +// ResultBean rbJsonObject = getCode2Session(wxCode,APP_ID,SECRET); + ResultBean rbJsonObject = wxLogin(wxCode,APP_ID,SECRET); + if (!rbJsonObject.getSuccess()){ + JSONObject jsonObject = rbJsonObject.getData(); + String errcode = jsonObject.get("errcode").toString(); + String errmsg = jsonObject.get("errmsg").toString(); + return rb.setMsg(errmsg).setCode(errcode); + } + // 判断存在不存在unionid,用户在开放平台的唯一标识符,若当前小程序已绑定到微信开放平台帐号下会返回,详见 UnionID 机制说明。、 + JSONObject jsonObject = rbJsonObject.getData(); + if (!jsonObject.containsKey("unionid")){ + return rb.setMsg("未获得unionid,请参见auth.code2Session"); + } + String unionid = jsonObject.get("unionid").toString(); + String openid = jsonObject.get("openid").toString(); + // 判断用户登陆授权表是否存在该用户unionid和openid,如果不存在就增加一条返回 + List sysUserWxAuths = sysUserWxAuthService.fetchByUnionid(unionid); + if(sysUserWxAuths.size()==0){ + return rb.setMsg("此微信没有绑定用户信息,请先去绑定用户"); + } + SysUserWxAuth sysUserWxAuth = sysUserWxAuthService.fetchByUnionidAndOpenid(unionid,openid); + if (sysUserWxAuth == null) { + // 添加一个新用户授权记录 + SysUserWxAuth sysUserWxAuth1=new SysUserWxAuth(); + sysUserWxAuth1.setUnionid(unionid); + sysUserWxAuth1.setOpenid(openid); + sysUserWxAuth1.setSysUserSid(sysUserWxAuths.get(0).getSysUserSid()); + boolean isSave = sysUserWxAuthService.save(sysUserWxAuth1); + if ( !isSave ){ + return rb.setMsg("登陆:新增用户授权表失败"); + } + //return rb.setMsg(SysUserWxAuth_Not_Exist.getMsg()).setCode(SysUserWxAuth_Not_Exist.getCode()); + } + // 如果用户Sid为空返回 + String sysUserSid = sysUserWxAuth.getSysUserSid(); +// if(com.baomidou.mybatisplus.core.toolkit.StringUtils.isBlank(sysUserSid) || sysUserSid == null){ +// return rb.setMsg(SysUser_Sid_IsEmpty.getMsg()).setCode(SysUser_Sid_IsEmpty.getCode()); +// } + // 如果未找到用户记录返回 + SysUser sysUser = fetchBySid(sysUserSid); +// if (sysUser == null){ +// return rb.setMsg(SysUser_Not_Exist.getMsg()).setCode(SysUser_Not_Exist.getCode()); +// } + // 如果未绑定手机号返回 +// String mobile = sysUser.getMobile(); +// if(com.baomidou.mybatisplus.core.toolkit.StringUtils.isBlank(mobile) || mobile == null){ +// return rb.setMsg(SysUser_Mobile_Not_Bind.getMsg()).setCode(SysUser_Mobile_Not_Bind.getCode()); +// } +// // 如果设置为未登陆返回 +// int isLogin = sysUser.getIsLogin(); +// if (isLogin !=1){ +// return rb.setMsg(SysUser_Not_Login.getMsg()).setCode(SysUser_Not_Login.getCode()); +// } + // 获得Token + SysUserVo sysUserVo=setUserRedisSessionToken(sysUser); + // 重置Token失效时间 + // {写代码} + SysUserLoginVo sysUserLoginVo = new SysUserLoginVo(); + sysUserLoginVo.setSysUserSid(sysUserSid); + sysUserLoginVo.setToken(sysUserVo.getToken()); + sysUserLoginVo.setIsLogin(true); + return rb.success().setData(sysUserLoginVo); + } /** * 微信静默登录 * @param wxCode 临时凭证code值 @@ -1335,4 +1410,32 @@ public class SysUserService extends MybatisBaseService { return rb.setMsg("您的平台应用未被授权,请联系工作人员。"); } } + public ResultBean BindMobile(SysUserWxBindMobileDto sysUserWxBindMobileDto) { + ResultBean rb = ResultBean.fireFail(); + String mobile = sysUserWxBindMobileDto.getMobile(); + + // 校验手机验证码 + String code = sysUserWxBindMobileDto.getCode(); + Map vali = mobileValidateWxRegister(mobile,code); + if(!vali.get("code").equals("200")){ + return rb.setMsg(vali.get("details").toString()); + } + SysUser sysUser = baseMapper.selectOne(new QueryWrapper().eq("mobile",mobile)); + String sysUserSid = ""; + if (sysUser != null) { + SysUserWxAuth sysUserWxAuth1=new SysUserWxAuth(); + sysUserWxAuth1.setUnionid(sysUserWxBindMobileDto.getUnionid()); + sysUserWxAuth1.setOpenid(sysUserWxBindMobileDto.getOpenid()); + sysUserWxAuth1.setSysUserSid(sysUser.getSid()); + boolean isSave = sysUserWxAuthService.save(sysUserWxAuth1); + if ( !isSave ){ + return rb.setMsg("登陆:新增用户授权表失败"); + } + return rb.setMsg("绑定成功"); + + }else{ + + return rb.setMsg("您的平台应用未被授权,请联系工作人员。"); + } + } } \ No newline at end of file diff --git a/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuser/wx/WxSysUserRest.java b/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuser/wx/WxSysUserRest.java index 4700c1f8..4569659a 100644 --- a/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuser/wx/WxSysUserRest.java +++ b/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuser/wx/WxSysUserRest.java @@ -380,13 +380,22 @@ public class WxSysUserRest implements WxSysUserFeign { public ResultBean wxBindMobile(@RequestBody SysUserWxBindMobileDto sysUserWxBindMobileDto){ return sysUserService.wxBindMobile(sysUserWxBindMobileDto); } - + @PostMapping("/BindMobile") + @ApiOperation(value = "微信绑定手机") + public ResultBean BindMobile(@RequestBody SysUserWxBindMobileDto sysUserWxBindMobileDto){ + return sysUserService.BindMobile(sysUserWxBindMobileDto); + } @ApiOperation(value = "微信静默登录") @GetMapping("/wxSilentLogin") public ResultBean wxSilentLogin(@RequestParam(value = "wxCode") String wxCode) { return sysUserService.wxSilentLogin(wxCode); } @ApiOperation(value = "微信静默登录") + @GetMapping("/vSilentLogin") + public ResultBean vSilentLogin(@RequestParam(value = "wxCode") String wxCode) { + return sysUserService.vSilentLogin(wxCode); + } + @ApiOperation(value = "微信静默登录") @GetMapping("/SilentLogin") public ResultBean SilentLogin(@RequestParam(value = "wxCode") String wxCode) { return sysUserService.SilentLogin(wxCode); diff --git a/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuserwxauth/SysUserWxAuth.java b/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuserwxauth/SysUserWxAuth.java new file mode 100644 index 00000000..39f2bfd0 --- /dev/null +++ b/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuserwxauth/SysUserWxAuth.java @@ -0,0 +1,17 @@ +package com.yxt.supervise.system.sysuserwxauth; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@TableName("sys_user_wx_auth") +public class SysUserWxAuth extends BaseEntity { + @ApiModelProperty(value = "关联的用户登陆Sid") + private String sysUserSid; + @ApiModelProperty(value = "openid") + private String openid; + @ApiModelProperty(value = "微信登陆唯一标识") + private String unionid; +} diff --git a/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuserwxauth/SysUserWxAuthFeign.java b/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuserwxauth/SysUserWxAuthFeign.java new file mode 100644 index 00000000..c20025c8 --- /dev/null +++ b/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuserwxauth/SysUserWxAuthFeign.java @@ -0,0 +1,13 @@ +package com.yxt.supervise.system.sysuserwxauth; + +import com.yyd.portal.api.sysuser.SysUserFeignFallback; +import org.springframework.cloud.openfeign.FeignClient; + +@FeignClient( + contextId = "yyd-portal-SysUserWxAuth", + name = "yyd-portal-auth", + path = "v1/sysUserWxAuth", + fallback = SysUserFeignFallback.class) +public interface SysUserWxAuthFeign { + +} diff --git a/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuserwxauth/SysUserWxAuthMapper.java b/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuserwxauth/SysUserWxAuthMapper.java new file mode 100644 index 00000000..61b1a43a --- /dev/null +++ b/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuserwxauth/SysUserWxAuthMapper.java @@ -0,0 +1,12 @@ +package com.yxt.supervise.system.sysuserwxauth; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface SysUserWxAuthMapper extends BaseMapper { + SysUserWxAuth fetchByUnionidAndOpenid(String unionid, String openid); + List fetchByUnionid(String unionid); +} diff --git a/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuserwxauth/SysUserWxAuthMapper.xml b/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuserwxauth/SysUserWxAuthMapper.xml new file mode 100644 index 00000000..6e2e94f2 --- /dev/null +++ b/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuserwxauth/SysUserWxAuthMapper.xml @@ -0,0 +1,14 @@ + + + + + + diff --git a/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuserwxauth/SysUserWxAuthRest.java b/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuserwxauth/SysUserWxAuthRest.java new file mode 100644 index 00000000..4e1b7436 --- /dev/null +++ b/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuserwxauth/SysUserWxAuthRest.java @@ -0,0 +1,12 @@ +package com.yxt.supervise.system.sysuserwxauth; + +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@Api(tags = "会员第三方登陆表") +@RestController +@RequestMapping("v1/sysUserWxAuth") +public class SysUserWxAuthRest implements SysUserWxAuthFeign { + +} diff --git a/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuserwxauth/SysUserWxAuthService.java b/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuserwxauth/SysUserWxAuthService.java new file mode 100644 index 00000000..c23c61cb --- /dev/null +++ b/yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysuserwxauth/SysUserWxAuthService.java @@ -0,0 +1,24 @@ +package com.yxt.supervise.system.sysuserwxauth; + +import com.yxt.common.base.service.MybatisBaseService; +import org.springframework.stereotype.Service; + +import java.util.List; + + +@Service +public class SysUserWxAuthService extends MybatisBaseService { + + // 临时发在这,后期需要把各个微服务单独做一个,或者做一个专门的常量类 + // 体育活动组织报名工具 +// public static final String APP_ID = "wxf869f371c1d0610c"; +// public static final String SECRET = "377f7f40630ee5673cf081b461a9a750"; + String APP_ID = "wxf869f371c1d0610c"; + String SECRET = "377f7f40630ee5673cf081b461a9a750"; + public SysUserWxAuth fetchByUnionidAndOpenid(String unionid , String openid){ + return baseMapper.fetchByUnionidAndOpenid(unionid,openid); + } + public List fetchByUnionid(String unionid){ + return baseMapper.fetchByUnionid(unionid); + } +}