Commit b8858c7b by 杨伟程

小程序登录

parent 61b4007a
Showing with 433 additions and 278 deletions
...@@ -150,7 +150,7 @@ CREATE TABLE `plat_elder_medical_examination_info` ...@@ -150,7 +150,7 @@ CREATE TABLE `plat_elder_medical_examination_info`
CREATE TABLE `plat_elder_children_info` CREATE TABLE `plat_elder_children_info`
( (
`id` varchar(64) NOT NULL COMMENT 'id', `id` varchar(64) NOT NULL COMMENT 'id',
`elder_id` varchar(64) NOT NULL COMMENT '长者id', `elder_id` varchar(64) NULL COMMENT '长者id',
`openid` varchar(64) NOT NULL COMMENT 'openid', `openid` varchar(64) NOT NULL COMMENT 'openid',
`name` varchar(64) DEFAULT NULL COMMENT '姓名', `name` varchar(64) DEFAULT NULL COMMENT '姓名',
`phone` varchar(64) DEFAULT NULL COMMENT '手机号码', `phone` varchar(64) DEFAULT NULL COMMENT '手机号码',
......
...@@ -73,6 +73,8 @@ ...@@ -73,6 +73,8 @@
<json-lib.version>2.4</json-lib.version> <json-lib.version>2.4</json-lib.version>
<weixin-java.version>4.5.0</weixin-java.version>
</properties> </properties>
...@@ -214,6 +216,12 @@ ...@@ -214,6 +216,12 @@
<version>${common-io.version}</version> <version>${common-io.version}</version>
</dependency> </dependency>
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-miniapp</artifactId>
<version>${weixin-java.version}</version>
</dependency>
<!--工作流模块使用--> <!--工作流模块使用-->
<dependency> <dependency>
<groupId>com.alibaba.fastjson2</groupId> <groupId>com.alibaba.fastjson2</groupId>
......
...@@ -20,7 +20,6 @@ ...@@ -20,7 +20,6 @@
<orderEntry type="inheritedJdk" /> <orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module" module-name="server-common" /> <orderEntry type="module" module-name="server-common" />
<orderEntry type="module" module-name="server-common" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-data-redis:2.5.6" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-data-redis:2.5.6" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.5.6" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.5.6" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.5.6" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.5.6" level="project" />
...@@ -112,14 +111,6 @@ ...@@ -112,14 +111,6 @@
<orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-core:3.0.3" level="project" /> <orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-core:3.0.3" level="project" />
<orderEntry type="library" name="Maven: org.javassist:javassist:3.25.0-GA" level="project" /> <orderEntry type="library" name="Maven: org.javassist:javassist:3.25.0-GA" level="project" />
<orderEntry type="library" name="Maven: io.swagger:swagger-core:1.5.22" level="project" /> <orderEntry type="library" name="Maven: io.swagger:swagger-core:1.5.22" level="project" />
<orderEntry type="library" name="Maven: com.google.guava:guava:27.0.1-android" level="project" />
<orderEntry type="library" name="Maven: com.google.guava:failureaccess:1.0.1" level="project" />
<orderEntry type="library" name="Maven: com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava" level="project" />
<orderEntry type="library" name="Maven: com.google.code.findbugs:jsr305:3.0.2" level="project" />
<orderEntry type="library" name="Maven: org.checkerframework:checker-compat-qual:2.5.2" level="project" />
<orderEntry type="library" name="Maven: com.google.errorprone:error_prone_annotations:2.2.0" level="project" />
<orderEntry type="library" name="Maven: com.google.j2objc:j2objc-annotations:1.1" level="project" />
<orderEntry type="library" name="Maven: org.codehaus.mojo:animal-sniffer-annotations:1.17" level="project" />
<orderEntry type="library" name="Maven: javax.validation:validation-api:2.0.1.Final" level="project" /> <orderEntry type="library" name="Maven: javax.validation:validation-api:2.0.1.Final" level="project" />
<orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-spring-ui:3.0.3" level="project" /> <orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-spring-ui:3.0.3" level="project" />
<orderEntry type="library" name="Maven: org.redisson:redisson-spring-boot-starter:3.17.5" level="project" /> <orderEntry type="library" name="Maven: org.redisson:redisson-spring-boot-starter:3.17.5" level="project" />
...@@ -174,8 +165,6 @@ ...@@ -174,8 +165,6 @@
<orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-impl:2.3.0" level="project" /> <orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-impl:2.3.0" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:alibabacloud-gateway-spi:0.0.1" level="project" /> <orderEntry type="library" name="Maven: com.aliyun:alibabacloud-gateway-spi:0.0.1" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:openapiutil:0.1.14" level="project" /> <orderEntry type="library" name="Maven: com.aliyun:openapiutil:0.1.14" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcpkix-jdk15on:1.65" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk15on:1.65" level="project" />
<orderEntry type="library" name="Maven: com.huaweicloud:esdk-obs-java-bundle:3.23.5" level="project" /> <orderEntry type="library" name="Maven: com.huaweicloud:esdk-obs-java-bundle:3.23.5" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-core:2.14.1" level="project" /> <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-core:2.14.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.14.1" level="project" /> <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.14.1" level="project" />
...@@ -259,5 +248,22 @@ ...@@ -259,5 +248,22 @@
<orderEntry type="library" name="Maven: commons-logging:commons-logging:1.2" level="project" /> <orderEntry type="library" name="Maven: commons-logging:commons-logging:1.2" level="project" />
<orderEntry type="library" name="Maven: com.google.zxing:core:3.3.2" level="project" /> <orderEntry type="library" name="Maven: com.google.zxing:core:3.3.2" level="project" />
<orderEntry type="library" name="Maven: commons-io:commons-io:2.11.0" level="project" /> <orderEntry type="library" name="Maven: commons-io:commons-io:2.11.0" level="project" />
<orderEntry type="library" name="Maven: com.github.binarywang:weixin-java-miniapp:4.5.0" level="project" />
<orderEntry type="library" name="Maven: com.github.binarywang:weixin-java-common:4.5.0" level="project" />
<orderEntry type="library" name="Maven: com.thoughtworks.xstream:xstream:1.4.20" level="project" />
<orderEntry type="library" name="Maven: io.github.x-stream:mxparser:1.2.2" level="project" />
<orderEntry type="library" name="Maven: xmlpull:xmlpull:1.1.3.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpmime:4.5.13" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:jcl-over-slf4j:1.7.32" level="project" />
<orderEntry type="library" name="Maven: com.google.guava:guava:30.0-jre" level="project" />
<orderEntry type="library" name="Maven: com.google.guava:failureaccess:1.0.1" level="project" />
<orderEntry type="library" name="Maven: com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava" level="project" />
<orderEntry type="library" name="Maven: com.google.code.findbugs:jsr305:3.0.2" level="project" />
<orderEntry type="library" name="Maven: org.checkerframework:checker-qual:3.5.0" level="project" />
<orderEntry type="library" name="Maven: com.google.errorprone:error_prone_annotations:2.3.4" level="project" />
<orderEntry type="library" name="Maven: com.google.j2objc:j2objc-annotations:1.3" level="project" />
<orderEntry type="library" name="Maven: org.dom4j:dom4j:2.1.3" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcpkix-jdk15on:1.68" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk15on:1.68" level="project" />
</component> </component>
</module> </module>
\ No newline at end of file
...@@ -158,6 +158,11 @@ ...@@ -158,6 +158,11 @@
<artifactId>commons-io</artifactId> <artifactId>commons-io</artifactId>
</dependency> </dependency>
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-miniapp</artifactId>
</dependency>
</dependencies> </dependencies>
<profiles> <profiles>
......
package com.makeit.config;
import cn.binarywang.wx.miniapp.api.WxMaMsgService;
import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl;
import cn.binarywang.wx.miniapp.config.impl.WxMaDefaultConfigImpl;
import cn.binarywang.wx.miniapp.message.WxMaMessageRouter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import javax.annotation.PostConstruct;
@Configuration
@EnableConfigurationProperties(WxMaProperties.class)
public class WxMaConfiguration {
private WxMaProperties properties;
private static WxMaMessageRouter router = null;
private static WxMaService maService = null;
private static WxMaMsgService maMsgService = null;
@Autowired
public WxMaConfiguration(WxMaProperties properties) {
this.properties = properties;
}
public static WxMaService getMaService() {
return maService;
}
@PostConstruct
public void init() {
WxMaProperties.Config a = this.properties.getConfig();
WxMaDefaultConfigImpl config = new WxMaDefaultConfigImpl();
config.setAppid(a.getAppid());
config.setSecret(a.getSecret());
config.setToken(a.getToken());
config.setAesKey(a.getAesKey());
config.setMsgDataFormat(a.getMsgDataFormat());
WxMaService service = new WxMaServiceImpl();
service.setWxMaConfig(config);
maService = service;
}
}
package com.makeit.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
@Data
@ConfigurationProperties(prefix = "wx.miniapp")
public class WxMaProperties {
private Config config;
@Data
public static class Config {
/**
* 设置微信小程序的appid
*/
private String appid;
/**
* 设置微信小程序的Secret
*/
private String secret;
/**
* 设置微信小程序消息服务器配置的token
*/
private String token;
/**
* 设置微信小程序消息服务器配置的EncodingAESKey
*/
private String aesKey;
/**
* 消息格式,XML或者JSON
*/
private String msgDataFormat;
}
}
package com.makeit.utils.third.oauth2;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
/**
* 描述:
*
* @author eugene young
* @date 2022/1/13
*/
@Data
public class AccessTokenVo {
@JsonProperty("errcode")
private String errcode;
@JsonProperty("errmsg")
private String errmsg;
@JsonProperty("access_token")
private String accessToken;
@JsonProperty("expires_in")
private String expiresIn;
}
package com.makeit.utils.third.oauth2;
import com.makeit.utils.third.HttpClient;
import com.makeit.utils.user.wechat.WechatUserInfo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;
/**
* 描述:
*
* @author eugene young
* @date 2022/1/13
*/
@Component
public class LoginUtil {
private static Logger logger = LoggerFactory.getLogger(LoginUtil.class);
private static Oauth2Config oauth2Config;
public static String getClientId() {
return oauth2Config.getClientId();
}
public static String getAgentId() {
return oauth2Config.getAgentId();
}
public static AccessTokenVo getAccessToken() {
String url = String.format(oauth2Config.getAccessTokenUrl() + "?corpid=%s&corpsecret=%s",
oauth2Config.getClientId(),
oauth2Config.getClientSecret()
);
AccessTokenVo accessTokenVo = HttpClient.sendGetRequest(url, new HttpHeaders(), AccessTokenVo.class);
return accessTokenVo;
}
public static WechatUserInfo getUserInfo(AccessTokenVo accessTokenVo, String code) {
HttpHeaders httpHeaders = new HttpHeaders();
String url = String.format(oauth2Config.getUserInfoUrl() + "?access_token=%s&code=%s", accessTokenVo.getAccessToken(), code);
WechatUserInfo userVo = HttpClient.sendGetRequest(url, httpHeaders, WechatUserInfo.class);
if (!"0".equals(userVo.getErrcode())) {
throw new RuntimeException(userVo.getErrmsg());
}
userVo.setAccessToken(accessTokenVo.getAccessToken());
return userVo;
}
public static WechatUserInfo getUserGet(AccessTokenVo accessTokenVo, WechatUserInfo wechatUserInfo, String userId) {
HttpHeaders httpHeaders = new HttpHeaders();
String url = String.format(oauth2Config.getUserGetUrl() + "?access_token=%s&userid=%s", accessTokenVo.getAccessToken(), userId);
WechatUserGet userGet = HttpClient.sendGetRequest(url, httpHeaders, WechatUserGet.class);
if (!"0".equals(userGet.getErrcode())) {
throw new RuntimeException(userGet.getErrmsg());
}
BeanUtils.copyProperties(userGet, wechatUserInfo);
return wechatUserInfo;
}
public static WechatUserInfo getUserGet(String code) {
AccessTokenVo accessTokenVo = getAccessToken();
WechatUserInfo wechatUserInfo = getUserInfo(accessTokenVo, code);
wechatUserInfo = getUserGet(accessTokenVo, wechatUserInfo, wechatUserInfo.getWechatUserId());
return wechatUserInfo;
}
public static WechatUserInfo getUserDetail(AccessTokenVo accessTokenVo, WechatUserInfo wechatUserInfo, String userId) {
HttpHeaders httpHeaders = new HttpHeaders();
String url = String.format(oauth2Config.getUserDetailUrl() + "?access_token=%s", accessTokenVo.getAccessToken());
Map<String, Object> map = new HashMap<>(16);
map.put("user_ticket", wechatUserInfo.getUserTicket());
WechatUserGet userGet = HttpClient.sendJSONPostRequest(url,
map, httpHeaders, WechatUserGet.class);
if (!"0".equals(userGet.getErrcode())) {
throw new RuntimeException(userGet.getErrmsg());
}
//BeanUtils.copyProperties(userGet, wechatUserInfo);
wechatUserInfo.setMobile(userGet.getMobile());
wechatUserInfo.setAvatar(userGet.getAvatar());
wechatUserInfo.setGender(userGet.getGender());
return wechatUserInfo;
}
public static WechatUserInfo getUserDetail(String code) {
AccessTokenVo accessTokenVo = getAccessToken();
WechatUserInfo wechatUserInfo = getUserInfo(accessTokenVo, code);
logger.info("getUserInfo:{}", wechatUserInfo);
getUserGet(accessTokenVo, wechatUserInfo, wechatUserInfo.getWechatUserId());
logger.info("getUserGet:{}", wechatUserInfo);
getUserDetail(accessTokenVo, wechatUserInfo, wechatUserInfo.getWechatUserId());
logger.info("getUserDetail:{}", wechatUserInfo);
return wechatUserInfo;
}
@Autowired
public void setOauth2Config(Oauth2Config oauth2Config) {
LoginUtil.oauth2Config = oauth2Config;
}
}
package com.makeit.utils.third.oauth2;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
* 描述:
*
* @author eugene young
* @date 2022/2/23
*/
@Data
@ConfigurationProperties(prefix = "oauth2.config")
@Component
public class Oauth2Config {
private String clientId;
private String agentId;
private String clientSecret;
private String accessTokenUrl;
private String userInfoUrl;
private String userGetUrl;
private String userDetailUrl;
private String refreshTokenUrl;
private String scope;
}
package com.makeit.utils.third.oauth2;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
/**
* 描述:
*
* @author eugene young
* @date 2022/1/13
*/
@Data
public class WechatUserGet {
@JsonProperty(value = "errcode", access = JsonProperty.Access.WRITE_ONLY)
private String errcode;
@JsonProperty(value = "errmsg", access = JsonProperty.Access.WRITE_ONLY)
private String errmsg;
@JsonProperty("userid")
private String wechatUserId;
private String name;
private String mobile;
private String gender;
private String avatar;
}
package com.makeit.utils.third.wechat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class WechatLoginPhoneDTO {
private String code;
private String nickName;
private String avatarUrl;
// private String signature;
// //private WxMaUserInfo rawData;
// private String rawData;
// private String encryptedData;
// private String iv;
//
// private WechatLoginPhoneDTO phoneDTO;
private String phoneCode;
@ApiModelProperty(value = "组织id")
private String orgId;
@ApiModelProperty(value = "城市组织id")
private String cityOrgId;
@ApiModelProperty(value = "区组织id")
private String districtOrgId;
@ApiModelProperty(value = "街道组织id")
private String streetOrgId;
@ApiModelProperty(value = "组织路径")
private String orgPath;
}
package com.makeit.utils.third.wechat;
import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo;
import com.makeit.config.WxMaConfiguration;
import com.makeit.enums.CodeMessageEnum;
import com.makeit.exception.BusinessException;
import com.makeit.utils.old.StringUtils;
import jodd.util.StringUtil;
import me.chanjar.weixin.common.error.WxErrorException;
public class WechatUtil {
public static WxUserInfo login(WechatLoginPhoneDTO dto) {
String code = dto.getCode();
if (StringUtil.isBlank(code)) {
throw new BusinessException(CodeMessageEnum.SYSTEM_ERROR);
}
WxMaService wxService = WxMaConfiguration.getMaService();
try {
WxMaJscode2SessionResult session = wxService.getUserService().getSessionInfo(code);
WxUserInfo userInfo = new WxUserInfo();
userInfo.setNickName(dto.getNickName());
userInfo.setAvatarUrl(dto.getAvatarUrl());
userInfo.setOpenId(session.getOpenid());
userInfo.setUnionId(session.getUnionid());
String phoneNumber = null;
if (StringUtils.isNotBlank(dto.getPhoneCode())) {
WxMaPhoneNumberInfo phoneNoInfo = wxService.getUserService().getPhoneNoInfo(dto.getPhoneCode());
phoneNumber = phoneNoInfo.getPhoneNumber();
}
userInfo.setPhoneNumber(phoneNumber);
return userInfo;
} catch (WxErrorException ex) {
throw new RuntimeException(ex);
}
}
}
package com.makeit.utils.third.wechat;
import cn.binarywang.wx.miniapp.bean.Watermark;
import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder;
import lombok.Data;
import java.io.Serializable;
/**
* @author <a href="https://github.com/binarywang">Binary Wang</a>
*/
@Data
public class WxUserInfo implements Serializable {
private static final long serialVersionUID = 6719822331555402137L;
private String nickName;
// private String gender;
// private String language;
// private String city;
// private String province;
// private String country;
private String avatarUrl;
private String openId;
/**
* 不绑定开放平台不会返回这个字段
*/
private String unionId;
// private Watermark watermark;
private String phoneNumber;
}
package com.makeit.utils.user.wechat; package com.makeit.utils.user.wechat;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.makeit.module.admin.dto.plat.PlatRoleDTOVO;
import com.makeit.module.admin.dto.plat.PlatTenantDTOVO;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.util.List;
/** /**
* 描述: * 描述:
...@@ -18,50 +14,45 @@ import java.util.List; ...@@ -18,50 +14,45 @@ import java.util.List;
@Data @Data
public class WechatUserInfo implements Serializable { public class WechatUserInfo implements Serializable {
@JsonProperty(value = "errcode", access = JsonProperty.Access.WRITE_ONLY)
private String errcode;
@JsonProperty(value = "errmsg", access = JsonProperty.Access.WRITE_ONLY)
private String errmsg;
private String id; private String id;
private String tenantId; private String tenantId;
private String isFactory;
private String orgId; @ApiModelProperty(value = "长者id")
private String elderId;
@ApiModelProperty(value = "openid")
private String openid;
private String account; @ApiModelProperty(value = "姓名")
private String name;
private String post; @ApiModelProperty(value = "手机号码")
private String phone;
@ApiModelProperty(value = "组织id")
private String orgId;
@JsonProperty("UserId") @ApiModelProperty(value = "城市组织id")
private String wechatUserId; private String cityOrgId;
@JsonProperty("DeviceId") @ApiModelProperty(value = "区组织id")
private String deviceId; private String districtOrgId;
@JsonProperty("user_ticket") @ApiModelProperty(value = "街道组织id")
private String userTicket; private String streetOrgId;
private String accessToken; @ApiModelProperty(value = "组织路径")
private String orgPath;
private String name; @ApiModelProperty(value = "微信头像路径")
private String mobile;
private String gender;
private String avatar; private String avatar;
private String token; @ApiModelProperty(value = "微信头像路径(自己系统)")
private String avatarPath;//自己系统的文件路径
@ApiModelProperty("租户列表")
private List<PlatTenantDTOVO> factoryList;
@ApiModelProperty("角色列表") private String token;
private List<PlatRoleDTOVO> roleList;
@ApiModelProperty("微信菜单code列表")
private List<String> wechatMenuCodeList;
} }
...@@ -20,7 +20,6 @@ ...@@ -20,7 +20,6 @@
<orderEntry type="inheritedJdk" /> <orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module" module-name="server-common" /> <orderEntry type="module" module-name="server-common" />
<orderEntry type="module" module-name="server-common" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-data-redis:2.5.6" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-data-redis:2.5.6" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.5.6" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.5.6" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.5.6" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.5.6" level="project" />
...@@ -112,14 +111,6 @@ ...@@ -112,14 +111,6 @@
<orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-core:3.0.3" level="project" /> <orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-core:3.0.3" level="project" />
<orderEntry type="library" name="Maven: org.javassist:javassist:3.25.0-GA" level="project" /> <orderEntry type="library" name="Maven: org.javassist:javassist:3.25.0-GA" level="project" />
<orderEntry type="library" name="Maven: io.swagger:swagger-core:1.5.22" level="project" /> <orderEntry type="library" name="Maven: io.swagger:swagger-core:1.5.22" level="project" />
<orderEntry type="library" name="Maven: com.google.guava:guava:27.0.1-android" level="project" />
<orderEntry type="library" name="Maven: com.google.guava:failureaccess:1.0.1" level="project" />
<orderEntry type="library" name="Maven: com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava" level="project" />
<orderEntry type="library" name="Maven: com.google.code.findbugs:jsr305:3.0.2" level="project" />
<orderEntry type="library" name="Maven: org.checkerframework:checker-compat-qual:2.5.2" level="project" />
<orderEntry type="library" name="Maven: com.google.errorprone:error_prone_annotations:2.2.0" level="project" />
<orderEntry type="library" name="Maven: com.google.j2objc:j2objc-annotations:1.1" level="project" />
<orderEntry type="library" name="Maven: org.codehaus.mojo:animal-sniffer-annotations:1.17" level="project" />
<orderEntry type="library" name="Maven: javax.validation:validation-api:2.0.1.Final" level="project" /> <orderEntry type="library" name="Maven: javax.validation:validation-api:2.0.1.Final" level="project" />
<orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-spring-ui:3.0.3" level="project" /> <orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-spring-ui:3.0.3" level="project" />
<orderEntry type="library" name="Maven: org.redisson:redisson-spring-boot-starter:3.17.5" level="project" /> <orderEntry type="library" name="Maven: org.redisson:redisson-spring-boot-starter:3.17.5" level="project" />
...@@ -174,8 +165,6 @@ ...@@ -174,8 +165,6 @@
<orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-impl:2.3.0" level="project" /> <orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-impl:2.3.0" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:alibabacloud-gateway-spi:0.0.1" level="project" /> <orderEntry type="library" name="Maven: com.aliyun:alibabacloud-gateway-spi:0.0.1" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:openapiutil:0.1.14" level="project" /> <orderEntry type="library" name="Maven: com.aliyun:openapiutil:0.1.14" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcpkix-jdk15on:1.65" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk15on:1.65" level="project" />
<orderEntry type="library" name="Maven: com.huaweicloud:esdk-obs-java-bundle:3.23.5" level="project" /> <orderEntry type="library" name="Maven: com.huaweicloud:esdk-obs-java-bundle:3.23.5" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-core:2.14.1" level="project" /> <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-core:2.14.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.14.1" level="project" /> <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.14.1" level="project" />
...@@ -259,6 +248,24 @@ ...@@ -259,6 +248,24 @@
<orderEntry type="library" name="Maven: commons-logging:commons-logging:1.2" level="project" /> <orderEntry type="library" name="Maven: commons-logging:commons-logging:1.2" level="project" />
<orderEntry type="library" name="Maven: com.google.zxing:core:3.3.2" level="project" /> <orderEntry type="library" name="Maven: com.google.zxing:core:3.3.2" level="project" />
<orderEntry type="library" name="Maven: commons-io:commons-io:2.11.0" level="project" /> <orderEntry type="library" name="Maven: commons-io:commons-io:2.11.0" level="project" />
<orderEntry type="library" name="Maven: com.github.binarywang:weixin-java-miniapp:4.5.0" level="project" />
<orderEntry type="library" name="Maven: com.github.binarywang:weixin-java-common:4.5.0" level="project" />
<orderEntry type="library" name="Maven: com.thoughtworks.xstream:xstream:1.4.20" level="project" />
<orderEntry type="library" name="Maven: io.github.x-stream:mxparser:1.2.2" level="project" />
<orderEntry type="library" name="Maven: xmlpull:xmlpull:1.1.3.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpmime:4.5.13" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:jcl-over-slf4j:1.7.32" level="project" />
<orderEntry type="library" name="Maven: com.google.guava:guava:30.0-jre" level="project" />
<orderEntry type="library" name="Maven: com.google.guava:failureaccess:1.0.1" level="project" />
<orderEntry type="library" name="Maven: com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava" level="project" />
<orderEntry type="library" name="Maven: com.google.code.findbugs:jsr305:3.0.2" level="project" />
<orderEntry type="library" name="Maven: org.checkerframework:checker-qual:3.5.0" level="project" />
<orderEntry type="library" name="Maven: com.google.errorprone:error_prone_annotations:2.3.4" level="project" />
<orderEntry type="library" name="Maven: com.google.j2objc:j2objc-annotations:1.3" level="project" />
<orderEntry type="library" name="Maven: org.dom4j:dom4j:2.1.3" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcpkix-jdk15on:1.68" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk15on:1.68" level="project" />
<orderEntry type="module" module-name="server-service" /> <orderEntry type="module" module-name="server-service" />
<orderEntry type="library" name="Maven: org.projectlombok:lombok:1.18.22" level="project" />
</component> </component>
</module> </module>
\ No newline at end of file
package com.makeit.module.controller.wechat.elder;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
import com.makeit.service.wechat.PlatElderChildrenInfoUserLoginWechatService;
import com.makeit.utils.third.wechat.WechatLoginPhoneDTO;
import com.makeit.utils.user.wechat.WechatUserInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Api(tags = "企微端-登录")
@RestController
@RequestMapping("/children/login")
public class PlatElderChildrenInfoUserLoginWechatController {
@Autowired
private PlatElderChildrenInfoUserLoginWechatService platElderChildrenInfoUserLoginWechatService;
@ApiOperation(value = "登录")
@PostMapping(value = "/login")
public ApiResponseEntity<WechatUserInfo> login(@RequestBody WechatLoginPhoneDTO dto) {
return ApiResponseUtils.success(platElderChildrenInfoUserLoginWechatService.login(dto));
}
@ApiOperation(value = "退出")
@PostMapping(value = "/logout")
public ApiResponseEntity<?> logout() {
platElderChildrenInfoUserLoginWechatService.logout();
return ApiResponseUtils.success();
}
}
...@@ -27,11 +27,6 @@ ...@@ -27,11 +27,6 @@
<artifactId>lombok</artifactId> <artifactId>lombok</artifactId>
</dependency> </dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</dependencies> </dependencies>
......
...@@ -52,4 +52,6 @@ public class PlatElderChildrenInfo extends BaseBusEntity { ...@@ -52,4 +52,6 @@ public class PlatElderChildrenInfo extends BaseBusEntity {
private String avatar; private String avatar;
} }
...@@ -62,6 +62,7 @@ public class PlatAlarmConfigServiceImpl extends ServiceImpl<PlatAlarmConfigMappe ...@@ -62,6 +62,7 @@ public class PlatAlarmConfigServiceImpl extends ServiceImpl<PlatAlarmConfigMappe
public void add(PlatAlarmConfigDTOVO dto) { public void add(PlatAlarmConfigDTOVO dto) {
PlatAlarmConfig alarmConfig = BeanDtoVoUtils.convert(dto, PlatAlarmConfig.class); PlatAlarmConfig alarmConfig = BeanDtoVoUtils.convert(dto, PlatAlarmConfig.class);
alarmConfig.setStatus(CommonEnum.YES.getValue());
save(alarmConfig); save(alarmConfig);
......
package com.makeit.service.wechat;
import com.makeit.utils.third.wechat.WechatLoginPhoneDTO;
import com.makeit.utils.user.wechat.WechatUserInfo;
public interface PlatElderChildrenInfoUserLoginWechatService {
WechatUserInfo login(WechatLoginPhoneDTO dto);
void logout();
}
package com.makeit.service.wechat.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.makeit.entity.platform.elder.PlatElderChildrenInfo;
import com.makeit.service.platform.elder.PlatElderChildrenInfoService;
import com.makeit.service.wechat.PlatElderChildrenInfoUserLoginWechatService;
import com.makeit.utils.data.convert.BeanDtoVoUtils;
import com.makeit.utils.data.id.IdGen;
import com.makeit.utils.sys.FileUtil;
import com.makeit.utils.third.wechat.WechatLoginPhoneDTO;
import com.makeit.utils.third.wechat.WxUserInfo;
import com.makeit.utils.third.wechat.WechatUtil;
import com.makeit.utils.user.TokenUtil;
import com.makeit.utils.user.wechat.WechatUserInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
@Service
public class PlatElderChildrenInfoUserLoginWechatServiceImpl implements PlatElderChildrenInfoUserLoginWechatService {
@Autowired
private PlatElderChildrenInfoService platElderChildrenInfoService;
@Override
@Transactional
public WechatUserInfo login(WechatLoginPhoneDTO dto) {
WxUserInfo userInfo = WechatUtil.login(dto);
PlatElderChildrenInfo childrenInfo = platElderChildrenInfoService.getOne(new QueryWrapper<PlatElderChildrenInfo>().lambda()
.eq(PlatElderChildrenInfo::getOpenid, userInfo.getOpenId()));
if (childrenInfo == null) {
childrenInfo = new PlatElderChildrenInfo();
childrenInfo.setOpenid(userInfo.getOpenId());
childrenInfo.setName(userInfo.getNickName());
}
childrenInfo.setPhone(userInfo.getPhoneNumber());
childrenInfo.setAvatar(userInfo.getAvatarUrl());
WechatUserInfo wechatUserVo = BeanDtoVoUtils.convert(childrenInfo, WechatUserInfo.class);
FileUtil.convert(Arrays.asList(wechatUserVo), WechatUserInfo::getAvatar, (u, f) -> {
u.setAvatarPath(f.getFullUrl());
});
String token = IdGen.getUUID();
wechatUserVo.setToken(token);
TokenUtil.wechatLogin(token, wechatUserVo);
return wechatUserVo;
}
@Override
public void logout() {
TokenUtil.wechatLogout();
}
}
...@@ -25,7 +25,6 @@ ...@@ -25,7 +25,6 @@
</content> </content>
<orderEntry type="inheritedJdk" /> <orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module" module-name="server-common" />
<orderEntry type="library" name="Maven: org.projectlombok:lombok:1.18.22" level="project" /> <orderEntry type="library" name="Maven: org.projectlombok:lombok:1.18.22" level="project" />
<orderEntry type="module" module-name="server-common" /> <orderEntry type="module" module-name="server-common" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-data-redis:2.5.6" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-data-redis:2.5.6" level="project" />
...@@ -107,14 +106,6 @@ ...@@ -107,14 +106,6 @@
<orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-core:3.0.3" level="project" /> <orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-core:3.0.3" level="project" />
<orderEntry type="library" name="Maven: org.javassist:javassist:3.25.0-GA" level="project" /> <orderEntry type="library" name="Maven: org.javassist:javassist:3.25.0-GA" level="project" />
<orderEntry type="library" name="Maven: io.swagger:swagger-core:1.5.22" level="project" /> <orderEntry type="library" name="Maven: io.swagger:swagger-core:1.5.22" level="project" />
<orderEntry type="library" name="Maven: com.google.guava:guava:27.0.1-android" level="project" />
<orderEntry type="library" name="Maven: com.google.guava:failureaccess:1.0.1" level="project" />
<orderEntry type="library" name="Maven: com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava" level="project" />
<orderEntry type="library" name="Maven: com.google.code.findbugs:jsr305:3.0.2" level="project" />
<orderEntry type="library" name="Maven: org.checkerframework:checker-compat-qual:2.5.2" level="project" />
<orderEntry type="library" name="Maven: com.google.errorprone:error_prone_annotations:2.2.0" level="project" />
<orderEntry type="library" name="Maven: com.google.j2objc:j2objc-annotations:1.1" level="project" />
<orderEntry type="library" name="Maven: org.codehaus.mojo:animal-sniffer-annotations:1.17" level="project" />
<orderEntry type="library" name="Maven: javax.validation:validation-api:2.0.1.Final" level="project" /> <orderEntry type="library" name="Maven: javax.validation:validation-api:2.0.1.Final" level="project" />
<orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-spring-ui:3.0.3" level="project" /> <orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-spring-ui:3.0.3" level="project" />
<orderEntry type="library" name="Maven: org.redisson:redisson-spring-boot-starter:3.17.5" level="project" /> <orderEntry type="library" name="Maven: org.redisson:redisson-spring-boot-starter:3.17.5" level="project" />
...@@ -168,8 +159,6 @@ ...@@ -168,8 +159,6 @@
<orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-impl:2.3.0" level="project" /> <orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-impl:2.3.0" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:alibabacloud-gateway-spi:0.0.1" level="project" /> <orderEntry type="library" name="Maven: com.aliyun:alibabacloud-gateway-spi:0.0.1" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:openapiutil:0.1.14" level="project" /> <orderEntry type="library" name="Maven: com.aliyun:openapiutil:0.1.14" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcpkix-jdk15on:1.65" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk15on:1.65" level="project" />
<orderEntry type="library" name="Maven: com.huaweicloud:esdk-obs-java-bundle:3.23.5" level="project" /> <orderEntry type="library" name="Maven: com.huaweicloud:esdk-obs-java-bundle:3.23.5" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-core:2.14.1" level="project" /> <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-core:2.14.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.14.1" level="project" /> <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.14.1" level="project" />
...@@ -253,6 +242,23 @@ ...@@ -253,6 +242,23 @@
<orderEntry type="library" name="Maven: commons-logging:commons-logging:1.2" level="project" /> <orderEntry type="library" name="Maven: commons-logging:commons-logging:1.2" level="project" />
<orderEntry type="library" name="Maven: com.google.zxing:core:3.3.2" level="project" /> <orderEntry type="library" name="Maven: com.google.zxing:core:3.3.2" level="project" />
<orderEntry type="library" name="Maven: commons-io:commons-io:2.11.0" level="project" /> <orderEntry type="library" name="Maven: commons-io:commons-io:2.11.0" level="project" />
<orderEntry type="library" name="Maven: com.github.binarywang:weixin-java-miniapp:4.5.0" level="project" />
<orderEntry type="library" name="Maven: com.github.binarywang:weixin-java-common:4.5.0" level="project" />
<orderEntry type="library" name="Maven: com.thoughtworks.xstream:xstream:1.4.20" level="project" />
<orderEntry type="library" name="Maven: io.github.x-stream:mxparser:1.2.2" level="project" />
<orderEntry type="library" name="Maven: xmlpull:xmlpull:1.1.3.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpmime:4.5.13" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:jcl-over-slf4j:1.7.32" level="project" />
<orderEntry type="library" name="Maven: com.google.guava:guava:30.0-jre" level="project" />
<orderEntry type="library" name="Maven: com.google.guava:failureaccess:1.0.1" level="project" />
<orderEntry type="library" name="Maven: com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava" level="project" />
<orderEntry type="library" name="Maven: com.google.code.findbugs:jsr305:3.0.2" level="project" />
<orderEntry type="library" name="Maven: org.checkerframework:checker-qual:3.5.0" level="project" />
<orderEntry type="library" name="Maven: com.google.errorprone:error_prone_annotations:2.3.4" level="project" />
<orderEntry type="library" name="Maven: com.google.j2objc:j2objc-annotations:1.3" level="project" />
<orderEntry type="library" name="Maven: org.dom4j:dom4j:2.1.3" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcpkix-jdk15on:1.68" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk15on:1.68" level="project" />
<orderEntry type="module" module-name="saas-module" /> <orderEntry type="module" module-name="saas-module" />
<orderEntry type="module" module-name="server-service" /> <orderEntry type="module" module-name="server-service" />
<orderEntry type="module" module-name="server-module" /> <orderEntry type="module" module-name="server-module" />
......
...@@ -110,11 +110,11 @@ sa-token: ...@@ -110,11 +110,11 @@ sa-token:
interceptor: interceptor:
## 登录拦截路径 ## 登录拦截路径
authenticationTntPath: /** authenticationTntPath: /**
authenticationTntPathIgnore: /swagger-resources/**,/v2/api-docs/**,/plat/login/**,/sys/dictionaryCategory/getDictionaryCategoryByList,/mobile/**,/doc.html,/saas/**,/error authenticationTntPathIgnore: /error,/swagger-resources/**,/v2/api-docs/**,/doc.html,/plat/login/**,/sys/dictionaryCategory/getDictionaryCategoryByList,/children/**,/saas/**
## 权限拦截路径 ## 权限拦截路径
authorizationTntPath: /** authorizationTntPath: /**
authorizationTntPathIgnore: /swagger-resources/**,/v2/api-docs/**,/plat/login/**,/sys/dictionaryCategory/getDictionaryCategoryByList,/mobile/**,/doc.html,/saas/**,/error authorizationTntPathIgnore: /error,/swagger-resources/**,/v2/api-docs/**,/doc.html,/plat/login/**,/sys/dictionaryCategory/getDictionaryCategoryByList,/children/**,/saas/**
## saas端登录拦截路径 ## saas端登录拦截路径
authenticationSaasPath: /saas/** authenticationSaasPath: /saas/**
...@@ -124,6 +124,9 @@ interceptor: ...@@ -124,6 +124,9 @@ interceptor:
authorizationSaasPath: /saas/** authorizationSaasPath: /saas/**
authorizationSaasPathIgnore: /saas/login/login authorizationSaasPathIgnore: /saas/login/login
authenticationWechatPath: /children/**
authenticationWechatPathIgnore: /children/login/login
sign: sign:
flag: true flag: true
salt: 89898 salt: 89898
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment