From b8d8d17dfdd0ab2d78244105aa0f29a58cc6da4e Mon Sep 17 00:00:00 2001 From: "382696293@qq.com" <382696293@qq.com> Date: Thu, 7 Dec 2023 17:40:47 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E9=A6=96=E9=A1=B5=E8=A7=86=E9=A2=91?= =?UTF-8?q?=E5=92=8C=E9=A6=96=E9=A1=B5=E4=BB=8B=E7=BB=8D=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/flossom/common/core/enums/Status.java | 30 ++ flossom-modules/flossom-mini-program/pom.xml | 7 + .../miniProgram/Enums/FirstPageTypeEnum.java | 26 ++ .../FlossomMiniProgramApplication.java | 2 +- .../controller/WelcomeController.java | 32 ++ .../miniProgram/domain/WxCode2SessionRet.java | 63 ++++ .../miniProgram/domain/WxUserMember.java | 120 +++++++ .../miniProgram/domain/WxWelcomeSetting.java | 104 ++++++ .../miniProgram/mapper/WelcomeMapper.java | 19 + .../miniProgram/service/IWelcomeService.java | 14 + .../service/impl/WelcomeServiceImpl.java | 36 ++ .../flossom/miniProgram/utils/ByteGroup.java | 26 ++ .../miniProgram/utils/HttpClientUtils.java | 334 ++++++++++++++++++ .../miniProgram/utils/MiniProgramUtils.java | 52 +++ .../miniProgram/utils/WxCryptUtils.java | 54 +++ .../src/main/resources/bootstrap.yml | 4 + .../mapper/miniProgram/WelcomeMapper.xml | 44 +++ pom.xml | 9 + 18 files changed, 975 insertions(+), 1 deletion(-) create mode 100644 flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/enums/Status.java create mode 100644 flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/Enums/FirstPageTypeEnum.java create mode 100644 flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/WelcomeController.java create mode 100644 flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/domain/WxCode2SessionRet.java create mode 100644 flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/domain/WxUserMember.java create mode 100644 flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/domain/WxWelcomeSetting.java create mode 100644 flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/mapper/WelcomeMapper.java create mode 100644 flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/IWelcomeService.java create mode 100644 flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/WelcomeServiceImpl.java create mode 100644 flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/utils/ByteGroup.java create mode 100644 flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/utils/HttpClientUtils.java create mode 100644 flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/utils/MiniProgramUtils.java create mode 100644 flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/utils/WxCryptUtils.java create mode 100644 flossom-modules/flossom-mini-program/src/main/resources/mapper/miniProgram/WelcomeMapper.xml diff --git a/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/enums/Status.java b/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/enums/Status.java new file mode 100644 index 0000000..3d66a77 --- /dev/null +++ b/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/enums/Status.java @@ -0,0 +1,30 @@ +package com.flossom.common.core.enums; + +/** + * 用户状态 + * + * @author flossom + */ +public enum Status +{ + OK("0", "正常"), DISABLE("1", "停用"), DELETED("2", "删除"); + + private final String code; + private final String info; + + Status(String code, String info) + { + this.code = code; + this.info = info; + } + + public String getCode() + { + return code; + } + + public String getInfo() + { + return info; + } +} diff --git a/flossom-modules/flossom-mini-program/pom.xml b/flossom-modules/flossom-mini-program/pom.xml index 7635905..1c21d51 100644 --- a/flossom-modules/flossom-mini-program/pom.xml +++ b/flossom-modules/flossom-mini-program/pom.xml @@ -78,6 +78,13 @@ flossom-common-swagger + + + org.apache.httpcomponents + httpclient + 4.5.2 + + diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/Enums/FirstPageTypeEnum.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/Enums/FirstPageTypeEnum.java new file mode 100644 index 0000000..a5f55df --- /dev/null +++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/Enums/FirstPageTypeEnum.java @@ -0,0 +1,26 @@ +package com.flossom.miniProgram.Enums; + +/** + * 首页配置项枚举 + * 对应数据库:wx_welcome_setting ——> type + */ +public enum FirstPageTypeEnum { + + First_PAGE_VIDEO(1, "启动页视频"), FIRST_WELCOME_IMAGE(2, "欢迎页"), LOGIN_IMAGE(3, "登录页"); + + private final Integer type; + private final String desc; + + FirstPageTypeEnum(Integer type, String desc) { + this.type = type; + this.desc = desc; + } + + public Integer getType() { + return type; + } + + public String getDesc() { + return desc; + } +} diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/FlossomMiniProgramApplication.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/FlossomMiniProgramApplication.java index 26d3055..7d4e892 100644 --- a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/FlossomMiniProgramApplication.java +++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/FlossomMiniProgramApplication.java @@ -1,4 +1,4 @@ -package com.flossom.system; +package com.flossom.miniProgram; import com.flossom.common.security.annotation.EnableCustomConfig; import com.flossom.common.security.annotation.EnableRyFeignClients; diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/WelcomeController.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/WelcomeController.java new file mode 100644 index 0000000..d79f81d --- /dev/null +++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/WelcomeController.java @@ -0,0 +1,32 @@ +package com.flossom.miniProgram.controller; + +import com.flossom.common.core.web.controller.BaseController; +import com.flossom.common.core.web.domain.AjaxResult; +import com.flossom.miniProgram.service.IWelcomeService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/welcome") +public class WelcomeController extends BaseController { + + @Autowired + private IWelcomeService welcomeService; + + /** + * 获取首页视频 + * @return + */ + @GetMapping("/obtain/firstPageVideo") + public AjaxResult obtainFirstPageVideo() { + return AjaxResult.success(welcomeService.obtainFirstPageVideo()); + } + + @GetMapping("/obtain/firstPageIntroduction") + public AjaxResult obtainFirstPageIntroduction() { + return AjaxResult.success(welcomeService.obtainFirstPageIntroduction()); + } + +} diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/domain/WxCode2SessionRet.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/domain/WxCode2SessionRet.java new file mode 100644 index 0000000..f54c314 --- /dev/null +++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/domain/WxCode2SessionRet.java @@ -0,0 +1,63 @@ +package com.flossom.miniProgram.domain; + +/** + * 登录响应结果 + */ +public class WxCode2SessionRet { + private String openid; + private String session_key; + private String unionid; + private Integer errcode; + private String errmsg; + + public WxCode2SessionRet() { + } + + public WxCode2SessionRet(String openid, String session_key, String unionid, Integer errcode, String errmsg) { + this.openid = openid; + this.session_key = session_key; + this.unionid = unionid; + this.errcode = errcode; + this.errmsg = errmsg; + } + + public String getOpenid() { + return openid; + } + + public void setOpenid(String openid) { + this.openid = openid; + } + + public String getSession_key() { + return session_key; + } + + public void setSession_key(String session_key) { + this.session_key = session_key; + } + + public String getUnionid() { + return unionid; + } + + public void setUnionid(String unionid) { + this.unionid = unionid; + } + + public Integer getErrcode() { + return errcode; + } + + public void setErrcode(Integer errcode) { + this.errcode = errcode; + } + + public String getErrmsg() { + return errmsg; + } + + public void setErrmsg(String errmsg) { + this.errmsg = errmsg; + } +} diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/domain/WxUserMember.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/domain/WxUserMember.java new file mode 100644 index 0000000..47dc282 --- /dev/null +++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/domain/WxUserMember.java @@ -0,0 +1,120 @@ +package com.flossom.miniProgram.domain; + +import com.flossom.common.core.web.domain.BaseEntity; + +import java.util.Date; + +public class WxUserMember extends BaseEntity { + + private Integer id; + + /** + * 昵称 + */ + private String nickname; + + /** + * 头像 + */ + private String headimg; + + /** + * 姓名 + */ + private String username; + + /** + * 积分 decimal(10,2) + */ + private Double credit; + + /** + * openid + */ + private String openid; + + /** + * DEFAULT NULL + */ + private String unionid; + + /** + * 微信号 + */ + private String wechat; + + /** + * 应该是邀请码来的 + */ + private String code; + + /** + * 默认普通会员 + */ + private Integer level; + + /** + * 手机 + */ + private String mobile; + + /** + * 密码 + */ + private String password; + + /** + * 个人二维码 + */ + private String userQr;// 个人二维码 + + /** + * 省 + */ + private String province; + + /** + * 市 + */ + private String city; + + /** + * 区 + */ + private String area; + + /** + * 生日 + */ + private Date birthday; + + /** + * 1可以,2不可以 + */ + private Integer clock; + + /** + * DEFAULT '1' ,'1可以2不可以', + */ + private Integer activity; + + /** + * DEFAULT '1' COMMENT '1 未对接到中控 2已经对接 3对接失败' + */ + private Integer isAbutment; + + /** + * decimal(15,2) DEFAULT '0.00' + */ + private Double collagenDay; + + /** + * decimal(15,2) DEFAULT '0.00' + */ + private Double collagenMount; + + /** + * 登陆时间 + */ + private Date loginTime; +} diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/domain/WxWelcomeSetting.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/domain/WxWelcomeSetting.java new file mode 100644 index 0000000..a42bd95 --- /dev/null +++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/domain/WxWelcomeSetting.java @@ -0,0 +1,104 @@ +package com.flossom.miniProgram.domain; + +import com.flossom.common.core.web.domain.BaseEntity; + +public class WxWelcomeSetting extends BaseEntity { + private static final long serialVersionUID = 1L; + + private String id; + /** + * 标题 + */ + private String title; + + /** + * 介绍 + */ + private String introduction; + + /** + * 类型:1 启动页视频、2 欢迎页、 3 登录页' + */ + private Integer type; + + private Integer sort; + + /** + * 地址 + */ + private String url; + + /** + * 状态(0正常 1停用) + */ + private String status; + + public WxWelcomeSetting() { + } + + public WxWelcomeSetting(String id, String title, String introduction, Integer type, Integer sort, String url, String status) { + this.id = id; + this.title = title; + this.introduction = introduction; + this.type = type; + this.sort = sort; + this.url = url; + this.status = status; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getIntroduction() { + return introduction; + } + + public void setIntroduction(String introduction) { + this.introduction = introduction; + } + + public Integer getType() { + return type; + } + + public void setType(Integer type) { + this.type = type; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public Integer getSort() { + return sort; + } + + public void setSort(Integer sort) { + this.sort = sort; + } +} diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/mapper/WelcomeMapper.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/mapper/WelcomeMapper.java new file mode 100644 index 0000000..9dd4dfd --- /dev/null +++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/mapper/WelcomeMapper.java @@ -0,0 +1,19 @@ +package com.flossom.miniProgram.mapper; + + +import com.flossom.miniProgram.domain.WxWelcomeSetting; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface WelcomeMapper { + + /** + * 根据 typs 获取首页配置项 + * + * @param type 类型:1 启动页视频、2 欢迎页、 3 登录页 + * @return + */ + public List obtainWxWlComeSetting(@Param("type") Integer type); + +} diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/IWelcomeService.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/IWelcomeService.java new file mode 100644 index 0000000..421d7e2 --- /dev/null +++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/IWelcomeService.java @@ -0,0 +1,14 @@ +package com.flossom.miniProgram.service; + + +import com.flossom.miniProgram.domain.WxWelcomeSetting; + +import java.util.List; + +public interface IWelcomeService { + + public WxWelcomeSetting obtainFirstPageVideo(); + + + public List obtainFirstPageIntroduction(); +} diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/WelcomeServiceImpl.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/WelcomeServiceImpl.java new file mode 100644 index 0000000..e5726bc --- /dev/null +++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/WelcomeServiceImpl.java @@ -0,0 +1,36 @@ +package com.flossom.miniProgram.service.impl; + +import com.flossom.miniProgram.Enums.FirstPageTypeEnum; +import com.flossom.miniProgram.domain.WxWelcomeSetting; +import com.flossom.miniProgram.mapper.WelcomeMapper; +import com.flossom.miniProgram.service.IWelcomeService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class WelcomeServiceImpl implements IWelcomeService { + + @Autowired + private WelcomeMapper welcomeMapper; + + @Override + public WxWelcomeSetting obtainFirstPageVideo() { + List settings = welcomeMapper.obtainWxWlComeSetting(FirstPageTypeEnum.First_PAGE_VIDEO.getType()); + if (settings == null || settings.size() == 0) { + return null; + } + // 首页视频只有一个,配置多个只返回第一个 + return settings.get(0); + } + + @Override + public List obtainFirstPageIntroduction() { + List settings = welcomeMapper.obtainWxWlComeSetting(FirstPageTypeEnum.FIRST_WELCOME_IMAGE.getType()); + if (settings == null || settings.size() == 0) { + return null; + } + return settings; + } +} diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/utils/ByteGroup.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/utils/ByteGroup.java new file mode 100644 index 0000000..40624f9 --- /dev/null +++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/utils/ByteGroup.java @@ -0,0 +1,26 @@ +package com.flossom.miniProgram.utils; + +import java.util.ArrayList; + +public class ByteGroup { + ArrayList byteContainer = new ArrayList(); + + public byte[] toBytes() { + byte[] bytes = new byte[byteContainer.size()]; + for (int i = 0; i < byteContainer.size(); i++) { + bytes[i] = byteContainer.get(i); + } + return bytes; + } + + public ByteGroup addBytes(byte[] bytes) { + for (byte b : bytes) { + byteContainer.add(b); + } + return this; + } + + public int size() { + return byteContainer.size(); + } +} diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/utils/HttpClientUtils.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/utils/HttpClientUtils.java new file mode 100644 index 0000000..5a9fdb0 --- /dev/null +++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/utils/HttpClientUtils.java @@ -0,0 +1,334 @@ +package com.flossom.miniProgram.utils; + + +import com.flossom.common.core.utils.StringUtils; +import org.apache.http.Consts; +import org.apache.http.HttpEntity; +import org.apache.http.HttpResponse; +import org.apache.http.NameValuePair; +import org.apache.http.client.HttpClient; +import org.apache.http.client.config.RequestConfig; +import org.apache.http.client.config.RequestConfig.Builder; +import org.apache.http.client.entity.UrlEncodedFormEntity; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.client.utils.URIBuilder; +import org.apache.http.conn.ConnectTimeoutException; +import org.apache.http.conn.ssl.SSLConnectionSocketFactory; +import org.apache.http.conn.ssl.SSLContextBuilder; +import org.apache.http.conn.ssl.TrustStrategy; +import org.apache.http.conn.ssl.X509HostnameVerifier; +import org.apache.http.entity.ContentType; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; +import org.apache.http.message.BasicNameValuePair; +import org.apache.http.util.EntityUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.net.ssl.SSLContext; +import javax.net.ssl.SSLException; +import javax.net.ssl.SSLSession; +import javax.net.ssl.SSLSocket; +import java.io.IOException; +import java.net.SocketTimeoutException; +import java.net.URI; +import java.security.GeneralSecurityException; +import java.security.cert.CertificateException; +import java.security.cert.X509Certificate; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; + +public class HttpClientUtils { + + private static final Logger log = LoggerFactory.getLogger(MiniProgramUtils.class); + + public static final int connTimeout = 10000; + public static final int readTimeout = 10000; + public static final String charset = "UTF-8"; + private static HttpClient client = null; + + static { + PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(); + cm.setMaxTotal(128); + cm.setDefaultMaxPerRoute(128); + client = HttpClients.custom().setConnectionManager(cm).build(); + } + + public static String postParameters(String url, String parameterStr) throws ConnectTimeoutException, SocketTimeoutException, Exception { + return post(url, parameterStr, "application/x-www-form-urlencoded", charset, connTimeout, readTimeout); + } + + public static String postParameters(String url, String parameterStr, String charset, Integer connTimeout, Integer readTimeout) throws ConnectTimeoutException, SocketTimeoutException, Exception { + return post(url, parameterStr, "application/x-www-form-urlencoded", charset, connTimeout, readTimeout); + } + + public static String postParameters(String url, Map params) throws ConnectTimeoutException, + SocketTimeoutException, Exception { + return postForm(url, params, null, connTimeout, readTimeout); + } + + public static String postParameters(String url, Map params, Integer connTimeout, Integer readTimeout) throws ConnectTimeoutException, + SocketTimeoutException, Exception { + return postForm(url, params, null, connTimeout, readTimeout); + } + + public static String get(String url) throws Exception { + return get(url, charset, null, null); + } + + public static String get(String url, String charset) throws Exception { + return get(url, charset, connTimeout, readTimeout); + } + + public static String getParameters(String url, Map params) throws Exception { + URIBuilder builder = new URIBuilder(url); + if (params != null) { + for (String key : params.keySet()) { + builder.addParameter(key, params.get(key)); + } + } + URI uri = builder.build(); + return get(uri.toString(), charset, null, null); + } + + /** + * 发送一个 Post 请求, 使用指定的字符集编码. + * + * @param url + * @param body RequestBody + * @param mimeType 例如 application/xml "application/x-www-form-urlencoded" a=1&b=2&c=3 + * @param charset 编码 + * @param connTimeout 建立链接超时时间,毫秒. + * @param readTimeout 响应超时时间,毫秒. + * @return ResponseBody, 使用指定的字符集编码. + * @throws ConnectTimeoutException 建立链接超时异常 + * @throws SocketTimeoutException 响应超时 + * @throws Exception + */ + public static String post(String url, String body, String mimeType, String charset, Integer connTimeout, Integer readTimeout) + throws ConnectTimeoutException, SocketTimeoutException, Exception { + HttpClient client = null; + HttpPost post = new HttpPost(url); + String result = ""; + try { + if (StringUtils.isNotBlank(body)) { + HttpEntity entity = new StringEntity(body, ContentType.create(mimeType, charset)); + post.setEntity(entity); + } + // 设置参数 + RequestConfig.Builder customReqConf = RequestConfig.custom(); + if (connTimeout != null) { + customReqConf.setConnectTimeout(connTimeout); + } + if (readTimeout != null) { + customReqConf.setSocketTimeout(readTimeout); + } + post.setConfig(customReqConf.build()); + + HttpResponse res; + if (url.startsWith("https")) { + // 执行 Https 请求. + client = createSSLInsecureClient(); + res = client.execute(post); + } else { + // 执行 Http 请求. + client = HttpClientUtils.client; + res = client.execute(post); + } + result = EntityUtils.toString(res.getEntity(), charset); + } catch (Exception ex) { + log.error("HttpClient request error!", ex); + throw ex; + } finally { + post.releaseConnection(); + if (url.startsWith("https") && client != null && client instanceof CloseableHttpClient) { + ((CloseableHttpClient) client).close(); + } + } + return result; + } + + /** + * 提交form表单 + * + * @param url + * @param params + * @param connTimeout + * @param readTimeout + * @return + * @throws ConnectTimeoutException + * @throws SocketTimeoutException + * @throws Exception + */ + public static String postForm(String url, Map params, Map headers, Integer connTimeout, Integer readTimeout) throws ConnectTimeoutException, + SocketTimeoutException, Exception { + + HttpClient client = null; + HttpPost post = new HttpPost(url); + try { + if (params != null && !params.isEmpty()) { + List formParams = new ArrayList(); + Set> entrySet = params.entrySet(); + for (Entry entry : entrySet) { + formParams.add(new BasicNameValuePair(entry.getKey(), entry.getValue())); + } + UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formParams, Consts.UTF_8); + post.setEntity(entity); + } + + if (headers != null && !headers.isEmpty()) { + for (Entry entry : headers.entrySet()) { + post.addHeader(entry.getKey(), entry.getValue()); + } + } + // 设置参数 + Builder customReqConf = RequestConfig.custom(); + if (connTimeout != null) { + customReqConf.setConnectTimeout(connTimeout); + } + if (readTimeout != null) { + customReqConf.setSocketTimeout(readTimeout); + } + post.setConfig(customReqConf.build()); + HttpResponse res = null; + if (url.startsWith("https")) { + // 执行 Https 请求. + client = createSSLInsecureClient(); + res = client.execute(post); + } else { + // 执行 Http 请求. + client = HttpClientUtils.client; + res = client.execute(post); + } + return EntityUtils.toString(res.getEntity(), charset); + } catch (Exception ex) { + log.error("HttpClient request error!", ex); + throw ex; + } finally { + post.releaseConnection(); + if (url.startsWith("https") && client != null + && client instanceof CloseableHttpClient) { + ((CloseableHttpClient) client).close(); + } + } + } + + /** + * 发送一个 GET 请求 + * + * @param url + * @param charset + * @param connTimeout 建立链接超时时间,毫秒. + * @param readTimeout 响应超时时间,毫秒. + * @return + * @throws ConnectTimeoutException 建立链接超时 + * @throws SocketTimeoutException 响应超时 + * @throws Exception + */ + public static String get(String url, String charset, Integer connTimeout, Integer readTimeout) + throws ConnectTimeoutException, SocketTimeoutException, Exception { + + HttpClient client = null; + HttpGet get = new HttpGet(url); + String result = ""; + try { + // 设置参数 + Builder customReqConf = RequestConfig.custom(); + if (connTimeout != null) { + customReqConf.setConnectTimeout(connTimeout); + } + if (readTimeout != null) { + customReqConf.setSocketTimeout(readTimeout); + } + get.setConfig(customReqConf.build()); + + HttpResponse res = null; + + if (url.startsWith("https")) { + // 执行 Https 请求. + client = createSSLInsecureClient(); + res = client.execute(get); + } else { + // 执行 Http 请求. + client = HttpClientUtils.client; + res = client.execute(get); + } + result = EntityUtils.toString(res.getEntity(), charset); + } catch (Exception ex) { + log.error("HttpClient request error!", ex); + throw ex; + } finally { + get.releaseConnection(); + if (url.startsWith("https") && client != null && client instanceof CloseableHttpClient) { + ((CloseableHttpClient) client).close(); + } + } + return result; + } + + /** + * 从 response 里获取 charset + * + * @param ressponse + * @return + */ + @SuppressWarnings("unused") + private static String getCharsetFromResponse(HttpResponse ressponse) { + // Content-Type:text/html; charset=GBK + if (ressponse.getEntity() != null && ressponse.getEntity().getContentType() != null && ressponse.getEntity().getContentType().getValue() != null) { + String contentType = ressponse.getEntity().getContentType().getValue(); + if (contentType.contains("charset=")) { + return contentType.substring(contentType.indexOf("charset=") + 8); + } + } + return null; + } + + /** + * 创建 SSL连接 + * + * @return + * @throws GeneralSecurityException + */ + private static CloseableHttpClient createSSLInsecureClient() throws GeneralSecurityException { + try { + SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() { + public boolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException { + return true; + } + }).build(); + SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext, new X509HostnameVerifier() { + + @Override + public boolean verify(String arg0, SSLSession arg1) { + return true; + } + + @Override + public void verify(String host, SSLSocket ssl) + throws IOException { + } + + @Override + public void verify(String host, X509Certificate cert) + throws SSLException { + } + + @Override + public void verify(String host, String[] cns, + String[] subjectAlts) throws SSLException { + } + }); + return HttpClients.custom().setSSLSocketFactory(sslsf).build(); + } catch (GeneralSecurityException e) { + throw e; + } + } + +} diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/utils/MiniProgramUtils.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/utils/MiniProgramUtils.java new file mode 100644 index 0000000..d035032 --- /dev/null +++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/utils/MiniProgramUtils.java @@ -0,0 +1,52 @@ +package com.flossom.miniProgram.utils; + +import java.util.HashMap; +import java.util.Map; + +/** + * 小程序工具类 + */ +public class MiniProgramUtils { + + private static final String WX_APPID = ""; + private static final String WX_SECRET = ""; + + private static final String loginUrl = "https://api.weixin.qq.com/sns/jscode2session"; + + public static String getSessionKeyAndOpenId(String jsCode) throws Exception { + return getSessionKeyAndOpenId(WX_APPID, WX_SECRET, jsCode, "authorization_code"); + } + + /** + * 通过 code 去微信服务器换取 openid 和 session_key + * @param appid + * @param secret + * @param jsCode + * @param grant_type + * + * 响应结果: + * { + * "openid":"xxxxxx", 用户唯一标识 + * "session_key":"xxxxx", 会话密钥 + * "unionid":"xxxxx", + * "errcode":0, 错误码 + * "errmsg":"xxxxx" + * } + * + * errcode : + * 40029 code 无效 js_code 无效 + * 45011 api minute-quota reach limit mustslower retry next minute API 调用太频繁,请稍候再试 + * 40226 code blocked 高风险等级用户,小程序登录拦截 。风险等级详见用户安全解方案 + * -1 system error 系统繁忙,此时请开发者稍候再试 + */ + public static String getSessionKeyAndOpenId(String appid, String secret, String jsCode, String grant_type) throws Exception { + Map params = new HashMap<>(); + params.put("appid", appid); + params.put("secret", secret); + params.put("jsCode", jsCode); + params.put("grant_type", grant_type); + return HttpClientUtils.getParameters(loginUrl, params); + } + + +} diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/utils/WxCryptUtils.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/utils/WxCryptUtils.java new file mode 100644 index 0000000..3095dfa --- /dev/null +++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/utils/WxCryptUtils.java @@ -0,0 +1,54 @@ +package com.flossom.miniProgram.utils; + +import org.apache.commons.codec.binary.Base64; + +import javax.crypto.Cipher; +import javax.crypto.spec.IvParameterSpec; +import javax.crypto.spec.SecretKeySpec; +import java.nio.charset.StandardCharsets; +import java.security.AlgorithmParameters; + +public class WxCryptUtils { + + /** + * 小程序 数据解密 + * + * @param encryptData 加密数据 + * @param iv 对称解密算法初始向量 + * @param sessionKey 对称解密秘钥 + * @return 解密数据 + */ + public static String decrypt(String encryptData, String iv, String sessionKey) throws Exception { + AlgorithmParameters algorithmParameters = AlgorithmParameters.getInstance("AES"); + algorithmParameters.init(new IvParameterSpec(Base64.decodeBase64(iv))); + Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding"); + cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(Base64.decodeBase64(sessionKey), "AES"), algorithmParameters); + byte[] decode = PKCS7Encoder.decode(cipher.doFinal(Base64.decodeBase64(encryptData))); + String decryptStr = new String(decode, StandardCharsets.UTF_8); + return decryptStr; + } + + /** + * 数据加密 + * + * @param data 需要加密的数据 + * @param iv 对称加密算法初始向量 + * @param sessionKey 对称加密秘钥 + * @return 加密数据 + */ + public static String encrypt(String data, String iv, String sessionKey) throws Exception { + AlgorithmParameters algorithmParameters = AlgorithmParameters.getInstance("AES"); + algorithmParameters.init(new IvParameterSpec(Base64.decodeBase64(iv))); + Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding"); + cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(Base64.decodeBase64(sessionKey), "AES"), algorithmParameters); + byte[] textBytes = data.getBytes(StandardCharsets.UTF_8); + ByteGroup byteGroup = new ByteGroup(); + byteGroup.addBytes(textBytes); + byte[] padBytes = PKCS7Encoder.encode(byteGroup.size()); + byteGroup.addBytes(padBytes); + byte[] encryptBytes = cipher.doFinal(byteGroup.toBytes()); + return Base64.encodeBase64String(encryptBytes); + } + + +} diff --git a/flossom-modules/flossom-mini-program/src/main/resources/bootstrap.yml b/flossom-modules/flossom-mini-program/src/main/resources/bootstrap.yml index 8454283..44b6641 100644 --- a/flossom-modules/flossom-mini-program/src/main/resources/bootstrap.yml +++ b/flossom-modules/flossom-mini-program/src/main/resources/bootstrap.yml @@ -23,3 +23,7 @@ spring: # 共享配置 shared-configs: - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} +logging: + level: + org.springframework.jdbc.core.JdbcTemplate: DEBUG # 这里使用了Spring Boot默认的数据源连接池,若使用其他连接池则根据对应的类名进行调整 + com.flossom.miniProgram.mapper: TRACE # 将com.example.mapper替换为自定义Mapper接口的全限定名 diff --git a/flossom-modules/flossom-mini-program/src/main/resources/mapper/miniProgram/WelcomeMapper.xml b/flossom-modules/flossom-mini-program/src/main/resources/mapper/miniProgram/WelcomeMapper.xml new file mode 100644 index 0000000..afdd861 --- /dev/null +++ b/flossom-modules/flossom-mini-program/src/main/resources/mapper/miniProgram/WelcomeMapper.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + select id, title, introduction, type, sort, url, status, create_by, create_time, update_by, update_time, remark + from wx_welcome_setting + + + + + + + and type = #{type} + + + + + + + + + diff --git a/pom.xml b/pom.xml index d6ee60a..c097719 100644 --- a/pom.xml +++ b/pom.xml @@ -35,6 +35,7 @@ 8.2.2 4.1.2 2.14.3 + 5.8.23 @@ -206,6 +207,14 @@ ${flossom.version} + + + cn.hutool + hutool-bom + ${hutool.version} + pom + import + From 6f4b38b3869c220f98039af1ee47db650ffac371 Mon Sep 17 00:00:00 2001 From: "382696293@qq.com" <382696293@qq.com> Date: Thu, 7 Dec 2023 17:41:23 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E9=A6=96=E9=A1=B5=E8=A7=86=E9=A2=91?= =?UTF-8?q?=E5=92=8C=E9=A6=96=E9=A1=B5=E4=BB=8B=E7=BB=8D=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../miniProgram/utils/PKCS7Encoder.java | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/utils/PKCS7Encoder.java diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/utils/PKCS7Encoder.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/utils/PKCS7Encoder.java new file mode 100644 index 0000000..30d6b5d --- /dev/null +++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/utils/PKCS7Encoder.java @@ -0,0 +1,56 @@ +package com.flossom.miniProgram.utils; + +import java.nio.charset.Charset; +import java.util.Arrays; + +public class PKCS7Encoder { + + static Charset CHARSET = Charset.forName("utf-8"); + static int BLOCK_SIZE = 32; + + /** + * 获得对明文进行补位填充的字节. + * + * @param count 需要进行填充补位操作的明文字节个数 + * @return 补齐用的字节数组 + */ + public static byte[] encode(int count) { + // 计算需要填充的位数 + int amountToPad = BLOCK_SIZE - (count % BLOCK_SIZE); + if (amountToPad == 0) { + amountToPad = BLOCK_SIZE; + } + // 获得补位所用的字符 + char padChr = chr(amountToPad); + String tmp = new String(); + for (int index = 0; index < amountToPad; index++) { + tmp += padChr; + } + return tmp.getBytes(CHARSET); + } + + /** + * 删除解密后明文的补位字符 + * + * @param decrypted 解密后的明文 + * @return 删除补位字符后的明文 + */ + public static byte[] decode(byte[] decrypted) { + int pad = decrypted[decrypted.length - 1]; + if (pad < 1 || pad > 32) { + pad = 0; + } + return Arrays.copyOfRange(decrypted, 0, decrypted.length - pad); + } + + /** + * 将数字转化成ASCII码对应的字符,用于对明文进行补码 + * + * @param a 需要转化的数字 + * @return 转化得到的字符 + */ + static char chr(int a) { + byte target = (byte) (a & 0xFF); + return (char) target; + } +} From eed0982e7e4d3f4fd4ae48b90979a35db86cf95a Mon Sep 17 00:00:00 2001 From: "382696293@qq.com" <382696293@qq.com> Date: Thu, 7 Dec 2023 17:41:34 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E9=A6=96=E9=A1=B5=E8=A7=86=E9=A2=91?= =?UTF-8?q?=E5=92=8C=E9=A6=96=E9=A1=B5=E4=BB=8B=E7=BB=8D=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/LoginController.java | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/LoginController.java diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/LoginController.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/LoginController.java new file mode 100644 index 0000000..8317725 --- /dev/null +++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/LoginController.java @@ -0,0 +1,53 @@ +package com.flossom.miniProgram.controller; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.flossom.common.core.web.controller.BaseController; +import com.flossom.common.core.web.domain.AjaxResult; +import com.flossom.miniProgram.domain.WxCode2SessionRet; +import com.flossom.miniProgram.utils.MiniProgramUtils; +import org.apache.commons.codec.digest.DigestUtils; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class LoginController extends BaseController { + + @PostMapping("/wx/login") + public AjaxResult getJwt(@RequestParam(value = "code") String code, + @RequestParam(value = "rawData", required = false) String rawData, + @RequestParam(value = "signature", required = false) String signature) throws Exception { + // 1. 使用临时凭证code获取 appi + appsecret + code + WxCode2SessionRet wxCode2SessionRet = JSON.parseObject(MiniProgramUtils.getSessionKeyAndOpenId(code), WxCode2SessionRet.class); + if (0 != wxCode2SessionRet.getErrcode()) { + return AjaxResult.error(wxCode2SessionRet.getErrmsg()); + } + + // 2.校验签名 小程序发送的签名signature与服务器端生成的签名signature2 = sha1(rawData + sessionKey) + String signature2 = DigestUtils.sha1Hex(rawData + wxCode2SessionRet.getSession_key()); + if (!signature.equals(signature2)) { + return AjaxResult.error("签名校验失败"); + } + + // 5.根据返回的User实体类,判断用户是否是新用户,是的话,将用户信息存到数据库; + // 用户非敏感信息:rawData + // 签名:signature + JSONObject rawDataJson = JSON.parseObject(rawData); +// LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); +// lqw.eq(User::getOpenId, openid); +// User user = userService.getOne(lqw); +// if (user == null) { +// // 用户信息入库 +// String nickName = rawDataJson.getString("nickName"); +// String avatarUrl = rawDataJson.getString("avatarUrl"); +// user = new User(); +// user.setOpenId(openid); +// user.setAvatar(avatarUrl); +// user.setNickName(nickName); +// userService.save(user); +// } + return AjaxResult.success(); + } + +} From 8adf4c058237ade3da9cd32262a58fc64326b697 Mon Sep 17 00:00:00 2001 From: "382696293@qq.com" <382696293@qq.com> Date: Fri, 8 Dec 2023 10:04:43 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E5=B9=B3=E5=8F=B0=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Enums/SystemSettingKeyEnum.java | 27 +++++++ .../controller/SystemSettingController.java | 61 ++++++++++++++ .../controller/WelcomeController.java | 3 + .../miniProgram/domain/WxSystemSetting.java | 79 +++++++++++++++++++ .../domain/{ => vo}/WxCode2SessionRet.java | 2 +- .../mapper/SystemSettingMapper.java | 10 +++ .../service/ISystemSettingService.java | 14 ++++ .../impl/SystemSettingServiceImpl.java | 57 +++++++++++++ .../miniProgram/SystemSettingMapper.xml | 51 ++++++++++++ 9 files changed, 303 insertions(+), 1 deletion(-) create mode 100644 flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/Enums/SystemSettingKeyEnum.java create mode 100644 flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/SystemSettingController.java create mode 100644 flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/domain/WxSystemSetting.java rename flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/domain/{ => vo}/WxCode2SessionRet.java (96%) create mode 100644 flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/mapper/SystemSettingMapper.java create mode 100644 flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/ISystemSettingService.java create mode 100644 flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/SystemSettingServiceImpl.java create mode 100644 flossom-modules/flossom-mini-program/src/main/resources/mapper/miniProgram/SystemSettingMapper.xml diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/Enums/SystemSettingKeyEnum.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/Enums/SystemSettingKeyEnum.java new file mode 100644 index 0000000..1186141 --- /dev/null +++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/Enums/SystemSettingKeyEnum.java @@ -0,0 +1,27 @@ +package com.flossom.miniProgram.Enums; + +/** + * 系统设置-key 枚举 + */ +public enum SystemSettingKeyEnum { + USER_AGREEMENT("USER_AGREEMENT", "用户协议"), + PRIVACY_AGREEMENT("PRIVACY_AGREEMENT", "隐私协议"), + INTEGRAL_RULE("INTEGRAL_RULE", "积分规则"), + ABOUT_US("ABOUT_US", "关于我们"); + + private final String key; + private final String remark; + + SystemSettingKeyEnum(String key, String remark) { + this.key = key; + this.remark = remark; + } + + public String getKey() { + return key; + } + + public String getRemark() { + return remark; + } +} diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/SystemSettingController.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/SystemSettingController.java new file mode 100644 index 0000000..f85e3fe --- /dev/null +++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/SystemSettingController.java @@ -0,0 +1,61 @@ +package com.flossom.miniProgram.controller; + +import com.flossom.common.core.web.controller.BaseController; +import com.flossom.common.core.web.domain.AjaxResult; +import com.flossom.miniProgram.service.ISystemSettingService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * 平台参数设置 + */ +@RestController +@RequestMapping("/system/setting") +public class SystemSettingController extends BaseController { + + @Autowired + private ISystemSettingService systemSettingService; + + /** + * 获取 用户协议 + * + * @return + */ + @GetMapping("/getUserAgreement") + public AjaxResult getUserAgreement() { + return AjaxResult.success(systemSettingService.getUserAgreement()); + } + + /** + * 获取 隐私协议 + * + * @return + */ + @GetMapping("/getPrivacyAgreement") + public AjaxResult getPrivacyAgreement() { + return AjaxResult.success(systemSettingService.getPrivacyAgreement()); + } + + /** + * 获取 积分规则 + * + * @return + */ + @GetMapping("/getIntegralRule") + public AjaxResult getIntegralRule() { + return AjaxResult.success(systemSettingService.getIntegralRule()); + } + + /** + * 获取 关于我们 + * + * @return + */ + @GetMapping("/getAboutUs") + public AjaxResult getAboutUs() { + return AjaxResult.success(systemSettingService.getAboutUs()); + } + +} diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/WelcomeController.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/WelcomeController.java index d79f81d..c399fc7 100644 --- a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/WelcomeController.java +++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/WelcomeController.java @@ -8,6 +8,9 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +/** + * 首页视频、欢迎页、登录页 + */ @RestController @RequestMapping("/welcome") public class WelcomeController extends BaseController { diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/domain/WxSystemSetting.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/domain/WxSystemSetting.java new file mode 100644 index 0000000..6e828c7 --- /dev/null +++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/domain/WxSystemSetting.java @@ -0,0 +1,79 @@ +package com.flossom.miniProgram.domain; + +import com.flossom.common.core.web.domain.BaseEntity; + +public class WxSystemSetting extends BaseEntity { + + private String id; + + /** + * 键 + */ + private String key; + + /** + * 值 + */ + private String value; + + /** + * 说明 + */ + private String instructions; + + /** + * 状态(0正常 1停用 + */ + private String status; + + public WxSystemSetting() { + } + + public WxSystemSetting(String id, String key, String value, String instructions, String status) { + this.id = id; + this.key = key; + this.value = value; + this.instructions = instructions; + this.status = status; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getKey() { + return key; + } + + public void setKey(String key) { + this.key = key; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public String getInstructions() { + return instructions; + } + + public void setInstructions(String instructions) { + this.instructions = instructions; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } +} diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/domain/WxCode2SessionRet.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/domain/vo/WxCode2SessionRet.java similarity index 96% rename from flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/domain/WxCode2SessionRet.java rename to flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/domain/vo/WxCode2SessionRet.java index f54c314..a9e86da 100644 --- a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/domain/WxCode2SessionRet.java +++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/domain/vo/WxCode2SessionRet.java @@ -1,4 +1,4 @@ -package com.flossom.miniProgram.domain; +package com.flossom.miniProgram.domain.vo; /** * 登录响应结果 diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/mapper/SystemSettingMapper.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/mapper/SystemSettingMapper.java new file mode 100644 index 0000000..82c0668 --- /dev/null +++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/mapper/SystemSettingMapper.java @@ -0,0 +1,10 @@ +package com.flossom.miniProgram.mapper; + +import com.flossom.miniProgram.Enums.SystemSettingKeyEnum; +import com.flossom.miniProgram.domain.WxSystemSetting; + +public interface SystemSettingMapper { + + WxSystemSetting getSystemSettingByKey(String systemSetKey); + +} diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/ISystemSettingService.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/ISystemSettingService.java new file mode 100644 index 0000000..9093118 --- /dev/null +++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/ISystemSettingService.java @@ -0,0 +1,14 @@ +package com.flossom.miniProgram.service; + +import com.flossom.miniProgram.domain.WxSystemSetting; + +public interface ISystemSettingService { + + WxSystemSetting getUserAgreement(); + + WxSystemSetting getPrivacyAgreement(); + + WxSystemSetting getIntegralRule(); + + WxSystemSetting getAboutUs(); +} diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/SystemSettingServiceImpl.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/SystemSettingServiceImpl.java new file mode 100644 index 0000000..114e695 --- /dev/null +++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/SystemSettingServiceImpl.java @@ -0,0 +1,57 @@ +package com.flossom.miniProgram.service.impl; + +import com.flossom.miniProgram.Enums.SystemSettingKeyEnum; +import com.flossom.miniProgram.domain.WxSystemSetting; +import com.flossom.miniProgram.mapper.SystemSettingMapper; +import com.flossom.miniProgram.service.ISystemSettingService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class SystemSettingServiceImpl implements ISystemSettingService { + + @Autowired + private SystemSettingMapper systemSettingMapper; + + /** + * 获取 用户协议 + * + * @return + */ + @Override + public WxSystemSetting getUserAgreement() { + return systemSettingMapper.getSystemSettingByKey(SystemSettingKeyEnum.USER_AGREEMENT.getKey()); + } + + + /** + * 获取 隐私协议 + * + * @return + */ + @Override + public WxSystemSetting getPrivacyAgreement() { + return systemSettingMapper.getSystemSettingByKey(SystemSettingKeyEnum.PRIVACY_AGREEMENT.getKey()); + } + + /** + * 获取 积分规则 + * + * @return + */ + @Override + public WxSystemSetting getIntegralRule() { + return systemSettingMapper.getSystemSettingByKey(SystemSettingKeyEnum.INTEGRAL_RULE.getKey()); + } + + /** + * 获取 关于我们 + * + * @return + */ + @Override + public WxSystemSetting getAboutUs() { + return systemSettingMapper.getSystemSettingByKey(SystemSettingKeyEnum.ABOUT_US.getKey()); + } + +} diff --git a/flossom-modules/flossom-mini-program/src/main/resources/mapper/miniProgram/SystemSettingMapper.xml b/flossom-modules/flossom-mini-program/src/main/resources/mapper/miniProgram/SystemSettingMapper.xml new file mode 100644 index 0000000..2153cb2 --- /dev/null +++ b/flossom-modules/flossom-mini-program/src/main/resources/mapper/miniProgram/SystemSettingMapper.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + select id, + `key`, + `value`, + instructions, + status, + create_by, + create_time, + update_by, + update_time, + remark + from wx_system_setting + + + + + + + and `key` = #{key} + + + + + + + +