Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
jinli gu
Litemall
Commits
324c8da3
Unverified
Commit
324c8da3
authored
Dec 29, 2019
by
linlinjava
Committed by
GitHub
Dec 29, 2019
Browse files
Merge branch 'master' into dev
parents
693cf5cd
4c46da9b
Changes
399
Show whitespace changes
Inline
Side-by-side
Too many changes to show.
To preserve performance only
20 of 399+
files are displayed.
Plain diff
Email patch
litemall-core/src/main/java/org/linlinjava/litemall/core/notify/TencentSmsSender.java
View file @
324c8da3
...
...
@@ -15,6 +15,7 @@ public class TencentSmsSender implements SmsSender {
private
final
Log
logger
=
LogFactory
.
getLog
(
TencentSmsSender
.
class
);
private
SmsSingleSender
sender
;
private
String
sign
;
public
SmsSingleSender
getSender
()
{
return
sender
;
...
...
@@ -35,16 +36,18 @@ public class TencentSmsSender implements SmsSender {
smsResult
.
setResult
(
result
);
return
smsResult
;
}
catch
(
HTTPException
|
IOException
e
)
{
e
.
printStackTrace
(
);
logger
.
error
(
e
.
getMessage
(),
e
);
}
return
null
;
SmsResult
smsResult
=
new
SmsResult
();
smsResult
.
setSuccessful
(
false
);
return
smsResult
;
}
@Override
public
SmsResult
sendWithTemplate
(
String
phone
,
in
t
templateId
,
String
[]
params
)
{
public
SmsResult
sendWithTemplate
(
String
phone
,
Str
in
g
templateId
,
String
[]
params
)
{
try
{
SmsSingleSenderResult
result
=
sender
.
sendWithParam
(
"86"
,
phone
,
templateId
,
params
,
""
,
""
,
""
);
SmsSingleSenderResult
result
=
sender
.
sendWithParam
(
"86"
,
phone
,
Integer
.
parseInt
(
templateId
)
,
params
,
this
.
sign
,
""
,
""
);
logger
.
debug
(
result
);
SmsResult
smsResult
=
new
SmsResult
();
...
...
@@ -52,9 +55,15 @@ public class TencentSmsSender implements SmsSender {
smsResult
.
setResult
(
result
);
return
smsResult
;
}
catch
(
HTTPException
|
IOException
e
)
{
e
.
printStackTrace
();
logger
.
error
(
e
.
getMessage
(),
e
);
}
SmsResult
smsResult
=
new
SmsResult
();
smsResult
.
setSuccessful
(
false
);
return
smsResult
;
}
return
null
;
public
void
setSign
(
String
sign
)
{
this
.
sign
=
sign
;
}
}
litemall-core/src/main/java/org/linlinjava/litemall/core/notify/WxTemplateSender.java
View file @
324c8da3
...
...
@@ -47,7 +47,8 @@ public class WxTemplateSender {
sendMsg
(
touser
,
templatId
,
parms
,
page
,
""
,
""
);
}
private
void
sendMsg
(
String
touser
,
String
templatId
,
String
[]
parms
,
String
page
,
String
color
,
String
emphasisKeyword
)
{
private
void
sendMsg
(
String
touser
,
String
templatId
,
String
[]
parms
,
String
page
,
String
color
,
String
emphasisKeyword
)
{
LitemallUserFormid
userFormid
=
formIdService
.
queryByOpenId
(
touser
);
if
(
userFormid
==
null
)
return
;
...
...
@@ -68,7 +69,7 @@ public class WxTemplateSender {
logger
.
warn
(
"更新数据已失效"
);
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
(
);
logger
.
error
(
e
.
getMessage
(),
e
);
}
}
...
...
litemall-core/src/main/java/org/linlinjava/litemall/core/notify/config/NotifyAutoConfiguration.java
View file @
324c8da3
package
org.linlinjava.litemall.core.notify.config
;
import
com.github.qcloudsms.SmsSingleSender
;
import
org.linlinjava.litemall.core.notify.AliyunSmsSender
;
import
org.linlinjava.litemall.core.notify.NotifyService
;
import
org.linlinjava.litemall.core.notify.TencentSmsSender
;
import
org.linlinjava.litemall.core.notify.WxTemplateSender
;
...
...
@@ -10,6 +11,8 @@ import org.springframework.context.annotation.Configuration;
import
org.springframework.mail.javamail.JavaMailSender
;
import
org.springframework.mail.javamail.JavaMailSenderImpl
;
import
java.util.Properties
;
@Configuration
@EnableConfigurationProperties
(
NotifyProperties
.
class
)
public
class
NotifyAutoConfiguration
{
...
...
@@ -33,7 +36,13 @@ public class NotifyAutoConfiguration {
NotifyProperties
.
Sms
smsConfig
=
properties
.
getSms
();
if
(
smsConfig
.
isEnable
())
{
if
(
smsConfig
.
getActive
().
equals
(
"tencent"
))
{
notifyService
.
setSmsSender
(
tencentSmsSender
());
}
else
if
(
smsConfig
.
getActive
().
equals
(
"aliyun"
))
{
notifyService
.
setSmsSender
(
aliyunSmsSender
());
}
notifyService
.
setSmsTemplate
(
smsConfig
.
getTemplate
());
}
...
...
@@ -52,6 +61,17 @@ public class NotifyAutoConfiguration {
mailSender
.
setHost
(
mailConfig
.
getHost
());
mailSender
.
setUsername
(
mailConfig
.
getUsername
());
mailSender
.
setPassword
(
mailConfig
.
getPassword
());
mailSender
.
setPort
(
mailConfig
.
getPort
());
Properties
properties
=
new
Properties
();
properties
.
put
(
"mail.smtp.auth"
,
true
);
properties
.
put
(
"mail.smtp.timeout"
,
5000
);
properties
.
put
(
"mail.smtp.starttls.enable"
,
true
);
properties
.
put
(
"mail.smtp.socketFactory.fallback"
,
"false"
);
//阿里云 必须加入配置 outlook配置又不需要 视情况而定.发送不成功多数是这里的配置问题
properties
.
put
(
"mail.smtp.socketFactory.class"
,
"javax.net.ssl.SSLSocketFactory"
);
properties
.
put
(
"mail.smtp.socketFactory.port"
,
mailConfig
.
getPort
());
properties
.
put
(
"debug"
,
true
);
mailSender
.
setJavaMailProperties
(
properties
);
return
mailSender
;
}
...
...
@@ -65,7 +85,21 @@ public class NotifyAutoConfiguration {
public
TencentSmsSender
tencentSmsSender
()
{
NotifyProperties
.
Sms
smsConfig
=
properties
.
getSms
();
TencentSmsSender
smsSender
=
new
TencentSmsSender
();
smsSender
.
setSender
(
new
SmsSingleSender
(
smsConfig
.
getAppid
(),
smsConfig
.
getAppkey
()));
NotifyProperties
.
Sms
.
Tencent
tencent
=
smsConfig
.
getTencent
();
smsSender
.
setSender
(
new
SmsSingleSender
(
tencent
.
getAppid
(),
tencent
.
getAppkey
()));
smsSender
.
setSign
(
smsConfig
.
getSign
());
return
smsSender
;
}
@Bean
public
AliyunSmsSender
aliyunSmsSender
()
{
NotifyProperties
.
Sms
smsConfig
=
properties
.
getSms
();
AliyunSmsSender
smsSender
=
new
AliyunSmsSender
();
NotifyProperties
.
Sms
.
Aliyun
aliyun
=
smsConfig
.
getAliyun
();
smsSender
.
setSign
(
smsConfig
.
getSign
());
smsSender
.
setRegionId
(
aliyun
.
getRegionId
());
smsSender
.
setAccessKeyId
(
aliyun
.
getAccessKeyId
());
smsSender
.
setAccessKeySecret
(
aliyun
.
getAccessKeySecret
());
return
smsSender
;
}
}
litemall-core/src/main/java/org/linlinjava/litemall/core/notify/config/NotifyProperties.java
View file @
324c8da3
...
...
@@ -43,7 +43,7 @@ public class NotifyProperties {
private
String
password
;
private
String
sendfrom
;
private
String
sendto
;
private
Integer
port
;
public
boolean
isEnable
()
{
return
enable
;
}
...
...
@@ -91,12 +91,22 @@ public class NotifyProperties {
public
void
setSendto
(
String
sendto
)
{
this
.
sendto
=
sendto
;
}
public
Integer
getPort
()
{
return
port
;
}
public
void
setPort
(
Integer
port
)
{
this
.
port
=
port
;
}
}
public
static
class
Sms
{
private
boolean
enable
;
private
int
appid
;
private
String
appkey
;
private
String
active
;
private
String
sign
;
private
Tencent
tencent
;
private
Aliyun
aliyun
;
private
List
<
Map
<
String
,
String
>>
template
=
new
ArrayList
<>();
public
boolean
isEnable
()
{
...
...
@@ -107,6 +117,50 @@ public class NotifyProperties {
this
.
enable
=
enable
;
}
public
List
<
Map
<
String
,
String
>>
getTemplate
()
{
return
template
;
}
public
void
setTemplate
(
List
<
Map
<
String
,
String
>>
template
)
{
this
.
template
=
template
;
}
public
String
getActive
()
{
return
active
;
}
public
void
setActive
(
String
active
)
{
this
.
active
=
active
;
}
public
String
getSign
()
{
return
sign
;
}
public
void
setSign
(
String
sign
)
{
this
.
sign
=
sign
;
}
public
Tencent
getTencent
()
{
return
tencent
;
}
public
void
setTencent
(
Tencent
tencent
)
{
this
.
tencent
=
tencent
;
}
public
Aliyun
getAliyun
()
{
return
aliyun
;
}
public
void
setAliyun
(
Aliyun
aliyun
)
{
this
.
aliyun
=
aliyun
;
}
public
static
class
Tencent
{
private
int
appid
;
private
String
appkey
;
public
int
getAppid
()
{
return
appid
;
}
...
...
@@ -122,13 +176,36 @@ public class NotifyProperties {
public
void
setAppkey
(
String
appkey
)
{
this
.
appkey
=
appkey
;
}
}
public
List
<
Map
<
String
,
String
>>
getTemplate
()
{
return
template
;
public
static
class
Aliyun
{
private
String
regionId
;
private
String
accessKeyId
;
private
String
accessKeySecret
;
public
String
getRegionId
()
{
return
regionId
;
}
public
void
setTemplate
(
List
<
Map
<
String
,
String
>>
template
)
{
this
.
template
=
template
;
public
void
setRegionId
(
String
regionId
)
{
this
.
regionId
=
regionId
;
}
public
String
getAccessKeyId
()
{
return
accessKeyId
;
}
public
void
setAccessKeyId
(
String
accessKeyId
)
{
this
.
accessKeyId
=
accessKeyId
;
}
public
String
getAccessKeySecret
()
{
return
accessKeySecret
;
}
public
void
setAccessKeySecret
(
String
accessKeySecret
)
{
this
.
accessKeySecret
=
accessKeySecret
;
}
}
}
...
...
litemall-core/src/main/java/org/linlinjava/litemall/core/qcode/QCodeService.java
View file @
324c8da3
...
...
@@ -2,6 +2,8 @@ package org.linlinjava.litemall.core.qcode;
import
cn.binarywang.wx.miniapp.api.WxMaService
;
import
me.chanjar.weixin.common.error.WxErrorException
;
import
org.apache.commons.logging.Log
;
import
org.apache.commons.logging.LogFactory
;
import
org.linlinjava.litemall.core.storage.StorageService
;
import
org.linlinjava.litemall.core.system.SystemConfig
;
import
org.linlinjava.litemall.db.domain.LitemallGroupon
;
...
...
@@ -18,6 +20,7 @@ import java.net.URL;
@Service
public
class
QCodeService
{
private
final
Log
logger
=
LogFactory
.
getLog
(
QCodeService
.
class
);
@Autowired
WxMaService
wxMaService
;
...
...
@@ -28,21 +31,23 @@ public class QCodeService {
public
String
createGrouponShareImage
(
String
goodName
,
String
goodPicUrl
,
LitemallGroupon
groupon
)
{
try
{
//创建该商品的二维码
File
file
=
wxMaService
.
getQrcodeService
().
createWxaCodeUnlimit
(
"groupon,"
+
groupon
.
getId
(),
"pages/index/index"
);
File
file
=
wxMaService
.
getQrcodeService
().
createWxaCodeUnlimit
(
"groupon,"
+
groupon
.
getId
(),
"pages"
+
"/index/index"
);
FileInputStream
inputStream
=
new
FileInputStream
(
file
);
//将商品图片,商品名字,商城名字画到模版图中
byte
[]
imageData
=
drawPicture
(
inputStream
,
goodPicUrl
,
goodName
);
ByteArrayInputStream
inputStream2
=
new
ByteArrayInputStream
(
imageData
);
//存储分享图
LitemallStorage
storageInfo
=
storageService
.
store
(
inputStream2
,
imageData
.
length
,
"image/jpeg"
,
getKeyName
(
groupon
.
getId
().
toString
()));
LitemallStorage
storageInfo
=
storageService
.
store
(
inputStream2
,
imageData
.
length
,
"image/jpeg"
,
getKeyName
(
groupon
.
getId
().
toString
()));
return
storageInfo
.
getUrl
();
}
catch
(
WxErrorException
e
)
{
e
.
printStackTrace
(
);
logger
.
error
(
e
.
getMessage
(),
e
);
}
catch
(
FileNotFoundException
e
)
{
e
.
printStackTrace
(
);
logger
.
error
(
e
.
getMessage
(),
e
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
(
);
logger
.
error
(
e
.
getMessage
(),
e
);
}
return
""
;
...
...
@@ -68,15 +73,16 @@ public class QCodeService {
byte
[]
imageData
=
drawPicture
(
inputStream
,
goodPicUrl
,
goodName
);
ByteArrayInputStream
inputStream2
=
new
ByteArrayInputStream
(
imageData
);
//存储分享图
LitemallStorage
litemallStorage
=
storageService
.
store
(
inputStream2
,
imageData
.
length
,
"image/jpeg"
,
getKeyName
(
goodId
));
LitemallStorage
litemallStorage
=
storageService
.
store
(
inputStream2
,
imageData
.
length
,
"image/jpeg"
,
getKeyName
(
goodId
));
return
litemallStorage
.
getUrl
();
}
catch
(
WxErrorException
e
)
{
e
.
printStackTrace
(
);
logger
.
error
(
e
.
getMessage
(),
e
);
}
catch
(
FileNotFoundException
e
)
{
e
.
printStackTrace
(
);
logger
.
error
(
e
.
getMessage
(),
e
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
(
);
logger
.
error
(
e
.
getMessage
(),
e
);
}
return
""
;
...
...
@@ -126,7 +132,7 @@ public class QCodeService {
drawTextInImg
(
baseImage
,
goodName
,
65
,
867
);
//写上商城名称
// drawTextInImgCenter(baseImage, shopName, 98);
// drawTextInImgCenter(baseImage, shopName, 98);
//转jpg
...
...
@@ -173,7 +179,8 @@ public class QCodeService {
g2D
.
dispose
();
}
private
void
drawImgInImg
(
BufferedImage
baseImage
,
BufferedImage
imageToWrite
,
int
x
,
int
y
,
int
width
,
int
heigth
)
{
private
void
drawImgInImg
(
BufferedImage
baseImage
,
BufferedImage
imageToWrite
,
int
x
,
int
y
,
int
width
,
int
heigth
)
{
Graphics2D
g2D
=
(
Graphics2D
)
baseImage
.
getGraphics
();
g2D
.
drawImage
(
imageToWrite
,
x
,
y
,
width
,
heigth
,
null
);
g2D
.
dispose
();
...
...
litemall-core/src/main/java/org/linlinjava/litemall/core/storage/AliyunStorage.java
View file @
324c8da3
...
...
@@ -4,6 +4,8 @@ import com.aliyun.oss.OSSClient;
import
com.aliyun.oss.model.ObjectMetadata
;
import
com.aliyun.oss.model.PutObjectRequest
;
import
com.aliyun.oss.model.PutObjectResult
;
import
org.apache.commons.logging.Log
;
import
org.apache.commons.logging.LogFactory
;
import
org.springframework.core.io.Resource
;
import
org.springframework.core.io.UrlResource
;
...
...
@@ -20,6 +22,8 @@ import java.util.stream.Stream;
*/
public
class
AliyunStorage
implements
Storage
{
private
final
Log
logger
=
LogFactory
.
getLog
(
AliyunStorage
.
class
);
private
String
endpoint
;
private
String
accessKeyId
;
private
String
accessKeySecret
;
...
...
@@ -84,7 +88,7 @@ public class AliyunStorage implements Storage {
PutObjectRequest
putObjectRequest
=
new
PutObjectRequest
(
bucketName
,
keyName
,
inputStream
,
objectMetadata
);
PutObjectResult
putObjectResult
=
getOSSClient
().
putObject
(
putObjectRequest
);
}
catch
(
Exception
ex
)
{
ex
.
printStackTrace
(
);
logger
.
error
(
ex
.
getMessage
(),
ex
);
}
}
...
...
@@ -110,7 +114,7 @@ public class AliyunStorage implements Storage {
return
null
;
}
}
catch
(
MalformedURLException
e
)
{
e
.
printStackTrace
(
);
logger
.
error
(
e
.
getMessage
(),
e
);
return
null
;
}
}
...
...
@@ -120,7 +124,7 @@ public class AliyunStorage implements Storage {
try
{
getOSSClient
().
deleteObject
(
bucketName
,
keyName
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
(
);
logger
.
error
(
e
.
getMessage
(),
e
);
}
}
...
...
litemall-core/src/main/java/org/linlinjava/litemall/core/storage/LocalStorage.java
View file @
324c8da3
package
org.linlinjava.litemall.core.storage
;
import
org.apache.commons.logging.Log
;
import
org.apache.commons.logging.LogFactory
;
import
org.springframework.core.io.Resource
;
import
org.springframework.core.io.UrlResource
;
...
...
@@ -18,6 +20,9 @@ import java.util.stream.Stream;
*/
public
class
LocalStorage
implements
Storage
{
private
final
Log
logger
=
LogFactory
.
getLog
(
LocalStorage
.
class
);
private
String
storagePath
;
private
String
address
;
...
...
@@ -34,7 +39,7 @@ public class LocalStorage implements Storage {
try
{
Files
.
createDirectories
(
rootLocation
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
(
);
logger
.
error
(
e
.
getMessage
(),
e
);
}
}
...
...
@@ -83,7 +88,7 @@ public class LocalStorage implements Storage {
return
null
;
}
}
catch
(
MalformedURLException
e
)
{
e
.
printStackTrace
(
);
logger
.
error
(
e
.
getMessage
(),
e
);
return
null
;
}
}
...
...
@@ -94,13 +99,13 @@ public class LocalStorage implements Storage {
try
{
Files
.
delete
(
file
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
(
);
logger
.
error
(
e
.
getMessage
(),
e
);
}
}
@Override
public
String
generateUrl
(
String
keyName
)
{
String
url
=
address
+
keyName
;
return
url
;
return
address
+
keyName
;
}
}
\ No newline at end of file
litemall-core/src/main/java/org/linlinjava/litemall/core/storage/QiniuStorage.java
View file @
324c8da3
package
org.linlinjava.litemall.core.storage
;
import
com.qiniu.common.QiniuException
;
import
com.qiniu.http.Response
;
import
com.qiniu.storage.BucketManager
;
import
com.qiniu.storage.Configuration
;
import
com.qiniu.storage.UploadManager
;
import
com.qiniu.util.Auth
;
import
org.apache.commons.logging.Log
;
import
org.apache.commons.logging.LogFactory
;
import
org.springframework.core.io.Resource
;
import
org.springframework.core.io.UrlResource
;
...
...
@@ -17,6 +18,8 @@ import java.util.stream.Stream;
public
class
QiniuStorage
implements
Storage
{
private
final
Log
logger
=
LogFactory
.
getLog
(
QiniuStorage
.
class
);
private
String
endpoint
;
private
String
accessKey
;
private
String
secretKey
;
...
...
@@ -71,9 +74,9 @@ public class QiniuStorage implements Storage {
try
{
String
upToken
=
auth
.
uploadToken
(
bucketName
);
Response
response
=
uploadManager
.
put
(
inputStream
,
keyName
,
upToken
,
null
,
contentType
);
uploadManager
.
put
(
inputStream
,
keyName
,
upToken
,
null
,
contentType
);
}
catch
(
QiniuException
ex
)
{
ex
.
printStackTrace
(
);
logger
.
error
(
ex
.
getMessage
(),
ex
);
}
}
...
...
@@ -94,13 +97,11 @@ public class QiniuStorage implements Storage {
Resource
resource
=
new
UrlResource
(
url
);
if
(
resource
.
exists
()
||
resource
.
isReadable
())
{
return
resource
;
}
else
{
return
null
;
}
}
catch
(
MalformedURLException
e
)
{
e
.
printStackTrace
();
return
null
;
logger
.
error
(
e
.
getMessage
(),
e
);
}
return
null
;
}
@Override
...
...
@@ -111,11 +112,10 @@ public class QiniuStorage implements Storage {
}
bucketManager
=
new
BucketManager
(
auth
,
new
Configuration
());
}
try
{
bucketManager
.
delete
(
bucketName
,
keyName
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
(
);
logger
.
error
(
e
.
getMessage
(),
e
);
}
}
...
...
litemall-core/src/main/java/org/linlinjava/litemall/core/storage/TencentStorage.java
View file @
324c8da3
...
...
@@ -6,8 +6,9 @@ import com.qcloud.cos.auth.BasicCOSCredentials;
import
com.qcloud.cos.auth.COSCredentials
;
import
com.qcloud.cos.model.ObjectMetadata
;
import
com.qcloud.cos.model.PutObjectRequest
;
import
com.qcloud.cos.model.PutObjectResult
;
import
com.qcloud.cos.region.Region
;
import
org.apache.commons.logging.Log
;
import
org.apache.commons.logging.LogFactory
;
import
org.springframework.core.io.Resource
;
import
org.springframework.core.io.UrlResource
;
...
...
@@ -22,6 +23,8 @@ import java.util.stream.Stream;
*/
public
class
TencentStorage
implements
Storage
{
private
final
Log
logger
=
LogFactory
.
getLog
(
TencentStorage
.
class
);
private
String
secretId
;
private
String
secretKey
;
private
String
region
;
...
...
@@ -74,7 +77,7 @@ public class TencentStorage implements Storage {
}
private
String
getBaseUrl
()
{
return
"https://"
+
bucketName
+
".cos
-website
."
+
region
+
".myqcloud.com/"
;
return
"https://"
+
bucketName
+
".cos."
+
region
+
".myqcloud.com/"
;
}
@Override
...
...
@@ -84,11 +87,12 @@ public class TencentStorage implements Storage {
ObjectMetadata
objectMetadata
=
new
ObjectMetadata
();
objectMetadata
.
setContentLength
(
contentLength
);
objectMetadata
.
setContentType
(
contentType
);
// 对象键(Key)是对象在存储桶中的唯一标识。例如,在对象的访问域名 `bucket1-1250000000.cos.ap-guangzhou.myqcloud.com/doc1/pic1.jpg` 中,对象键为 doc1/pic1.jpg, 详情参考 [对象键](https://cloud.tencent.com/document/product/436/13324)
// 对象键(Key)是对象在存储桶中的唯一标识。例如,在对象的访问域名 `bucket1-1250000000.cos.ap-guangzhou.myqcloud.com/doc1/pic1.jpg`
// 中,对象键为 doc1/pic1.jpg, 详情参考 [对象键](https://cloud.tencent.com/document/product/436/13324)
PutObjectRequest
putObjectRequest
=
new
PutObjectRequest
(
bucketName
,
keyName
,
inputStream
,
objectMetadata
);
PutObjectResult
putObjectResult
=
getCOSClient
().
putObject
(
putObjectRequest
);
getCOSClient
().
putObject
(
putObjectRequest
);
}
catch
(
Exception
ex
)
{
ex
.
printStackTrace
(
);
logger
.
error
(
ex
.
getMessage
(),
ex
);
}
}
...
...
@@ -109,13 +113,11 @@ public class TencentStorage implements Storage {
Resource
resource
=
new
UrlResource
(
url
);
if
(
resource
.
exists
()
||
resource
.
isReadable
())
{
return
resource
;
}
else
{
return
null
;
}
}
catch
(
MalformedURLException
e
)
{
e
.
printStackTrace
();
return
null
;
logger
.
error
(
e
.
getMessage
(),
e
);
}
return
null
;
}
@Override
...
...
@@ -123,7 +125,7 @@ public class TencentStorage implements Storage {
try
{
getCOSClient
().
deleteObject
(
bucketName
,
keyName
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
(
);
logger
.
error
(
e
.
getMessage
(),
e
);
}
}
...
...
litemall-core/src/main/java/org/linlinjava/litemall/core/system/SystemConfig.java
View file @
324c8da3
...
...
@@ -28,6 +28,8 @@ public class SystemConfig {
public
final
static
String
LITEMALL_MALL_ADDRESS
=
"litemall_mall_address"
;
public
final
static
String
LITEMALL_MALL_PHONE
=
"litemall_mall_phone"
;
public
final
static
String
LITEMALL_MALL_QQ
=
"litemall_mall_qq"
;
public
final
static
String
LITEMALL_MALL_LONGITUDE
=
"litemall_mall_longitude"
;
public
final
static
String
LITEMALL_MALL_Latitude
=
"litemall_mall_latitude"
;
//所有的配置均保存在该 HashMap 中
private
static
Map
<
String
,
String
>
SYSTEM_CONFIGS
=
new
HashMap
<>();
...
...
@@ -112,6 +114,14 @@ public class SystemConfig {
return
getConfig
(
LITEMALL_MALL_QQ
);
}
public
static
String
getMallLongitude
()
{
return
getConfig
(
LITEMALL_MALL_LONGITUDE
);
}
public
static
String
getMallLatitude
()
{
return
getConfig
(
LITEMALL_MALL_Latitude
);
}
public
static
void
setConfigs
(
Map
<
String
,
String
>
configs
)
{
SYSTEM_CONFIGS
=
configs
;
}
...
...
litemall-core/src/main/java/org/linlinjava/litemall/core/system/SystemInistService.java
View file @
324c8da3
...
...
@@ -31,6 +31,7 @@ class SystemInistService {
private
final
static
Map
<
String
,
String
>
DEFAULT_CONFIGS
=
new
HashMap
<>();
static
{
// 小程序相关配置默认值
DEFAULT_CONFIGS
.
put
(
SystemConfig
.
LITEMALL_WX_INDEX_NEW
,
"6"
);
...
...
@@ -47,11 +48,13 @@ class SystemInistService {
DEFAULT_CONFIGS
.
put
(
SystemConfig
.
LITEMALL_ORDER_UNPAID
,
"30"
);
DEFAULT_CONFIGS
.
put
(
SystemConfig
.
LITEMALL_ORDER_UNCONFIRM
,
"7"
);
DEFAULT_CONFIGS
.
put
(
SystemConfig
.
LITEMALL_ORDER_COMMENT
,
"7"
);
//
订单
相关配置默认值
//
商城
相关配置默认值
DEFAULT_CONFIGS
.
put
(
SystemConfig
.
LITEMALL_MALL_NAME
,
"litemall"
);
DEFAULT_CONFIGS
.
put
(
SystemConfig
.
LITEMALL_MALL_ADDRESS
,
"上海"
);
DEFAULT_CONFIGS
.
put
(
SystemConfig
.
LITEMALL_MALL_Latitude
,
"31.201900"
);
DEFAULT_CONFIGS
.
put
(
SystemConfig
.
LITEMALL_MALL_LONGITUDE
,
"121.587839"
);
DEFAULT_CONFIGS
.
put
(
SystemConfig
.
LITEMALL_MALL_PHONE
,
"021-xxxx-xxxx"
);
DEFAULT_CONFIGS
.
put
(
SystemConfig
.
LITEMALL_MALL_QQ
,
"7
38696120
"
);
DEFAULT_CONFIGS
.
put
(
SystemConfig
.
LITEMALL_MALL_QQ
,
"7
05144434
"
);
}
@Autowired
...
...
@@ -63,7 +66,7 @@ class SystemInistService {
// 2. 分析DEFAULT_CONFIGS
for
(
Map
.
Entry
<
String
,
String
>
entry
:
DEFAULT_CONFIGS
.
entrySet
())
{
if
(
configs
.
containsKey
(
entry
.
getKey
())){
if
(
configs
.
containsKey
(
entry
.
getKey
()))
{
continue
;
}
...
...
@@ -109,7 +112,9 @@ class SystemInistService {
infos
.
put
(
SystemInfoPrinter
.
CREATE_PART_COPPER
+
3
,
"系统设置"
);
infos
.
put
(
"自动创建朋友圈分享图"
,
Boolean
.
toString
(
SystemConfig
.
isAutoCreateShareImage
()));
infos
.
put
(
"商场名称"
,
SystemConfig
.
getMallName
());
infos
.
put
(
"首页显示记录数:NEW,HOT,BRAND,TOPIC,CatlogList,CatlogMore"
,
SystemConfig
.
getNewLimit
()
+
","
+
SystemConfig
.
getHotLimit
()
+
","
+
SystemConfig
.
getBrandLimit
()
+
","
+
SystemConfig
.
getTopicLimit
()
+
","
+
SystemConfig
.
getCatlogListLimit
()
+
","
+
SystemConfig
.
getCatlogMoreLimit
());
infos
.
put
(
"首页显示记录数:NEW,HOT,BRAND,TOPIC,CatlogList,CatlogMore"
,
SystemConfig
.
getNewLimit
()
+
","
+
SystemConfig
.
getHotLimit
()
+
","
+
SystemConfig
.
getBrandLimit
()
+
","
+
SystemConfig
.
getTopicLimit
()
+
","
+
SystemConfig
.
getCatlogListLimit
()
+
","
+
SystemConfig
.
getCatlogMoreLimit
());
return
infos
;
}
...
...
litemall-core/src/main/java/org/linlinjava/litemall/core/task/Task.java
0 → 100644
View file @
324c8da3
package
org.linlinjava.litemall.core.task
;
import
java.util.concurrent.Delayed
;
import
java.util.concurrent.TimeUnit
;
public
abstract
class
Task
implements
Delayed
,
Runnable
{
private
String
id
=
""
;
private
long
start
=
0
;
public
Task
(
String
id
,
long
delayInMilliseconds
){
this
.
id
=
id
;
this
.
start
=
System
.
currentTimeMillis
()
+
delayInMilliseconds
;
}
public
String
getId
()
{
return
id
;
}
@Override
public
long
getDelay
(
TimeUnit
unit
)
{
long
diff
=
this
.
start
-
System
.
currentTimeMillis
();
return
unit
.
convert
(
diff
,
TimeUnit
.
MILLISECONDS
);
}
@Override
public
int
compareTo
(
Delayed
o
)
{
return
(
int
)(
this
.
getDelay
(
TimeUnit
.
MILLISECONDS
)
-
o
.
getDelay
(
TimeUnit
.
MILLISECONDS
));
}
@Override
public
boolean
equals
(
Object
o
)
{
if
(
this
==
o
)
return
true
;
if
(
o
==
null
)
return
false
;
if
(!(
o
instanceof
Task
))
{
return
false
;
}
Task
t
=
(
Task
)
o
;
return
this
.
id
.
equals
(
t
.
getId
());
}
@Override
public
int
hashCode
()
{
return
this
.
id
.
hashCode
();
}
}
litemall-core/src/main/java/org/linlinjava/litemall/core/task/TaskService.java
0 → 100644
View file @
324c8da3
package
org.linlinjava.litemall.core.task
;
import
org.springframework.stereotype.Component
;
import
javax.annotation.PostConstruct
;
import
java.util.concurrent.DelayQueue
;
import
java.util.concurrent.Executors
;
@Component
public
class
TaskService
{
private
TaskService
taskService
;
private
DelayQueue
<
Task
>
delayQueue
=
new
DelayQueue
<
Task
>();
@PostConstruct
private
void
init
()
{
taskService
=
this
;
Executors
.
newSingleThreadExecutor
().
execute
(
new
Runnable
()
{
@Override
public
void
run
()
{
while
(
true
)
{
try
{
Task
task
=
delayQueue
.
take
();
task
.
run
();
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
}
});
}
public
void
addTask
(
Task
task
){
if
(
delayQueue
.
contains
(
task
)){
return
;
}
delayQueue
.
add
(
task
);
}
public
void
removeTask
(
Task
task
){
delayQueue
.
remove
(
task
);
}
}
litemall-core/src/main/java/org/linlinjava/litemall/core/util/BeanUtil.java
0 → 100644
View file @
324c8da3
package
org.linlinjava.litemall.core.util
;
import
org.springframework.beans.BeansException
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.context.ApplicationContextAware
;
import
org.springframework.stereotype.Component
;
@Component
public
class
BeanUtil
implements
ApplicationContextAware
{
protected
static
ApplicationContext
context
;
@Override
public
void
setApplicationContext
(
ApplicationContext
applicationContext
)
throws
BeansException
{
context
=
applicationContext
;
}
public
static
Object
getBean
(
String
name
)
{
return
context
.
getBean
(
name
);
}
public
static
<
T
>
T
getBean
(
Class
<
T
>
c
){
return
context
.
getBean
(
c
);
}
}
litemall-core/src/main/java/org/linlinjava/litemall/core/util/HttpUtil.java
View file @
324c8da3
package
org.linlinjava.litemall.core.util
;
import
org.apache.commons.logging.Log
;
import
org.apache.commons.logging.LogFactory
;
import
java.io.BufferedReader
;
import
java.io.IOException
;
import
java.io.InputStreamReader
;
...
...
@@ -14,6 +17,9 @@ import java.util.Map;
* @return 远程资源的响应结果
*/
public
class
HttpUtil
{
private
static
final
Log
logger
=
LogFactory
.
getLog
(
HttpUtil
.
class
);
/**
* 向指定 URL 发送POST方法的请求
*
...
...
@@ -53,9 +59,9 @@ public class HttpUtil {
param
.
append
(
entry
.
getKey
());
param
.
append
(
"="
);
param
.
append
(
entry
.
getValue
());
//System.out.println(entry.getKey()+":"+entry.getValue());
}
//System.out.println("param:"+param.toString());
out
.
write
(
param
.
toString
());
}
// flush输出流的缓冲
...
...
@@ -68,7 +74,7 @@ public class HttpUtil {
result
.
append
(
line
);
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
(
);
logger
.
error
(
e
.
getMessage
(),
e
);
}
//使用finally块来关闭输出流、输入流
finally
{
...
...
@@ -80,7 +86,7 @@ public class HttpUtil {
in
.
close
();
}
}
catch
(
IOException
ex
)
{
ex
.
printStackTrace
(
);
logger
.
error
(
ex
.
getMessage
(),
ex
);
}
}
return
result
.
toString
();
...
...
litemall-core/src/main/java/org/linlinjava/litemall/core/util/IpUtil.java
View file @
324c8da3
package
org.linlinjava.litemall.core.util
;
import
org.apache.commons.logging.Log
;
import
org.apache.commons.logging.LogFactory
;
import
javax.servlet.http.HttpServletRequest
;
import
java.net.InetAddress
;
import
java.net.UnknownHostException
;
...
...
@@ -9,8 +12,10 @@ import java.net.UnknownHostException;
*/
public
class
IpUtil
{
private
static
final
Log
logger
=
LogFactory
.
getLog
(
IpUtil
.
class
);
public
static
String
getIpAddr
(
HttpServletRequest
request
)
{
String
ipAddress
=
null
;
String
ipAddress
;
try
{
ipAddress
=
request
.
getHeader
(
"x-forwarded-for"
);
if
(
ipAddress
==
null
||
ipAddress
.
length
()
==
0
||
"unknown"
.
equalsIgnoreCase
(
ipAddress
))
{
...
...
@@ -27,7 +32,7 @@ public class IpUtil {
try
{
inet
=
InetAddress
.
getLocalHost
();
}
catch
(
UnknownHostException
e
)
{
e
.
printStackTrace
(
);
logger
.
error
(
e
.
getMessage
(),
e
);
}
ipAddress
=
inet
.
getHostAddress
();
}
...
...
@@ -42,7 +47,6 @@ public class IpUtil {
}
catch
(
Exception
e
)
{
ipAddress
=
""
;
}
// ipAddress = this.getRequest().getRemoteAddr();
return
ipAddress
;
}
...
...
litemall-core/src/main/java/org/linlinjava/litemall/core/util/JacksonUtil.java
View file @
324c8da3
package
org.linlinjava.litemall.core.util
;
import
com.fasterxml.jackson.core.JsonProcessingException
;
import
com.fasterxml.jackson.core.type.TypeReference
;
import
com.fasterxml.jackson.databind.JsonNode
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
org.apache.commons.logging.Log
;
import
org.apache.commons.logging.LogFactory
;
import
java.io.IOException
;
import
java.util.List
;
import
java.util.Map
;
public
class
JacksonUtil
{
private
static
final
Log
logger
=
LogFactory
.
getLog
(
JacksonUtil
.
class
);
public
static
String
parseString
(
String
body
,
String
field
)
{
ObjectMapper
mapper
=
new
ObjectMapper
();
JsonNode
node
=
null
;
JsonNode
node
;
try
{
node
=
mapper
.
readTree
(
body
);
JsonNode
leaf
=
node
.
get
(
field
);
if
(
leaf
!=
null
)
return
leaf
.
asText
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
(
);
logger
.
error
(
e
.
getMessage
(),
e
);
}
return
null
;
}
...
...
@@ -26,7 +32,7 @@ public class JacksonUtil {
public
static
List
<
String
>
parseStringList
(
String
body
,
String
field
)
{
ObjectMapper
mapper
=
new
ObjectMapper
();
JsonNode
node
=
null
;
JsonNode
node
;
try
{
node
=
mapper
.
readTree
(
body
);
JsonNode
leaf
=
node
.
get
(
field
);
...
...
@@ -35,28 +41,28 @@ public class JacksonUtil {
return
mapper
.
convertValue
(
leaf
,
new
TypeReference
<
List
<
String
>>()
{
});
}
catch
(
IOException
e
)
{
e
.
printStackTrace
(
);
logger
.
error
(
e
.
getMessage
(),
e
);
}
return
null
;
}
public
static
Integer
parseInteger
(
String
body
,
String
field
)
{
ObjectMapper
mapper
=
new
ObjectMapper
();
JsonNode
node
=
null
;
JsonNode
node
;
try
{
node
=
mapper
.
readTree
(
body
);
JsonNode
leaf
=
node
.
get
(
field
);
if
(
leaf
!=
null
)
return
leaf
.
asInt
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
(
);
logger
.
error
(
e
.
getMessage
(),
e
);
}
return
null
;
}
public
static
List
<
Integer
>
parseIntegerList
(
String
body
,
String
field
)
{
ObjectMapper
mapper
=
new
ObjectMapper
();
JsonNode
node
=
null
;
JsonNode
node
;
try
{
node
=
mapper
.
readTree
(
body
);
JsonNode
leaf
=
node
.
get
(
field
);
...
...
@@ -65,7 +71,7 @@ public class JacksonUtil {
return
mapper
.
convertValue
(
leaf
,
new
TypeReference
<
List
<
Integer
>>()
{
});
}
catch
(
IOException
e
)
{
e
.
printStackTrace
(
);
logger
.
error
(
e
.
getMessage
(),
e
);
}
return
null
;
}
...
...
@@ -73,21 +79,21 @@ public class JacksonUtil {
public
static
Boolean
parseBoolean
(
String
body
,
String
field
)
{
ObjectMapper
mapper
=
new
ObjectMapper
();
JsonNode
node
=
null
;
JsonNode
node
;
try
{
node
=
mapper
.
readTree
(
body
);
JsonNode
leaf
=
node
.
get
(
field
);
if
(
leaf
!=
null
)
return
leaf
.
asBoolean
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
(
);
logger
.
error
(
e
.
getMessage
(),
e
);
}
return
null
;
}
public
static
Short
parseShort
(
String
body
,
String
field
)
{
ObjectMapper
mapper
=
new
ObjectMapper
();
JsonNode
node
=
null
;
JsonNode
node
;
try
{
node
=
mapper
.
readTree
(
body
);
JsonNode
leaf
=
node
.
get
(
field
);
...
...
@@ -96,14 +102,14 @@ public class JacksonUtil {
return
value
.
shortValue
();
}
}
catch
(
IOException
e
)
{
e
.
printStackTrace
(
);
logger
.
error
(
e
.
getMessage
(),
e
);
}
return
null
;
}
public
static
Byte
parseByte
(
String
body
,
String
field
)
{
ObjectMapper
mapper
=
new
ObjectMapper
();
JsonNode
node
=
null
;
JsonNode
node
;
try
{
node
=
mapper
.
readTree
(
body
);
JsonNode
leaf
=
node
.
get
(
field
);
...
...
@@ -112,20 +118,20 @@ public class JacksonUtil {
return
value
.
byteValue
();
}
}
catch
(
IOException
e
)
{
e
.
printStackTrace
(
);
logger
.
error
(
e
.
getMessage
(),
e
);
}
return
null
;
}
public
static
<
T
>
T
parseObject
(
String
body
,
String
field
,
Class
<
T
>
clazz
)
{
ObjectMapper
mapper
=
new
ObjectMapper
();
JsonNode
node
=
null
;
JsonNode
node
;
try
{
node
=
mapper
.
readTree
(
body
);
node
=
node
.
get
(
field
);
return
mapper
.
treeToValue
(
node
,
clazz
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
(
);
logger
.
error
(
e
.
getMessage
(),
e
);
}
return
null
;
}
...
...
@@ -136,10 +142,10 @@ public class JacksonUtil {
}
ObjectMapper
mapper
=
new
ObjectMapper
();
try
{
JsonNode
jsonNode
=
mapper
.
readTree
(
json
);
return
jsonNode
;
return
mapper
.
readTree
(
json
)
;
}
catch
(
IOException
e
)
{
e
.
printStackTrace
(
);
logger
.
error
(
e
.
getMessage
(),
e
);
}
return
null
;
...
...
@@ -148,11 +154,21 @@ public class JacksonUtil {
public
static
Map
<
String
,
String
>
toMap
(
String
data
)
{
ObjectMapper
objectMapper
=
new
ObjectMapper
();
try
{
return
objectMapper
.
readValue
(
data
,
new
TypeReference
<
Map
<
String
,
String
>>(){});
return
objectMapper
.
readValue
(
data
,
new
TypeReference
<
Map
<
String
,
String
>>()
{
});
}
catch
(
IOException
e
)
{
e
.
printStackTrace
(
);
logger
.
error
(
e
.
getMessage
(),
e
);
}
return
null
;
}
public
static
String
toJson
(
Object
data
)
{
ObjectMapper
objectMapper
=
new
ObjectMapper
();
try
{
return
objectMapper
.
writeValueAsString
(
data
);
}
catch
(
JsonProcessingException
e
)
{
e
.
printStackTrace
();
}
return
null
;
}
}
litemall-core/src/main/java/org/linlinjava/litemall/core/util/RegexUtil.java
View file @
324c8da3
...
...
@@ -9,7 +9,8 @@ import java.util.regex.Pattern;
/**
* RegexUtil类的代码是来自[AndroidUtilCode](https://github.com/Blankj/AndroidUtilCode)的RegexUtils类和RegexConstants类
* https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/util/RegexUtils.java
* https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/constant/RegexConstants.java
* https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/constant
* /RegexConstants.java
*/
public
class
RegexUtil
{
...
...
@@ -19,13 +20,15 @@ public class RegexUtil {
public
static
final
String
REGEX_MOBILE_SIMPLE
=
"^[1]\\d{10}$"
;
/**
* Regex of exact mobile.
* <p>china mobile: 134(0-8), 135, 136, 137, 138, 139, 147, 150, 151, 152, 157, 158, 159, 178, 182, 183, 184, 187, 188, 198</p>
* <p>china mobile: 134(0-8), 135, 136, 137, 138, 139, 147, 150, 151, 152, 157, 158, 159, 178, 182, 183, 184,
* 187, 188, 198</p>
* <p>china unicom: 130, 131, 132, 145, 155, 156, 166, 171, 175, 176, 185, 186</p>
* <p>china telecom: 133, 153, 173, 177, 180, 181, 189, 199</p>
* <p>global star: 1349</p>
* <p>virtual operator: 170</p>
*/
public
static
final
String
REGEX_MOBILE_EXACT
=
"^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(16[6])|(17[0,1,3,5-8])|(18[0-9])|(19[8,9]))\\d{8}$"
;
public
static
final
String
REGEX_MOBILE_EXACT
=
"^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(16[6])|(17[0,1,3,5-8])|"
+
"(18[0-9])|(19[8,9]))\\d{8}$"
;
/**
* Regex of telephone number.
*/
...
...
@@ -37,7 +40,8 @@ public class RegexUtil {
/**
* Regex of id card number which length is 18.
*/
public
static
final
String
REGEX_ID_CARD18
=
"^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}([0-9Xx])$"
;
public
static
final
String
REGEX_ID_CARD18
=
"^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}"
+
"([0-9Xx])$"
;
/**
* Regex of email.
*/
...
...
@@ -60,7 +64,9 @@ public class RegexUtil {
/**
* Regex of date which pattern is "yyyy-MM-dd".
*/
public
static
final
String
REGEX_DATE
=
"^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$"
;
public
static
final
String
REGEX_DATE
=
"^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|"
+
"(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|"
+
"(?:0[48]|[2468][048]|[13579][26])00)-02-29)$"
;
/**
* Regex of ip address.
*/
...
...
@@ -255,7 +261,8 @@ public class RegexUtil {
* @return the list of input matches the regex
*/
public
static
List
<
String
>
getMatches
(
final
String
regex
,
final
CharSequence
input
)
{
if
(
input
==
null
)
return
Collections
.
emptyList
();
if
(
input
==
null
)
return
Collections
.
emptyList
();
List
<
String
>
matches
=
new
ArrayList
<>();
Pattern
pattern
=
Pattern
.
compile
(
regex
);
Matcher
matcher
=
pattern
.
matcher
(
input
);
...
...
@@ -273,7 +280,8 @@ public class RegexUtil {
* @return the array of strings computed by splitting input around matches of regex
*/
public
static
String
[]
getSplits
(
final
String
input
,
final
String
regex
)
{
if
(
input
==
null
)
return
new
String
[
0
];
if
(
input
==
null
)
return
new
String
[
0
];
return
input
.
split
(
regex
);
}
...
...
@@ -291,7 +299,8 @@ public class RegexUtil {
public
static
String
getReplaceFirst
(
final
String
input
,
final
String
regex
,
final
String
replacement
)
{
if
(
input
==
null
)
return
""
;
if
(
input
==
null
)
return
""
;
return
Pattern
.
compile
(
regex
).
matcher
(
input
).
replaceFirst
(
replacement
);
}
...
...
@@ -309,7 +318,8 @@ public class RegexUtil {
public
static
String
getReplaceAll
(
final
String
input
,
final
String
regex
,
final
String
replacement
)
{
if
(
input
==
null
)
return
""
;
if
(
input
==
null
)
return
""
;
return
Pattern
.
compile
(
regex
).
matcher
(
input
).
replaceAll
(
replacement
);
}
}
litemall-core/src/main/java/org/linlinjava/litemall/core/util/ResponseUtil.java
View file @
324c8da3
package
org.linlinjava.litemall.core.util
;
import
com.github.pagehelper.Page
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
...
...
@@ -52,12 +55,44 @@ public class ResponseUtil {
return
obj
;
}
public
static
Object
ok
(
String
errmsg
,
Object
data
)
{
Map
<
String
,
Object
>
obj
=
new
HashMap
<
String
,
Object
>();
obj
.
put
(
"errno"
,
0
);
obj
.
put
(
"errmsg"
,
errmsg
);
obj
.
put
(
"data"
,
data
);
return
obj
;
public
static
Object
okList
(
List
list
)
{
Map
<
String
,
Object
>
data
=
new
HashMap
<
String
,
Object
>();
data
.
put
(
"list"
,
list
);
if
(
list
instanceof
Page
)
{
Page
page
=
(
Page
)
list
;
data
.
put
(
"total"
,
page
.
getTotal
());
data
.
put
(
"page"
,
page
.
getPageNum
());
data
.
put
(
"limit"
,
page
.
getPageSize
());
data
.
put
(
"pages"
,
page
.
getPages
());
}
else
{
data
.
put
(
"total"
,
list
.
size
());
data
.
put
(
"page"
,
1
);
data
.
put
(
"limit"
,
list
.
size
());
data
.
put
(
"pages"
,
1
);
}
return
ok
(
data
);
}
public
static
Object
okList
(
List
list
,
List
pagedList
)
{
Map
<
String
,
Object
>
data
=
new
HashMap
<
String
,
Object
>();
data
.
put
(
"list"
,
list
);
if
(
pagedList
instanceof
Page
)
{
Page
page
=
(
Page
)
pagedList
;
data
.
put
(
"total"
,
page
.
getTotal
());
data
.
put
(
"page"
,
page
.
getPageNum
());
data
.
put
(
"limit"
,
page
.
getPageSize
());
data
.
put
(
"pages"
,
page
.
getPages
());
}
else
{
data
.
put
(
"total"
,
pagedList
.
size
());
data
.
put
(
"page"
,
1
);
data
.
put
(
"limit"
,
pagedList
.
size
());
data
.
put
(
"pages"
,
1
);
}
return
ok
(
data
);
}
public
static
Object
fail
()
{
...
...
litemall-core/src/main/java/org/linlinjava/litemall/core/util/SystemInfoPrinter.java
View file @
324c8da3
package
org.linlinjava.litemall.core.util
;
import
org.apache.commons.logging.Log
;
import
org.apache.commons.logging.LogFactory
;
import
java.util.Map
;
public
class
SystemInfoPrinter
{
private
static
final
Log
logger
=
LogFactory
.
getLog
(
SystemInfoPrinter
.
class
);
public
static
final
String
CREATE_PART_COPPER
=
"XOXOXOXOX"
;
private
static
int
maxSize
=
0
;
...
...
@@ -34,24 +39,24 @@ public class SystemInfoPrinter {
}
private
static
void
printHeader
(
String
title
)
{
System
.
out
.
println
(
getLineCopper
());
System
.
out
.
println
(
""
);
System
.
out
.
println
(
" "
+
title
);
System
.
out
.
println
(
""
);
logger
.
info
(
getLineCopper
());
logger
.
info
(
""
);
logger
.
info
(
" "
+
title
);
logger
.
info
(
""
);
}
private
static
void
printEnd
()
{
System
.
out
.
println
(
" "
);
System
.
out
.
println
(
getLineCopper
());
logger
.
info
(
" "
);
logger
.
info
(
getLineCopper
());
}
private
static
String
getLineCopper
()
{
String
copper
=
""
;
String
Builder
sb
=
new
StringBuilder
()
;
for
(
int
i
=
0
;
i
<
maxSize
;
i
++)
{
copper
+=
"="
;
sb
.
append
(
"="
)
;
}
return
copper
;
return
sb
.
toString
()
;
}
private
static
void
printLine
(
String
head
,
String
line
)
{
...
...
@@ -59,11 +64,11 @@ public class SystemInfoPrinter {
return
;
if
(
head
.
startsWith
(
CREATE_PART_COPPER
))
{
System
.
out
.
println
(
""
);
System
.
out
.
println
(
" [[ "
+
line
+
" ]]"
);
System
.
out
.
println
(
""
);
logger
.
info
(
""
);
logger
.
info
(
" [[ "
+
line
+
" ]]"
);
logger
.
info
(
""
);
}
else
{
System
.
out
.
println
(
" "
+
head
+
" -> "
+
line
);
logger
.
info
(
" "
+
head
+
" -> "
+
line
);
}
}
}
Prev
1
…
8
9
10
11
12
13
14
15
16
…
20
Next
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment