diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WechatLoginController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WechatLoginController.java index e85c93348..f68aebe89 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/WechatLoginController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WechatLoginController.java @@ -21,6 +21,7 @@ import me.chanjar.weixin.common.error.WxErrorException; import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.bean.result.WxMpOAuth2AccessToken; import me.chanjar.weixin.mp.bean.result.WxMpUser; +import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.apache.shiro.subject.Subject; import org.springframework.beans.factory.annotation.Autowired; @@ -231,4 +232,22 @@ public class WechatLoginController extends BaseController { log.error(e.getMessage()); } } + + @ApiOperation(value = "微信第三方登录解绑", notes = "请配置此callback到网页redirect_uri") + @GetMapping("cleanWebOpenId") + public ResultData cleanWebOpenId(@ModelAttribute MallUserInfo userInfo) { + log.debug("[" + getIpAddr() + "] WechatLoginController::cleanWebOpenId"); + MallUserInfo user = getUser(); + if(userInfo == null) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); + } + if(StringUtils.isBlank(userInfo.getTenantId())) { + userInfo.setTenantId(user.getTenantId()); + } + if(userInfo.getId() == null && userInfo.getUsername() == null) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); + } + mallUserInfoService.cleanWebOpenId(userInfo); + return new ResultData(); + } } diff --git a/mallinkService/src/main/java/com/iformall/mapper/MallUserInfoMapper.java b/mallinkService/src/main/java/com/iformall/mapper/MallUserInfoMapper.java index cfd2206ee..87e1defb4 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/MallUserInfoMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/MallUserInfoMapper.java @@ -20,6 +20,8 @@ public interface MallUserInfoMapper extends CommonMapper { List selectByWebOpenId(@Param("webOpenId") String webOpenId); + void removeWebOpenId(MallUserInfo mallUserInfo); + MallUserInfo selectByPhone(@Param("phone") String phone, @Param("tenantId") String tenantId); Integer hasButtonPermission(@Param("userId") Long userId, @Param("permission") String permission); diff --git a/mallinkService/src/main/java/com/iformall/service/MallUserInfoService.java b/mallinkService/src/main/java/com/iformall/service/MallUserInfoService.java index a36e01afd..5debde46c 100644 --- a/mallinkService/src/main/java/com/iformall/service/MallUserInfoService.java +++ b/mallinkService/src/main/java/com/iformall/service/MallUserInfoService.java @@ -135,6 +135,8 @@ public interface MallUserInfoService { void updateWebOpenId(MallUserInfo user); + void cleanWebOpenId(MallUserInfo user); + /** * 根据条件用户列表 * @return diff --git a/mallinkService/src/main/java/com/iformall/service/impl/MallUserInfoServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/MallUserInfoServiceImpl.java index 96537ac1c..54e946180 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/MallUserInfoServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/MallUserInfoServiceImpl.java @@ -103,6 +103,15 @@ public class MallUserInfoServiceImpl implements MallUserInfoService { mallUserInfoMapper.updateByPrimaryKeySelective(user); } + @Override + public void cleanWebOpenId(MallUserInfo user) { + MallUserInfo updateUser = new MallUserInfo(); + updateUser.setId(user.getId()); + updateUser.setTenantId(user.getTenantId()); + updateUser.setUsername(user.getUsername()); + mallUserInfoMapper.removeWebOpenId(updateUser); + } + @Override public void saveOrUpdate(MallUserInfo record) { if (record.getId() == null) { diff --git a/mallinkService/src/main/resources/mapper/MallUserInfoMapper.xml b/mallinkService/src/main/resources/mapper/MallUserInfoMapper.xml index 333ae37fa..467be5be9 100644 --- a/mallinkService/src/main/resources/mapper/MallUserInfoMapper.xml +++ b/mallinkService/src/main/resources/mapper/MallUserInfoMapper.xml @@ -142,6 +142,21 @@ + + update mall_user_info + set `web_open_id` = #{webOpenId} + where 1=1 + + and `tenant_id`=#{tenantId} + + + and username=#{username} + + + and `id` != #{id} + + +