Skip to content

Commit e7cddbb

Browse files
committed
2 parents 1f49df0 + 26a55ae commit e7cddbb

46 files changed

Lines changed: 1359 additions & 303 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,5 @@ target
2222
.settings
2323
.classpath
2424
.project
25+
26+
test.properties

pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,12 @@
5252
<artifactId>bcprov-jdk15</artifactId>
5353
<version>1.46</version>
5454
</dependency>
55+
<!--阿里云-->
56+
<dependency>
57+
<groupId>com.aliyun</groupId>
58+
<artifactId>aliyun-java-sdk-core</artifactId>
59+
<version>3.2.4</version>
60+
</dependency>
5561
<!--七牛云存储-->
5662
<dependency>
5763
<groupId>com.qiniu</groupId>

src/main/java/com/javabaas/server/Main.java

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,13 @@
88
import org.springframework.boot.SpringApplication;
99
import org.springframework.boot.autoconfigure.SpringBootApplication;
1010
import org.springframework.context.annotation.Bean;
11+
import org.springframework.data.mapping.context.MappingContext;
12+
import org.springframework.data.mongodb.MongoDbFactory;
13+
import org.springframework.data.mongodb.core.convert.DbRefResolver;
14+
import org.springframework.data.mongodb.core.convert.DefaultDbRefResolver;
15+
import org.springframework.data.mongodb.core.convert.MappingMongoConverter;
16+
import org.springframework.data.mongodb.core.mapping.MongoPersistentEntity;
17+
import org.springframework.data.mongodb.core.mapping.MongoPersistentProperty;
1118
import org.springframework.web.client.RestTemplate;
1219
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
1320
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@@ -31,9 +38,11 @@ public static void main(String[] args) {
3138
@Override
3239
public void addInterceptors(InterceptorRegistry registry) {
3340
//请求头拦截器,检查Content-Type、platform等
34-
registry.addInterceptor(contentTypeInterceptor).addPathPatterns("/api/**").excludePathPatterns("/api/file/callback", "/api/file/notify/**", "/customer/**");
41+
registry.addInterceptor(contentTypeInterceptor).addPathPatterns("/api/**").excludePathPatterns("/api/file/callback",
42+
"/api/file/notify/**", "/customer/**");
3543
//授权拦截器
36-
registry.addInterceptor(authInterceptor).addPathPatterns("/api/**").excludePathPatterns("/api/file/callback", "/api/file/notify/**", "/api/admin/**", "/customer/**");
44+
registry.addInterceptor(authInterceptor).addPathPatterns("/api/**").excludePathPatterns("/api/file/callback",
45+
"/api/file/notify/**", "/api/admin/**", "/customer/**");
3746
//超级权限
3847
registry.addInterceptor(adminInterceptor).addPathPatterns("/api/admin/**");
3948
//管理权限
@@ -45,4 +54,14 @@ public RestTemplate getRest() {
4554
return new RestTemplate();
4655
}
4756

57+
@Bean
58+
public MappingMongoConverter mongoConverter(MongoDbFactory mongoFactory, MappingContext<? extends MongoPersistentEntity<?>,
59+
MongoPersistentProperty> mongoMappingContext) throws Exception {
60+
//自动将mongoDB中存储的key中的.替换为_
61+
DbRefResolver dbRefResolver = new DefaultDbRefResolver(mongoFactory);
62+
MappingMongoConverter mongoConverter = new MappingMongoConverter(dbRefResolver, mongoMappingContext);
63+
mongoConverter.setMapKeyDotReplacement("_");
64+
return mongoConverter;
65+
}
66+
4867
}

src/main/java/com/javabaas/server/admin/controller/AccountController.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import javax.validation.Valid;
1313

1414
/**
15+
* 第三方账号管理接口
1516
* Created by test on 2017/6/19.
1617
*/
1718
@RestController
@@ -31,13 +32,13 @@ public class AccountController {
3132
@RequestMapping(value = "/setAccount/{type}", method = RequestMethod.PUT)
3233
@ResponseBody
3334
public SimpleResult setAccount(@RequestHeader(value = "JB-AppId") String appId,
34-
@PathVariable int type,
35-
@Valid @RequestBody Account account) {
35+
@PathVariable int type,
36+
@Valid @RequestBody Account account) {
3637
AccountType accountType = AccountType.getType(type);
3738
if (accountType == null) {
3839
throw new SimpleError(SimpleCode.APP_ACCOUNT_ERROR);
3940
}
40-
accountService.setAccount(appId,accountType, account);
41+
accountService.setAccount(appId, accountType, account);
4142
return SimpleResult.success();
4243
}
4344
}

src/main/java/com/javabaas/server/admin/service/AccountService.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@ public class AccountService {
1717
@Autowired
1818
private AppService appService;
1919

20-
21-
2220
/**
2321
* 查询账号信息
2422
*
@@ -32,11 +30,11 @@ public Account getAccount(String appId, AccountType accountType) {
3230
/**
3331
* 设置账号信息
3432
*
35-
* @param appId appId
33+
* @param appId appId
3634
* @param accountType type
37-
* @param account account
35+
* @param account account
3836
*/
39-
public void setAccount(String appId,AccountType accountType, Account account) {
37+
public void setAccount(String appId, AccountType accountType, Account account) {
4038
appService.setAccount(appId, accountType, account);
4139
log.info("App:" + appId + " " + accountType.getValue() + "账号设置成功");
4240
}

src/main/java/com/javabaas/server/admin/service/AppService.java

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,11 @@
88
import com.javabaas.server.common.entity.SimpleCode;
99
import com.javabaas.server.common.entity.SimpleError;
1010
import com.javabaas.server.common.util.JSONUtil;
11+
import com.javabaas.server.config.service.AppConfigService;
1112
import com.javabaas.server.file.service.FileService;
1213
import com.javabaas.server.object.dao.impl.mongo.MongoDao;
1314
import com.javabaas.server.push.service.PushService;
15+
import com.javabaas.server.sms.service.SmsService;
1416
import com.javabaas.server.user.service.InstallationService;
1517
import com.javabaas.server.user.service.UserService;
1618
import org.apache.commons.logging.Log;
@@ -43,6 +45,8 @@ public class AppService {
4345
@Autowired
4446
private FieldService fieldService;
4547
@Autowired
48+
private AppConfigService appConfigService;
49+
@Autowired
4650
private MongoDao dao;
4751
@Autowired
4852
private JSONUtil jsonUtil;
@@ -86,6 +90,8 @@ public void deleteByAppName(String name) {
8690
public void delete(String id) {
8791
//删除包含的类
8892
clazzService.deleteAll(id);
93+
//删除配置
94+
appConfigService.deleteConfig(id);
8995
//删除自己
9096
appRepository.delete(id);
9197
//删除缓存
@@ -182,9 +188,39 @@ private void init(String appId) {
182188
initFileClass(appId);
183189
//初始化推送日志类
184190
initPushLogClass(appId);
191+
//初始化短信日志类
192+
initSmsLogClass(appId);
185193
log.info("App:" + appId + " 应用初始化成功.");
186194
}
187195

196+
private void initSmsLogClass(String appId) {
197+
Clazz smsLogClazz = new Clazz();
198+
smsLogClazz.setName(SmsService.SMS_LOG_CLASS_NAME);
199+
smsLogClazz.setInternal(true);
200+
clazzService.insert(appId, smsLogClazz, false);
201+
//手机号
202+
Field phoneField = new Field(FieldType.STRING, "phone");
203+
phoneField.setInternal(true);
204+
fieldService.insert(appId, SmsService.SMS_LOG_CLASS_NAME, phoneField);
205+
//短信签名
206+
Field signName = new Field(FieldType.STRING, "signName");
207+
signName.setInternal(true);
208+
fieldService.insert(appId, SmsService.SMS_LOG_CLASS_NAME, signName);
209+
//模版编号
210+
Field templateId = new Field(FieldType.STRING, "templateId");
211+
templateId.setInternal(true);
212+
fieldService.insert(appId, SmsService.SMS_LOG_CLASS_NAME, templateId);
213+
//发送参数
214+
Field params = new Field(FieldType.OBJECT, "params");
215+
templateId.setInternal(true);
216+
fieldService.insert(appId, SmsService.SMS_LOG_CLASS_NAME, params);
217+
//发送状态
218+
Field state = new Field(FieldType.NUMBER, "state");
219+
state.setInternal(true);
220+
fieldService.insert(appId, SmsService.SMS_LOG_CLASS_NAME, state);
221+
log.info("App:" + appId + " 短信日志类初始化成功.");
222+
}
223+
188224
private void initPushLogClass(String appId) {
189225
Clazz pushLogClazz = new Clazz();
190226
pushLogClazz.setName(PushService.PUSH_LOG_CLASS_NAME);

src/main/java/com/javabaas/server/admin/service/ClazzService.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@ public boolean exist(String appId, String name) {
7272
* @param appId 应用id
7373
* @param clazz 类
7474
* @param valid 是否检查名称
75-
* @throws SimpleError
7675
*/
7776
public void insert(String appId, Clazz clazz, boolean valid) {
7877
String name = clazz.getName();
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.javabaas.server.common.controller;
2+
3+
import com.javabaas.server.common.entity.SimpleCode;
4+
import com.javabaas.server.common.entity.SimpleResult;
5+
import org.springframework.boot.autoconfigure.web.ErrorController;
6+
import org.springframework.web.bind.annotation.RequestMapping;
7+
import org.springframework.web.bind.annotation.ResponseBody;
8+
import org.springframework.web.bind.annotation.RestController;
9+
10+
/**
11+
* 无效请求地址
12+
* Created by Codi on 2017/7/3.
13+
*/
14+
@RestController
15+
public class EmptyController implements ErrorController {
16+
17+
private final static String ERROR_PATH = "/error";
18+
19+
@Override
20+
public String getErrorPath() {
21+
return ERROR_PATH;
22+
}
23+
24+
@RequestMapping(value = ERROR_PATH)
25+
@ResponseBody
26+
public SimpleResult error() {
27+
return new SimpleResult(SimpleCode.NOT_FOUND);
28+
}
29+
30+
31+
}

src/main/java/com/javabaas/server/common/controller/ErrorController.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.javabaas.server.common.controller;
22

3-
import com.fasterxml.jackson.core.JsonParseException;
3+
import com.fasterxml.jackson.core.JsonProcessingException;
44
import com.javabaas.server.common.entity.SimpleCode;
55
import com.javabaas.server.common.entity.SimpleError;
66
import com.javabaas.server.common.entity.SimpleResult;
@@ -22,6 +22,7 @@
2222
import java.util.List;
2323

2424
/**
25+
* 全局错误处理控制器
2526
* Created by Staryet on 15/6/17.
2627
*/
2728
@ControllerAdvice
@@ -40,7 +41,11 @@ public SimpleResult errorResponse(SimpleError e) {
4041
@ResponseBody
4142
@ResponseStatus(HttpStatus.BAD_REQUEST)
4243
public SimpleResult errorResponse(HttpMessageNotReadableException t) {
43-
return new SimpleResult(SimpleCode.REQUEST_PARAM_ERROR);
44+
if (t.getCause() instanceof JsonProcessingException) {
45+
return new SimpleResult(SimpleCode.REQUEST_JSON_ERROR);
46+
} else {
47+
return new SimpleResult(SimpleCode.REQUEST_PARAM_ERROR);
48+
}
4449
}
4550

4651
@ExceptionHandler(MissingServletRequestParameterException.class)
@@ -80,12 +85,6 @@ public SimpleResult errorResponse(HttpMediaTypeNotSupportedException t) {
8085
return new SimpleResult(SimpleCode.REQUEST_CONTENT_TYPE_ERROR);
8186
}
8287

83-
@ExceptionHandler(JsonParseException.class)
84-
@ResponseBody
85-
@ResponseStatus(HttpStatus.BAD_REQUEST)
86-
public SimpleResult errorResponse(JsonParseException t) {
87-
return new SimpleResult(SimpleCode.REQUEST_JSON_ERROR);
88-
}
8988

9089
@ExceptionHandler(ClientAbortException.class)
9190
public void errorResponse(ClientAbortException t) {

src/main/java/com/javabaas/server/common/entity/SimpleCode.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
package com.javabaas.server.common.entity;
22

33
/**
4+
* 返回码
45
* Created by Staryet on 15/8/24.
56
*/
67
public enum SimpleCode {
7-
8+
SUCCESS(0, "成功"),
9+
NOT_FOUND(404, "无效地址"),
810
INTERNAL_ERROR(500, "服务器内部错误"),
911
INTERNAL_JSON_ERROR(501, "JSON处理失败"),
1012
REQUEST_PARAM_ERROR(2, "传入参数错误"),
@@ -13,11 +15,12 @@ public enum SimpleCode {
1315
REQUEST_CONTENT_TYPE_ERROR(5, "需要 application/json 请求"),
1416
REQUEST_PLATFORM_ERROR(6, "请求头中JB-Plat信息错误"),
1517
AUTH_LESS(10, "缺少授权信息"),
16-
AUTH_TIME_OUT(11, "授权信息信息失效"),
18+
AUTH_TIME_OUT(11, "授权信息失效"),
1719
AUTH_ERROR(12, "授权信息验证失败"),
1820
AUTH_NEED_ADMIN_SIGN(13, "缺少超级权限"),
1921
AUTH_NEED_MASTER_SIGN(14, "缺少管理权限"),
2022
AUTH_REPLAY_ATTACK(15, "拒绝重放攻击"),
23+
AUTH_APP_ID_LESS(16, "缺少JB-AppId"),
2124
//1xx 管理端相关
2225
CONSOLE_USER_ERROR(101, "用户名密码错误"),
2326
CONSOLE_NOT_LOGIN(102, "未登录"),
@@ -84,7 +87,9 @@ public enum SimpleCode {
8487
PUSH_ERROR(6001, "推送失败"),
8588
//7xxx 短信相关
8689
SMS_RATE_LIMET(7001, "短信发送频率超过限制"),
87-
SMS_SEND_INTERVAL_LIMIT(7002, "禁止连续发送");
90+
SMS_SEND_INTERVAL_LIMIT(7002, "禁止连续发送"),
91+
SMS_HANDLER_NOT_DEFINE(7002, "短信处理器为定义"),
92+
SMS_HANDLER_NOT_FOUND(7003, "短信处理器未找到");
8893

8994
private int code;
9095
private String message;

0 commit comments

Comments
 (0)