diff --git a/common/pom.xml b/common/pom.xml index 78b2c63..65e35af 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -28,6 +28,8 @@ hibernate-validator 6.1.5.Final + + \ No newline at end of file diff --git a/common/src/main/java/com/canvas/web/config/MessageConfig.java b/common/src/main/java/com/canvas/web/config/MessageConfig.java new file mode 100644 index 0000000..a22c4e7 --- /dev/null +++ b/common/src/main/java/com/canvas/web/config/MessageConfig.java @@ -0,0 +1,12 @@ +package com.canvas.web.config; + +import com.canvas.web.config.SubMailMsgConfig; + +public class MessageConfig extends SubMailMsgConfig { + + public static final String APP_ID = "msg_appid"; + + public static final String APP_KEY = "msg_appkey"; + + public static final String APP_SIGNTYPE = "msg_signtype"; +} diff --git a/common/src/main/java/com/canvas/web/config/SubMailMsgConfig.java b/common/src/main/java/com/canvas/web/config/SubMailMsgConfig.java new file mode 100644 index 0000000..6699d1e --- /dev/null +++ b/common/src/main/java/com/canvas/web/config/SubMailMsgConfig.java @@ -0,0 +1,50 @@ +package com.canvas.web.config; + + +//短信验证码配置类 +public class SubMailMsgConfig{ + + protected String appId = null; + + protected String appKey = null; + + protected String signType=null; + + //授权模式 + public static final String TYPE_NORMAL = "normal"; + public static final String TYPE_MD5 = "md5"; + public static final String TYPE_SHA1 = "sha1"; + + public String getAppId() { + return appId; + } + + public void setAppId(String appId) { + this.appId = appId; + } + + public String getAppKey() { + return appKey; + } + + public void setAppKey(String appKey) { + this.appKey = appKey; + } + + + public String getSignType() { + if (this.checkType(this.signType)) { + return this.signType; + } + return TYPE_NORMAL; + } + + public void setSignType(String signType) { + this.signType = signType; + } + + private boolean checkType(String signType) { + return TYPE_NORMAL.equals(signType) || TYPE_MD5.equals(signType) + || TYPE_SHA1.equals(signType); + } +} diff --git a/common/src/main/java/com/canvas/web/utils/ConfigLoader.java b/common/src/main/java/com/canvas/web/utils/ConfigLoader.java new file mode 100644 index 0000000..c49683c --- /dev/null +++ b/common/src/main/java/com/canvas/web/utils/ConfigLoader.java @@ -0,0 +1,54 @@ +package com.canvas.web.utils; + +import com.canvas.web.config.MessageConfig; +import com.canvas.web.config.SubMailMsgConfig; + +import java.io.IOException; +import java.util.Properties; + +public class ConfigLoader { + + private static Properties pros = null; + + /** + * 加载文件时,类载入,静态块内部的操作将被运行一次 + * */ + static { + pros = new Properties(); + try { + pros.load(ConfigLoader.class + .getResourceAsStream("/app_config.properties")); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public static enum ConfigType { + Mail,Message,Voice,Internationalsms,Mobiledata + }; + + public static SubMailMsgConfig load(ConfigType type) { + switch (type) { +// case Mail: +// return createMailConfig(); + case Message: + return createMessageConfig(); +// case Voice: +// return createVoiceConfig(); +// case Internationalsms: +// return createInternationalsmsConfig(); +// case Mobiledata: +// return createMobiledataConfig(); + default: + return null; + } + } + + private static SubMailMsgConfig createMessageConfig() { + SubMailMsgConfig config = new MessageConfig(); + config.setAppId(pros.getProperty(MessageConfig.APP_ID)); + config.setAppKey(pros.getProperty(MessageConfig.APP_KEY)); + config.setSignType(pros.getProperty(MessageConfig.APP_SIGNTYPE)); + return config; + } +} diff --git a/system/pom.xml b/system/pom.xml index d3d9035..5b6ad27 100644 --- a/system/pom.xml +++ b/system/pom.xml @@ -73,6 +73,39 @@ org.quartz-scheduler quartz + + + + commons-logging + commons-logging + 1.1.1 + + + commons-collections + commons-collections + 3.2.1 + + + org.apache.commons + commons-lang3 + 3.3.2 + + + net.sf.ezmorph + ezmorph + 1.0.3 + + + net.sf.json-lib + json-lib + 2.2.3 + jdk15 + + + org.apache.httpcomponents + httpclient + 4.3.5 + diff --git a/system/src/main/java/com/canvas/web/modules/security/controller/AuthorizationController.java b/system/src/main/java/com/canvas/web/modules/security/controller/AuthorizationController.java index f38f7a3..cf34fb6 100644 --- a/system/src/main/java/com/canvas/web/modules/security/controller/AuthorizationController.java +++ b/system/src/main/java/com/canvas/web/modules/security/controller/AuthorizationController.java @@ -5,18 +5,17 @@ import com.canvas.web.annotation.rest.AnonymousDeleteMapping; import com.canvas.web.annotation.rest.AnonymousGetMapping; import com.canvas.web.annotation.rest.AnonymousPostMapping; import com.canvas.web.config.RsaProperties; +import com.canvas.web.config.SubMailMsgConfig; import com.canvas.web.exception.BaseException; import com.canvas.web.modules.security.config.bean.LoginCodeEnum; import com.canvas.web.modules.security.config.bean.LoginProperties; import com.canvas.web.modules.security.config.bean.SecurityProperties; +import com.canvas.web.modules.security.msglib.MESSAGEXsend; import com.canvas.web.modules.security.security.TokenProvider; import com.canvas.web.modules.security.service.OnlineUserService; import com.canvas.web.modules.security.service.dto.AuthUserDto; import com.canvas.web.modules.security.service.dto.JwtUserDto; -import com.canvas.web.utils.RedisUtils; -import com.canvas.web.utils.RsaUtils; -import com.canvas.web.utils.SecurityUtils; -import com.canvas.web.utils.StringUtils; +import com.canvas.web.utils.*; import com.wf.captcha.base.Captcha; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -70,7 +69,7 @@ public class AuthorizationController { if (StringUtils.isBlank(authUser.getCode()) || !authUser.getCode().equalsIgnoreCase(code)) { throw new BaseException("验证码错误"); } - UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(authUser.getUsername(), password); + UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(authUser.getPhone(), password); Authentication authentication = authenticationManagerBuilder.getObject().authenticate(authenticationToken); SecurityContextHolder.getContext().setAuthentication(authentication); // 生成令牌 @@ -123,4 +122,18 @@ public class AuthorizationController { onlineUserService.logout(tokenProvider.getToken(request)); return new ResponseEntity<>(HttpStatus.OK); } + + @ApiOperation("短信验证码") + @AnonymousGetMapping(value = "/msg") + public ResponseEntity sendXMsg(){ + SubMailMsgConfig config= ConfigLoader.load(ConfigLoader.ConfigType.Message); + MESSAGEXsend submail = new MESSAGEXsend(config); + submail.addTo("15827011881"); + submail.setProject("hhzXr"); + submail.addVar("code", "2346"); + submail.addVar("minue", "2289"); + String response=submail.xsend(); + System.out.println("接口返回数据:"+response); + return ResponseEntity.ok(response); + } } diff --git a/system/src/main/java/com/canvas/web/modules/security/msglib/MESSAGEXsend.java b/system/src/main/java/com/canvas/web/modules/security/msglib/MESSAGEXsend.java new file mode 100644 index 0000000..d8926c7 --- /dev/null +++ b/system/src/main/java/com/canvas/web/modules/security/msglib/MESSAGEXsend.java @@ -0,0 +1,44 @@ +package com.canvas.web.modules.security.msglib; + +import com.canvas.web.config.SubMailMsgConfig; +import com.canvas.web.modules.security.msglib.base.ISender; +import com.canvas.web.modules.security.msglib.base.SenderWapper; + +public class MESSAGEXsend extends SenderWapper { + + protected SubMailMsgConfig config = null; + public static final String ADDRESSBOOK = "addressbook"; + public static final String TO = "to"; + public static final String PROJECT = "project"; + public static final String VARS = "vars"; + public static final String LINKS = "links"; + + public MESSAGEXsend(SubMailMsgConfig config) { + this.config = config; + } + + public void addTo(String address) { + requestData.addWithComma(TO, address); + } + + public void addAddressBook(String addressbook) { + requestData.addWithComma(ADDRESSBOOK, addressbook); + } + + public void setProject(String project) { + requestData.put(PROJECT, project); + } + + public void addVar(String key, String val) { + requestData.addWithJson(VARS, key, val); + } + + @Override + public ISender getSender() { + return new Message(this.config); + } + + public String xsend(){ + return getSender().xsend(requestData); + } +} diff --git a/system/src/main/java/com/canvas/web/modules/security/msglib/Message.java b/system/src/main/java/com/canvas/web/modules/security/msglib/Message.java new file mode 100644 index 0000000..09344ca --- /dev/null +++ b/system/src/main/java/com/canvas/web/modules/security/msglib/Message.java @@ -0,0 +1,94 @@ +package com.canvas.web.modules.security.msglib; + +import com.canvas.web.config.SubMailMsgConfig; +import com.canvas.web.modules.security.msglib.base.Sender; + +import java.util.Map; + +public class Message extends Sender { + + private static final String API_SEND = "http://api.submail.cn/message/send.json"; + private static final String API_XSEND = "http://api.submail.cn/message/xsend.json"; + private static final String API_MULTIXSEND = "http://api.submail.cn/message/multixsend.json"; + private static final String API_MULTISEND = "http://api.submail.cn/message/multisend.json"; + private static final String API_LOG = "http://api.submail.cn/log/message.json"; + private static final String API_TEMPLATE = "http://api.submail.cn/message/template.json"; + private static final String API_SUBSCRIBE = "http://api.submail.cn/addressbook/message/subscribe.json"; + private static final String API_UNSUBSCRIBE = "http://api.submail.cn/addressbook/message/unsubscribe.json"; + private static final String API_BALANCE = "http://api.mysubmail.com/balance/sms.json"; + + public Message(SubMailMsgConfig config) { + this.config = config; + } + + /** + * 发送请求数据到服务器,数据由两部分组成,其中一个是原始数据,另一个是签名 + */ + @Override + public String send(Map data) { + return request(API_SEND, data); + } + + @Override + public String xsend(Map data) { + return request(API_XSEND, data); + } + + @Override + public String multixsend(Map data) { + return request(API_MULTIXSEND, data); + } + + @Override + public String multisend(Map data) { + return request(API_MULTISEND, data); + } + + @Override + public String subscribe(Map data) { + // TODO Auto-generated method stub + return request(API_SUBSCRIBE, data); + } + + @Override + public String unsubscribe(Map data) { + // TODO Auto-generated method stub + return request(API_UNSUBSCRIBE, data); + } + + @Override + public String log(Map data) { + // TODO Auto-generated method stub + return request(API_LOG, data); + } + + @Override + public String balance(Map data) { + // TODO Auto-generated method stub + return request(API_BALANCE, data); + } + + @Override + public String get(Map data) { + // TODO Auto-generated method stub + return getMethodRequest(API_TEMPLATE, data); + } + + @Override + public String post(Map data) { + // TODO Auto-generated method stub + return request(API_TEMPLATE, data); + } + + @Override + public String put(Map data) { + // TODO Auto-generated method stub + return putMethodRequest(API_TEMPLATE, data); + } + + @Override + public String delete(Map data) { + // TODO Auto-generated method stub + return deleteMethodRequest(API_TEMPLATE, data); + } +} diff --git a/system/src/main/java/com/canvas/web/modules/security/msglib/base/ISender.java b/system/src/main/java/com/canvas/web/modules/security/msglib/base/ISender.java new file mode 100644 index 0000000..095ffef --- /dev/null +++ b/system/src/main/java/com/canvas/web/modules/security/msglib/base/ISender.java @@ -0,0 +1,38 @@ +package com.canvas.web.modules.security.msglib.base; + +import java.util.Map; + +public interface ISender { + + public String send(Map data); + + public String xsend(Map data); + + public String subscribe(Map data); + + public String unsubscribe(Map data); + + public String multixsend(Map data); + + public String multisend(Map data); + + public String verify(Map data); + + public String log(Map data); + + public String get(Map data); + + public String post(Map data); + + public String put(Map data); + + public String delete(Map data); + + public String selMobiledata(Map data); + + public String toService(Map data); + + public String charge(Map data); + + public String balance(Map data); +} diff --git a/system/src/main/java/com/canvas/web/modules/security/msglib/base/Sender.java b/system/src/main/java/com/canvas/web/modules/security/msglib/base/Sender.java new file mode 100644 index 0000000..d733f38 --- /dev/null +++ b/system/src/main/java/com/canvas/web/modules/security/msglib/base/Sender.java @@ -0,0 +1,358 @@ +package com.canvas.web.modules.security.msglib.base; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import com.canvas.web.modules.utils.HttpDeleteUtil; +import com.canvas.web.modules.utils.RequestEncoder; +import net.sf.json.JSONObject; +import org.apache.http.HttpEntity; +import org.apache.http.HttpResponse; +import org.apache.http.NameValuePair; +import org.apache.http.client.ClientProtocolException; +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.methods.HttpPut; +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.HttpClientBuilder; +import org.apache.http.message.BasicNameValuePair; +import org.apache.http.protocol.HTTP; +import org.apache.http.util.EntityUtils; +import com.canvas.web.config.SubMailMsgConfig; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.entity.mime.MultipartEntityBuilder; + + +import java.io.IOException; +import java.util.Map; + +public class Sender implements ISender{ + + protected SubMailMsgConfig config = null; + private static final String API_TIMESTAMP = "http://api.submail.cn/service/timestamp.json"; + public static final String APPID = "appid"; + public static final String TIMESTAMP = "timestamp"; + public static final String SIGN_TYPE = "sign_type"; + public static final String SIGNATURE = "signature"; + public static final String APPKEY = "appkey"; + private CloseableHttpClient closeableHttpClient = null; + + + public Sender() { + closeableHttpClient = HttpClientBuilder.create().build(); + } + + + @Override + public String send(Map data) { + return null; + } + + @Override + public String xsend(Map data) { + return null; + } + + @Override + public String subscribe(Map data) { + return null; + } + + @Override + public String unsubscribe(Map data) { + return null; + } + + @Override + public String multixsend(Map data) { + return null; + } + + @Override + public String multisend(Map data) { + return null; + } + + @Override + public String verify(Map data) { + return null; + } + + @Override + public String log(Map data) { + return null; + } + + @Override + public String get(Map data) { + return null; + } + + @Override + public String post(Map data) { + return null; + } + + @Override + public String put(Map data) { + return null; + } + + @Override + public String delete(Map data) { + return null; + } + + @Override + public String selMobiledata(Map data) { + return null; + } + + @Override + public String toService(Map data) { + return null; + } + + @Override + public String charge(Map data) { + return null; + } + + @Override + public String balance(Map data) { + return null; + } + + + /** + * 请求时间戳 + * + * @return timestamp + */ + protected String getTimestamp() { + HttpGet httpget = new HttpGet(API_TIMESTAMP); + HttpResponse response; + try { + response = closeableHttpClient.execute(httpget); + HttpEntity httpEntity = response.getEntity(); + String jsonStr = EntityUtils.toString(httpEntity, "UTF-8"); + if (jsonStr != null) { + JSONObject json = JSONObject.fromObject(jsonStr); + return json.getString("timestamp"); + } + closeableHttpClient.close(); + } catch (ClientProtocolException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + + return null; + } + + protected String createSignature(String data) { + if (SubMailMsgConfig.TYPE_NORMAL.equals(config.getSignType())) { + return config.getAppKey(); + } else { + return buildSignature(data); + } + } + + + private String buildSignature(String data) { + String app = config.getAppId(); + String appKey = config.getAppKey(); + // order is confirmed + String jointData = app + appKey + data + app + appKey; + if (SubMailMsgConfig.TYPE_MD5.equals(config.getSignType())) { + return RequestEncoder.encode(RequestEncoder.MD5, jointData); + } else if (SubMailMsgConfig.TYPE_SHA1.equals(config.getSignType())) { + return RequestEncoder.encode(RequestEncoder.SHA1, jointData); + } + return null; + } + + /** + * 请求数据 post提交 + * + * @param url + * @param data + * @return boolean + */ + protected String request(String url, Map data) { + HttpPost httppost = new HttpPost(url); + httppost.addHeader("charset", "UTF-8"); + httppost.setEntity(build(data)); + + try { + HttpResponse response = closeableHttpClient.execute(httppost); + HttpEntity httpEntity = response.getEntity(); + if (httpEntity != null) { + String jsonStr = EntityUtils.toString(httpEntity, "UTF-8"); + System.out.println(jsonStr); + return jsonStr; + } + closeableHttpClient.close(); + } catch (ClientProtocolException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } + + /** + * 短信模板:get请求方法 + * + * @param url + * @param data + * @return + */ + protected String getMethodRequest(String url, Map data) { + data.put(APPID, config.getAppId()); + data.put(TIMESTAMP, this.getTimestamp()); + data.put(SIGNATURE, config.getAppKey()); + String urlGet = url + "?"; + for (Map.Entry entry : data.entrySet()) { + String key = entry.getKey(); + Object value = entry.getValue(); + if (value instanceof String) { + urlGet += key + "=" + String.valueOf(value) + "&"; + } + } + urlGet = urlGet.substring(0, urlGet.length() - 1); + HttpGet httpGet = new HttpGet(urlGet); + try { + CloseableHttpClient closeableHttpClient = HttpClientBuilder.create().build(); + HttpResponse response = closeableHttpClient.execute(httpGet); + HttpEntity httpEntity = response.getEntity(); + if (httpEntity != null) { + String jsonStr = EntityUtils.toString(httpEntity, "UTF-8"); + System.out.println(jsonStr); + return jsonStr; + } + closeableHttpClient.close(); + } catch (ClientProtocolException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } + + /** + * 短信模板:put方法 + * + * @param url + * @param data + * @return + */ + protected String putMethodRequest(String url, Map data) { + HttpPut httpput = new HttpPut(url); + httpput.addHeader("charset", "UTF-8"); + data.put(APPID, config.getAppId()); + data.put(TIMESTAMP, this.getTimestamp()); + data.put(SIGNATURE, config.getAppKey()); + List params = new ArrayList(); + for (Map.Entry entry : data.entrySet()) { + String key = entry.getKey(); + String value = (String) entry.getValue(); + params.add(new BasicNameValuePair(key, value)); + } + + try { + httpput.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8)); + HttpResponse response = closeableHttpClient.execute(httpput); + HttpEntity httpEntity = response.getEntity(); + if (httpEntity != null) { + String jsonStr = EntityUtils.toString(httpEntity, "UTF-8"); + System.out.println(jsonStr); + return jsonStr; + } + closeableHttpClient.close(); + } catch (ClientProtocolException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } + + /** + * 短信模板:Delete方法 + * + * @param url + * @param data + * @return + */ + protected String deleteMethodRequest(String url, Map data) { + data.put(APPID, config.getAppId()); + data.put(TIMESTAMP, this.getTimestamp()); + data.put(SIGNATURE, config.getAppKey()); + String urlDel = ""; + for (Map.Entry entry : data.entrySet()) { + String key = entry.getKey(); + Object value = entry.getValue(); + if (value instanceof String) { + urlDel += key + "=" + String.valueOf(value) + "&"; + } + System.out.println(urlDel); + } + urlDel = urlDel.substring(0, urlDel.length() - 1); + HttpDeleteUtil httpDelete = new HttpDeleteUtil(url); + try { + HttpEntity httpEntity = new StringEntity(urlDel); + httpDelete.setEntity(httpEntity); + CloseableHttpClient closeableHttpClient = HttpClientBuilder.create().build(); + HttpResponse response = closeableHttpClient.execute(httpDelete); + HttpEntity httpEntity2 = response.getEntity(); + if (httpEntity2 != null) { + String jsonStr = EntityUtils.toString(httpEntity2, "UTF-8"); + System.out.println(jsonStr); + return jsonStr; + } + closeableHttpClient.close(); + } catch (ClientProtocolException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } + + /** + * 将请求数据转换为HttpEntity + * + * @param data + * @return HttpEntity + */ + protected HttpEntity build(Map data) { + MultipartEntityBuilder builder = MultipartEntityBuilder.create(); + builder.addTextBody(APPID, config.getAppId()); + // builder.setCharset(Charset.); + builder.addTextBody(TIMESTAMP, this.getTimestamp()); + builder.addTextBody(SIGN_TYPE, config.getSignType()); + // set the properties below for signature + data.put(APPID, config.getAppId()); + data.put(TIMESTAMP, this.getTimestamp()); + data.put(SIGN_TYPE, config.getSignType()); + ContentType contentType = ContentType.create(HTTP.PLAIN_TEXT_TYPE, HTTP.UTF_8); + builder.addTextBody(SIGNATURE, createSignature(RequestEncoder.formatRequest(data)), contentType); + for (Map.Entry entry : data.entrySet()) { + String key = entry.getKey(); + Object value = entry.getValue(); + if (value instanceof String) { + builder.addTextBody(key, String.valueOf(value), contentType); + } else if (value instanceof File) { + builder.addBinaryBody(key, (File) value); + } + } + return builder.build(); + } +} diff --git a/system/src/main/java/com/canvas/web/modules/security/msglib/base/SenderWapper.java b/system/src/main/java/com/canvas/web/modules/security/msglib/base/SenderWapper.java new file mode 100644 index 0000000..6d483c8 --- /dev/null +++ b/system/src/main/java/com/canvas/web/modules/security/msglib/base/SenderWapper.java @@ -0,0 +1,10 @@ +package com.canvas.web.modules.security.msglib.base; + +import com.canvas.web.modules.security.msglib.entity.DataStore; + +public abstract class SenderWapper { + + protected DataStore requestData = new DataStore(); + + public abstract ISender getSender(); +} diff --git a/system/src/main/java/com/canvas/web/modules/security/msglib/entity/DataStore.java b/system/src/main/java/com/canvas/web/modules/security/msglib/entity/DataStore.java new file mode 100644 index 0000000..e9b9738 --- /dev/null +++ b/system/src/main/java/com/canvas/web/modules/security/msglib/entity/DataStore.java @@ -0,0 +1,84 @@ +package com.canvas.web.modules.security.msglib.entity; + +import io.netty.util.internal.StringUtil; +import net.sf.json.JSONObject; + +import java.util.ArrayList; +import java.util.TreeMap; + +public class DataStore extends TreeMap { + public static final String COMMA=""; + + private static final long serialVersionUID =1L; + + ArrayList multi= new ArrayList(); + + JSONObject varJson= new JSONObject(); + + JSONObject toJson=new JSONObject(); + + public DataStore(){ + + } + + public void addWithComma(String key, String value) { + if (StringUtil.isNullOrEmpty(key)) + return; + if (this.containsKey(key)) { + String item = COMMA + value; + this.put(key, this.get(key) + item); + } else { + this.put(key, value); + } + } + + public void addWithBracket(String key, String left, String right) { + addWithComma(key, left + "<" + right + ">"); + } + + public void addWithJson(String key, String jKey, String jValue) { + if (StringUtil.isNullOrEmpty(key)) + return; + try { + JSONObject json = null; + if (this.containsKey(key)) { + Object val = this.get(key); + json = JSONObject.fromObject(val); + } else { + json = new JSONObject(); + } + if (json != null) { + json.put(jKey, jValue); + this.put(key, json.toString()); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + public JSONObject getVarJson(String key1, String val1,String key2,String val2) { + varJson.put(key1, val1); + varJson.put(key2, val2); + return varJson; + } + + public void setVarJson(JSONObject json) { + varJson=json; + } + + public void addMulti(String Vkey,String tokey,String toval,String mkey) { + toJson.put(Vkey, varJson); + toJson.put(tokey, toval); + multi.add(toJson.toString()); + if(!multi.isEmpty()){ + this.put(mkey, multi.toString()); + } + } + + private int idx = 0; + + + public void addWithIncrease(String key, Object value) { + this.put(key + "[" + idx++ + "]", value); + } +} diff --git a/system/src/main/java/com/canvas/web/modules/security/security/TokenConfigurer.java b/system/src/main/java/com/canvas/web/modules/security/security/TokenConfigurer.java index b9d7bf8..32dc9ad 100644 --- a/system/src/main/java/com/canvas/web/modules/security/security/TokenConfigurer.java +++ b/system/src/main/java/com/canvas/web/modules/security/security/TokenConfigurer.java @@ -7,6 +7,7 @@ import com.canvas.web.modules.security.service.UserCacheClean; import org.springframework.security.config.annotation.SecurityConfigurerAdapter; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.web.DefaultSecurityFilterChain; +import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; @RequiredArgsConstructor public class TokenConfigurer extends SecurityConfigurerAdapter { @@ -14,4 +15,10 @@ public class TokenConfigurer extends SecurityConfigurerAdapter updateAvatar(MultipartFile file); - /** - * 修改邮箱 - * @param username 用户名 - * @param email 邮箱 - */ - void updateEmail(String username, String email); + /** * 查询全部 diff --git a/system/src/main/java/com/canvas/web/modules/system/service/impl/UserServiceImpl.java b/system/src/main/java/com/canvas/web/modules/system/service/impl/UserServiceImpl.java index 1b78219..872edc2 100644 --- a/system/src/main/java/com/canvas/web/modules/system/service/impl/UserServiceImpl.java +++ b/system/src/main/java/com/canvas/web/modules/system/service/impl/UserServiceImpl.java @@ -49,7 +49,7 @@ public class UserServiceImpl implements UserService{ @Override public UserDto findByName(String userName) { - User user = userRepository.findByUsername(userName); + User user = userRepository.findByPhone(userName); if (user == null) { throw new EntityNotFoundException(User.class, "name", userName); } else { @@ -67,10 +67,6 @@ public class UserServiceImpl implements UserService{ return null; } - @Override - public void updateEmail(String username, String email) { - - } @Override public Object queryAll(UserQueryCriteria criteria, Pageable pageable) { diff --git a/system/src/main/java/com/canvas/web/modules/utils/HttpDeleteUtil.java b/system/src/main/java/com/canvas/web/modules/utils/HttpDeleteUtil.java new file mode 100644 index 0000000..2af410b --- /dev/null +++ b/system/src/main/java/com/canvas/web/modules/utils/HttpDeleteUtil.java @@ -0,0 +1,23 @@ +package com.canvas.web.modules.utils; + +import org.apache.http.client.methods.HttpEntityEnclosingRequestBase; +import oshi.annotation.concurrent.NotThreadSafe; + +import java.net.URI; + +@NotThreadSafe +public class HttpDeleteUtil extends HttpEntityEnclosingRequestBase { + + public static final String METHOD_NAME = "DELETE"; + public String getMethod() { return METHOD_NAME; } + + public HttpDeleteUtil(final String uri) { + super(); + setURI(URI.create(uri)); + } + public HttpDeleteUtil(final URI uri) { + super(); + setURI(uri); + } + public HttpDeleteUtil() { super(); } +} diff --git a/system/src/main/java/com/canvas/web/modules/utils/RequestEncoder.java b/system/src/main/java/com/canvas/web/modules/utils/RequestEncoder.java new file mode 100644 index 0000000..9100634 --- /dev/null +++ b/system/src/main/java/com/canvas/web/modules/utils/RequestEncoder.java @@ -0,0 +1,53 @@ +package com.canvas.web.modules.utils; + +import java.security.MessageDigest; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; +public class RequestEncoder { + + private static final char[] HEX_DIGITS = { '0', '1', '2', '3', '4', '5', + '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; + public static final String MD5 = "MD5"; + public static final String SHA1 = "SHA1"; + + public static String encode(String algorithm, String str) { + if (str == null) { + return null; + } + try { + MessageDigest messageDigest = MessageDigest.getInstance(algorithm); + messageDigest.update(str.getBytes("UTF-8")); + return getFormattedText(messageDigest.digest()); + } catch (Exception e) { + throw new RuntimeException(e); + } + + } + + private static String getFormattedText(byte[] bytes) { + int len = bytes.length; + StringBuilder buf = new StringBuilder(len * 2); + for (int j = 0; j < len; j++) { buf.append(HEX_DIGITS[(bytes[j] >> 4) & 0x0f]); + buf.append(HEX_DIGITS[bytes[j] & 0x0f]); + } + return buf.toString(); + } + + public static String formatRequest(Map data){ + Set keySet = data.keySet(); + Iterator it = keySet.iterator(); + StringBuffer sb = new StringBuffer(); + while(it.hasNext()){ + String key = it.next(); + Object value = data.get(key); + if(value instanceof String){ + sb.append(key + "=" + value + "&"); + } + } + if(sb.length() != 0){ + return sb.substring(0, sb.length() - 1); + } + return null; + } +} diff --git a/system/src/main/resources/app_config.properties b/system/src/main/resources/app_config.properties new file mode 100644 index 0000000..c80fb7f --- /dev/null +++ b/system/src/main/resources/app_config.properties @@ -0,0 +1,16 @@ +#mail_appid = 12673 +#mail_appkey = 208b440dff3b193c745f23fb022 +#mail_signtype = md5 +msg_appid = 37378 +msg_appkey = ca03023b0c19dc7957a6d61b496097da +msg_signtype = normal +#voice_appid = 20501 +#voice_appkey = eaf6edffcb3cdb9c1d31dda253 +#voice_signtype=md5 +#internationalsms_appid=60092 +#internationalsms_appkey=d58bfc41d19d62a4ad4a741fa64b +#internationalsms_signtype=md5 +#mobiledata_appid=13145 +#mobiledata_appkey=cb575bd20fb8914d0483ad234c4 +#mobiledata_signtype=md5 +