Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
S
shop
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
曲欣亮
shop
Commits
3b68e1c6
Commit
3b68e1c6
authored
Oct 12, 2018
by
zhangyong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1
parent
26d95675
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
1100 additions
and
22 deletions
+1100
-22
pom.xml
pom.xml
+5
-0
SystemCtrlController.java
.../java/com/egolm/shop/controller/SystemCtrlController.java
+6
-2
UserController.java
src/main/java/com/egolm/shop/controller/UserController.java
+99
-0
EgoPasswordEncoder.java
src/main/java/com/egolm/shop/encrypt/EgoPasswordEncoder.java
+29
-0
EgoShopPasswordEncoder.java
...n/java/com/egolm/shop/encrypt/EgoShopPasswordEncoder.java
+443
-0
TCommon.java
src/main/java/com/egolm/shop/pojo/TCommon.java
+182
-0
TCustomer.java
src/main/java/com/egolm/shop/pojo/TCustomer.java
+7
-5
CommonService.java
src/main/java/com/egolm/shop/service/CommonService.java
+6
-0
SystemCtrlService.java
src/main/java/com/egolm/shop/service/SystemCtrlService.java
+3
-1
UserService.java
src/main/java/com/egolm/shop/service/UserService.java
+8
-0
CategoryServiceImpl.java
...java/com/egolm/shop/service/impl/CategoryServiceImpl.java
+1
-1
CommonServiceImpl.java
...n/java/com/egolm/shop/service/impl/CommonServiceImpl.java
+20
-0
GoodsServiceImpl.java
...in/java/com/egolm/shop/service/impl/GoodsServiceImpl.java
+5
-5
GoodsSql.java
src/main/java/com/egolm/shop/service/impl/GoodsSql.java
+1
-1
SystemCtrlServiceImpl.java
...va/com/egolm/shop/service/impl/SystemCtrlServiceImpl.java
+3
-3
UserServiceImpl.java
...ain/java/com/egolm/shop/service/impl/UserServiceImpl.java
+272
-3
ShopContstrant.java
src/main/java/com/egolm/shop/util/ShopContstrant.java
+6
-0
application-dev.properties
src/main/resources/application-dev.properties
+4
-1
No files found.
pom.xml
View file @
3b68e1c6
...
...
@@ -26,6 +26,11 @@
<artifactId>
spring-boot-devtools
</artifactId>
<optional>
true
</optional>
</dependency>
<dependency>
<groupId>
org.springframework.security
</groupId>
<artifactId>
spring-security-core
</artifactId>
<version>
4.0.4.RELEASE
</version>
</dependency>
<dependency>
<groupId>
mysql
</groupId>
<artifactId>
mysql-connector-java
</artifactId>
...
...
src/main/java/com/egolm/shop/controller/SystemCtrlController.java
View file @
3b68e1c6
...
...
@@ -38,7 +38,11 @@ public class SystemCtrlController {
String
code
=
request
.
getParameter
(
"code"
);
String
langID
=
request
.
getParameter
(
"langID"
);
return
systemCtrlService
.
queryTSystemCtrlByCode
(
code
,
langID
);
Map
<
String
,
Object
>
result
=
systemCtrlService
.
queryTSystemCtrlByCode
(
code
,
langID
);
if
(
result
!=
null
)
{
return
Rjx
.
jsonOk
().
setData
(
result
).
toJson
();
}
else
{
return
Rjx
.
jsonErr
().
setCode
(-
1
).
setMessage
(
"数据字典查询出错"
).
toJson
();
}
}
}
src/main/java/com/egolm/shop/controller/UserController.java
View file @
3b68e1c6
...
...
@@ -11,7 +11,9 @@ import org.springframework.web.bind.annotation.RequestMapping;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RestController
;
import
com.egolm.common.StringUtil
;
import
com.egolm.common.bean.Rjx
;
import
com.egolm.shop.pojo.TCustomer
;
import
com.egolm.shop.service.UserService
;
import
io.swagger.annotations.Api
;
...
...
@@ -31,6 +33,7 @@ public class UserController {
@ApiImplicitParams
({
@ApiImplicitParam
(
paramType
=
"query"
,
name
=
"districtID"
,
dataType
=
"String"
,
required
=
true
,
value
=
"区域编号"
,
defaultValue
=
""
),
@ApiImplicitParam
(
paramType
=
"query"
,
name
=
"orgNO"
,
dataType
=
"String"
,
required
=
true
,
value
=
"组织机构"
,
defaultValue
=
"SHBS"
),
@ApiImplicitParam
(
paramType
=
"query"
,
name
=
"terminal"
,
dataType
=
"String"
,
required
=
true
,
value
=
"终端标识"
,
defaultValue
=
"wechat"
),
@ApiImplicitParam
(
paramType
=
"query"
,
name
=
"langID"
,
dataType
=
"String"
,
required
=
false
,
value
=
"语言"
,
defaultValue
=
"936"
),
})
...
...
@@ -47,4 +50,100 @@ public class UserController {
}
@ApiOperation
(
"登陆"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
paramType
=
"query"
,
name
=
"userNO"
,
dataType
=
"String"
,
required
=
false
,
value
=
"账号(账号/名称/手机号)"
,
defaultValue
=
""
),
@ApiImplicitParam
(
paramType
=
"query"
,
name
=
"password"
,
dataType
=
"String"
,
required
=
false
,
value
=
"密码"
,
defaultValue
=
""
),
@ApiImplicitParam
(
paramType
=
"query"
,
name
=
"openID"
,
dataType
=
"String"
,
required
=
false
,
value
=
"openID(优先级小于账号)"
,
defaultValue
=
""
),
@ApiImplicitParam
(
paramType
=
"query"
,
name
=
"langID"
,
dataType
=
"String"
,
required
=
false
,
value
=
"语言"
,
defaultValue
=
"936"
),
@ApiImplicitParam
(
paramType
=
"query"
,
name
=
"terminal"
,
dataType
=
"String"
,
required
=
true
,
value
=
"终端标识"
,
defaultValue
=
"wechat"
),
})
@RequestMapping
(
value
=
"/login"
,
method
=
RequestMethod
.
POST
)
public
String
login
(
HttpServletRequest
request
,
HttpServletResponse
response
)
{
String
userNO
=
request
.
getParameter
(
"userNO"
)==
null
?
""
:
request
.
getParameter
(
"userNO"
);
String
password
=
request
.
getParameter
(
"password"
)==
null
?
""
:
request
.
getParameter
(
"password"
);
String
openID
=
request
.
getParameter
(
"openID"
);
Map
<
String
,
Object
>
params
=
new
HashMap
<
String
,
Object
>();
params
.
put
(
"userNO"
,
userNO
);
params
.
put
(
"password"
,
password
);
params
.
put
(
"openID"
,
openID
);
return
userService
.
login
(
params
);
}
@ApiOperation
(
"获取店铺信息"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
paramType
=
"query"
,
name
=
"custNO"
,
dataType
=
"String"
,
required
=
true
,
value
=
"账号编码"
,
defaultValue
=
""
),
@ApiImplicitParam
(
paramType
=
"query"
,
name
=
"shopNO"
,
dataType
=
"String"
,
required
=
false
,
value
=
"店铺编号"
,
defaultValue
=
""
),
@ApiImplicitParam
(
paramType
=
"query"
,
name
=
"langID"
,
dataType
=
"String"
,
required
=
true
,
value
=
"语言"
,
defaultValue
=
"936"
),
@ApiImplicitParam
(
paramType
=
"query"
,
name
=
"terminal"
,
dataType
=
"String"
,
required
=
true
,
value
=
"终端标识"
,
defaultValue
=
"wechat"
),
})
@RequestMapping
(
value
=
"/userInfo"
,
method
=
RequestMethod
.
GET
)
public
String
userInfo
(
HttpServletRequest
request
,
HttpServletResponse
response
)
{
String
custNO
=
request
.
getParameter
(
"custNO"
);
String
shopNO
=
request
.
getParameter
(
"shopNO"
)==
null
?
""
:
request
.
getParameter
(
"shopNO"
);
System
.
out
.
println
(
"shopNO===="
+
StringUtil
.
isNotEmpty
(
shopNO
));
TCustomer
tCustomer
=
userService
.
getCustomer
(
custNO
,
shopNO
);
return
Rjx
.
jsonOk
().
setData
(
tCustomer
).
toJson
();
}
@ApiOperation
(
"修改密码"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
paramType
=
"query"
,
name
=
"mobile"
,
dataType
=
"String"
,
required
=
true
,
value
=
"手机号码"
,
defaultValue
=
""
),
@ApiImplicitParam
(
paramType
=
"query"
,
name
=
"password"
,
dataType
=
"String"
,
required
=
true
,
value
=
"店铺编号"
,
defaultValue
=
""
),
@ApiImplicitParam
(
paramType
=
"query"
,
name
=
"smsCode"
,
dataType
=
"String"
,
required
=
true
,
value
=
"短信验证码"
,
defaultValue
=
""
),
@ApiImplicitParam
(
paramType
=
"query"
,
name
=
"smsTmpID"
,
dataType
=
"String"
,
required
=
true
,
value
=
"短信模板ID"
,
defaultValue
=
""
),
@ApiImplicitParam
(
paramType
=
"query"
,
name
=
"langID"
,
dataType
=
"String"
,
required
=
true
,
value
=
"语言"
,
defaultValue
=
"936"
),
@ApiImplicitParam
(
paramType
=
"query"
,
name
=
"terminal"
,
dataType
=
"String"
,
required
=
true
,
value
=
"终端标识"
,
defaultValue
=
"wechat"
),
})
@RequestMapping
(
value
=
"/modifyPwd"
,
method
=
RequestMethod
.
GET
)
public
String
modifyPwd
(
HttpServletRequest
request
,
HttpServletResponse
response
)
{
String
mobile
=
request
.
getParameter
(
"mobile"
);
String
password
=
request
.
getParameter
(
"password"
)==
null
?
""
:
request
.
getParameter
(
"password"
);
String
smsCode
=
request
.
getParameter
(
"smsCode"
)==
null
?
""
:
request
.
getParameter
(
"smsCode"
);
String
langID
=
request
.
getParameter
(
"langID"
)==
null
?
"936"
:
request
.
getParameter
(
"langID"
);
String
smsTmpID
=
request
.
getParameter
(
"smsTmpID"
)==
null
?
"936"
:
request
.
getParameter
(
"smsTmpID"
);
Map
<
String
,
Object
>
params
=
new
HashMap
<
String
,
Object
>();
params
.
put
(
"mobile"
,
mobile
);
params
.
put
(
"password"
,
password
);
params
.
put
(
"smsCode"
,
smsCode
);
params
.
put
(
"langID"
,
langID
);
params
.
put
(
"smsTmpID"
,
smsTmpID
);
return
userService
.
modifyPwd
(
params
);
}
@ApiOperation
(
"发短信"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
paramType
=
"query"
,
name
=
"mobile"
,
dataType
=
"String"
,
required
=
true
,
value
=
"手机号码"
,
defaultValue
=
""
),
@ApiImplicitParam
(
paramType
=
"query"
,
name
=
"smsTmpID"
,
dataType
=
"String"
,
required
=
true
,
value
=
"短信模板ID"
,
defaultValue
=
""
),
@ApiImplicitParam
(
paramType
=
"query"
,
name
=
"content"
,
dataType
=
"String"
,
required
=
true
,
value
=
"内容,按模板上的参数填值,以,分隔"
,
defaultValue
=
""
),
@ApiImplicitParam
(
paramType
=
"query"
,
name
=
"langID"
,
dataType
=
"String"
,
required
=
true
,
value
=
"语言"
,
defaultValue
=
"936"
),
@ApiImplicitParam
(
paramType
=
"query"
,
name
=
"terminal"
,
dataType
=
"String"
,
required
=
true
,
value
=
"终端标识"
,
defaultValue
=
"wechat"
),
})
@RequestMapping
(
value
=
"/sendSms"
,
method
=
RequestMethod
.
GET
)
public
String
sendSms
(
HttpServletRequest
request
,
HttpServletResponse
response
)
{
String
mobile
=
request
.
getParameter
(
"mobile"
);
String
smsTmpID
=
request
.
getParameter
(
"smsTmpID"
);
String
content
=
request
.
getParameter
(
"content"
);
String
langID
=
request
.
getParameter
(
"langID"
);
Map
<
String
,
Object
>
params
=
new
HashMap
<
String
,
Object
>();
params
.
put
(
"mobile"
,
mobile
);
params
.
put
(
"langID"
,
langID
);
params
.
put
(
"smsTmpID"
,
smsTmpID
);
params
.
put
(
"content"
,
content
);
return
userService
.
sendSms
(
params
);
}
}
src/main/java/com/egolm/shop/encrypt/EgoPasswordEncoder.java
0 → 100644
View file @
3b68e1c6
package
com
.
egolm
.
shop
.
encrypt
;
import
org.springframework.security.crypto.password.PasswordEncoder
;
import
org.springframework.stereotype.Component
;
@Component
(
"passwordEncoder"
)
public
class
EgoPasswordEncoder
implements
PasswordEncoder
{
@Override
public
String
encode
(
CharSequence
rawPassword
)
{
return
EgoShopPasswordEncoder
.
encode
(
rawPassword
.
toString
());
}
public
String
decode
(
CharSequence
rawPassword
)
{
return
EgoShopPasswordEncoder
.
decode
(
rawPassword
.
toString
());
}
@Override
public
boolean
matches
(
CharSequence
rawPassword
,
String
encodedPassword
)
{
return
encode
(
rawPassword
.
toString
()).
equals
(
encodedPassword
);
}
public
static
void
main
(
String
[]
args
)
{
EgoPasswordEncoder
e
=
new
EgoPasswordEncoder
();
System
.
out
.
println
(
e
.
decode
(
"zLnXcPGqQ/2iE2YwfoVkqXb1Ufb0bDYm"
));
System
.
out
.
println
(
e
.
encode
(
"13654804000123456"
));
}
}
src/main/java/com/egolm/shop/encrypt/EgoShopPasswordEncoder.java
0 → 100644
View file @
3b68e1c6
package
com
.
egolm
.
shop
.
encrypt
;
import
java.io.UnsupportedEncodingException
;
import
java.security.MessageDigest
;
import
java.security.NoSuchAlgorithmException
;
import
java.security.SecureRandom
;
import
javax.crypto.Cipher
;
import
javax.crypto.KeyGenerator
;
import
javax.crypto.SecretKey
;
import
javax.crypto.SecretKeyFactory
;
import
javax.crypto.spec.DESKeySpec
;
import
javax.crypto.spec.IvParameterSpec
;
import
javax.crypto.spec.SecretKeySpec
;
import
org.apache.commons.codec.binary.Base64
;
import
org.apache.commons.codec.binary.Hex
;
import
com.egolm.common.StringUtil
;
/**
* 数据安全加密工具类
*/
public
final
class
EgoShopPasswordEncoder
{
private
static
final
String
DEFAULT_DES_CRYPT_KEY
=
"EGOLMEGOLM"
;
private
static
final
String
DEFAULT_AES_CRYPT_KEY
=
"EGOLMEGOLM"
;
/**
* 对输入的字符串进行MD5加密
*
* @param str 需要加密的字符串
* @return MD5加密后的字符串
*/
public
static
String
getMD5
(
String
str
)
{
if
(
StringUtil
.
isEmpty
(
str
))
{
return
null
;
}
try
{
MessageDigest
messageDigest
=
MessageDigest
.
getInstance
(
"MD5"
);
byte
[]
digest
=
messageDigest
.
digest
(
str
.
getBytes
());
return
new
String
(
Hex
.
encodeHex
(
digest
));
}
catch
(
NoSuchAlgorithmException
e
)
{
return
null
;
}
}
/**
* 使用默认密钥进行 AES加密
*
* @param content 须加密内容
* @return 字符串
*/
@SuppressWarnings
(
"unused"
)
private
static
String
encryptAES
(
String
content
)
{
return
encryptAES
(
content
,
DEFAULT_AES_CRYPT_KEY
);
}
/**
* AES加密
*
* @param content 须加密内容
* @param key 密钥
* @return 字符串
*/
private
static
String
encryptAES
(
String
content
,
String
key
)
{
try
{
KeyGenerator
kgen
=
KeyGenerator
.
getInstance
(
"AES"
);
SecureRandom
secureRandom
=
SecureRandom
.
getInstance
(
"SHA1PRNG"
);
secureRandom
.
setSeed
(
key
.
getBytes
());
kgen
.
init
(
128
,
secureRandom
);
SecretKey
secretKey
=
kgen
.
generateKey
();
byte
[]
enCodeFormat
=
secretKey
.
getEncoded
();
SecretKeySpec
secretKeySpec
=
new
SecretKeySpec
(
enCodeFormat
,
"AES"
);
Cipher
cipher
=
Cipher
.
getInstance
(
"AES"
);
// 创建密码器
byte
[]
byteContent
=
content
.
getBytes
(
"utf-8"
);
cipher
.
init
(
Cipher
.
ENCRYPT_MODE
,
secretKeySpec
);
// 初始化
byte
[]
result
=
cipher
.
doFinal
(
byteContent
);
return
parseByte2HexStr
(
result
);
// 加密
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
throw
new
RuntimeException
(
e
.
getMessage
());
}
}
/**
* 使用默认密钥进行 AES解密
*
* @param content
* @return 字符串
*/
@SuppressWarnings
(
"unused"
)
private
static
String
decryptAES
(
String
content
)
{
return
decryptAES
(
content
,
DEFAULT_AES_CRYPT_KEY
);
}
/**
* AES解密
*
* @param content 待解密内容
* @param key 解密密钥
* @return 字符串
*/
private
static
String
decryptAES
(
String
content
,
String
key
)
{
try
{
KeyGenerator
kgen
=
KeyGenerator
.
getInstance
(
"AES"
);
SecureRandom
secureRandom
=
SecureRandom
.
getInstance
(
"SHA1PRNG"
);
secureRandom
.
setSeed
(
key
.
getBytes
());
kgen
.
init
(
128
,
secureRandom
);
SecretKey
secretKey
=
kgen
.
generateKey
();
byte
[]
enCodeFormat
=
secretKey
.
getEncoded
();
SecretKeySpec
secretKeySpec
=
new
SecretKeySpec
(
enCodeFormat
,
"AES"
);
Cipher
cipher
=
Cipher
.
getInstance
(
"AES"
);
// 创建密码器
cipher
.
init
(
Cipher
.
DECRYPT_MODE
,
secretKeySpec
);
// 初始化
byte
[]
result
=
cipher
.
doFinal
(
parseHexStr2Byte
(
content
));
return
new
String
(
result
);
// 加密
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
throw
new
RuntimeException
(
e
.
getMessage
());
}
}
/**
* 使用默认密钥进行 AES加密
*
* @param content 须加密内容
* @return 字符串
*/
@SuppressWarnings
(
"unused"
)
private
static
String
encryptDES
(
String
content
)
{
return
encryptDES
(
content
,
DEFAULT_DES_CRYPT_KEY
);
}
/**
* 加密
*
* @param src 数据源
* @param key 密钥,长度必须是8的倍数
* @return 返回加密后的数据
* @throws Exception
*/
private
static
String
encryptDES
(
String
src
,
String
key
)
{
try
{
SecureRandom
sr
=
new
SecureRandom
();
DESKeySpec
dks
=
new
DESKeySpec
(
key
.
getBytes
());
SecretKeyFactory
keyFactory
=
SecretKeyFactory
.
getInstance
(
"DES"
);
SecretKey
securekey
=
keyFactory
.
generateSecret
(
dks
);
Cipher
cipher
=
Cipher
.
getInstance
(
"DES"
);
cipher
.
init
(
Cipher
.
ENCRYPT_MODE
,
securekey
,
sr
);
return
parseByte2HexStr
(
cipher
.
doFinal
(
src
.
getBytes
()));
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
throw
new
RuntimeException
(
e
.
getMessage
());
}
}
/**
* 使用默认密钥进行 DES解密
*
* @param content 待解密内容
* @return 字符串
*/
@SuppressWarnings
(
"unused"
)
private
static
String
decryptDES
(
String
content
)
{
return
decryptDES
(
content
,
DEFAULT_DES_CRYPT_KEY
);
}
/**
* 解密
*
* @param src 数据源
* @param key 密钥,长度必须是8的倍数
* @return 返回解密后的原始数据
* @throws Exception
*/
private
static
String
decryptDES
(
String
src
,
String
key
)
{
try
{
SecureRandom
sr
=
new
SecureRandom
();
DESKeySpec
dks
=
new
DESKeySpec
(
key
.
getBytes
());
SecretKeyFactory
keyFactory
=
SecretKeyFactory
.
getInstance
(
"DES"
);
SecretKey
securekey
=
keyFactory
.
generateSecret
(
dks
);
Cipher
cipher
=
Cipher
.
getInstance
(
"DES"
);
cipher
.
init
(
Cipher
.
DECRYPT_MODE
,
securekey
,
sr
);
return
new
String
(
cipher
.
doFinal
(
parseHexStr2Byte
(
src
)));
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
throw
new
RuntimeException
(
e
.
getMessage
());
}
}
/**
* 将二进制转换成16进制
*
* @param buf 字节数组
* @return 字符串
*/
private
static
String
parseByte2HexStr
(
byte
buf
[])
{
StringBuffer
sb
=
new
StringBuffer
();
for
(
int
i
=
0
;
i
<
buf
.
length
;
i
++)
{
String
hex
=
Integer
.
toHexString
(
buf
[
i
]
&
0xFF
);
if
(
hex
.
length
()
==
1
)
{
hex
=
'0'
+
hex
;
}
sb
.
append
(
hex
.
toUpperCase
());
}
return
sb
.
toString
();
}
/**
* 将16进制转换为二进制
*
* @param hexStr 16进制字符串
* @return 字节数组
*/
private
static
byte
[]
parseHexStr2Byte
(
String
hexStr
)
{
if
(
hexStr
.
length
()
<
1
)
return
null
;
byte
[]
result
=
new
byte
[
hexStr
.
length
()
/
2
];
for
(
int
i
=
0
;
i
<
hexStr
.
length
()
/
2
;
i
++)
{
int
high
=
Integer
.
parseInt
(
hexStr
.
substring
(
i
*
2
,
i
*
2
+
1
),
16
);
int
low
=
Integer
.
parseInt
(
hexStr
.
substring
(
i
*
2
+
1
,
i
*
2
+
2
),
16
);
result
[
i
]
=
(
byte
)
(
high
*
16
+
low
);
}
return
result
;
}
/**
* 对字符串进行MD5编码(清机系统用户密码加密)
*
* @param str 待编码字符串
* @return 字符串
*/
@SuppressWarnings
(
"unused"
)
private
static
String
encodeByMD5
(
String
str
)
{
if
(
StringUtil
.
isEmpty
(
str
))
{
return
null
;
}
try
{
MessageDigest
messageDigest
=
MessageDigest
.
getInstance
(
"MD5"
);
byte
[]
digest
=
messageDigest
.
digest
(
str
.
getBytes
());
return
new
String
(
Hex
.
encodeHex
(
digest
));
}
catch
(
NoSuchAlgorithmException
e
)
{
throw
new
RuntimeException
(
e
);
}
}
/**
* DES解密数据
*
* @param message
* @param key
* @return
* @throws Exception
*/
private
static
String
decrypt
(
String
message
,
String
key
)
throws
Exception
{
byte
[]
bytesrc
=
convertHexString
(
message
);
Cipher
cipher
=
Cipher
.
getInstance
(
"DES/CBC/PKCS5Padding"
);
DESKeySpec
desKeySpec
=
new
DESKeySpec
(
key
.
getBytes
(
"UTF-8"
));
SecretKeyFactory
keyFactory
=
SecretKeyFactory
.
getInstance
(
"DES"
);
SecretKey
secretKey
=
keyFactory
.
generateSecret
(
desKeySpec
);
IvParameterSpec
iv
=
new
IvParameterSpec
(
key
.
getBytes
(
"UTF-8"
));
cipher
.
init
(
Cipher
.
DECRYPT_MODE
,
secretKey
,
iv
);
byte
[]
retByte
=
cipher
.
doFinal
(
bytesrc
);
return
new
String
(
retByte
);
}
/**
* DES加密数据
*
* @param message
* @param key
* @return
* @throws Exception
*/
private
static
byte
[]
encrypt
(
String
message
,
String
key
)
throws
Exception
{
Cipher
cipher
=
Cipher
.
getInstance
(
"DES/CBC/PKCS5Padding"
);
DESKeySpec
desKeySpec
=
new
DESKeySpec
(
key
.
getBytes
(
"UTF-8"
));
SecretKeyFactory
keyFactory
=
SecretKeyFactory
.
getInstance
(
"DES"
);
SecretKey
secretKey
=
keyFactory
.
generateSecret
(
desKeySpec
);
IvParameterSpec
iv
=
new
IvParameterSpec
(
key
.
getBytes
(
"UTF-8"
));
cipher
.
init
(
Cipher
.
ENCRYPT_MODE
,
secretKey
,
iv
);
return
cipher
.
doFinal
(
message
.
getBytes
(
"UTF-8"
));
}
private
static
byte
[]
convertHexString
(
String
ss
)
{
byte
digest
[]
=
new
byte
[
ss
.
length
()
/
2
];
for
(
int
i
=
0
;
i
<
digest
.
length
;
i
++)
{
String
byteString
=
ss
.
substring
(
2
*
i
,
2
*
i
+
2
);
int
byteValue
=
Integer
.
parseInt
(
byteString
,
16
);
digest
[
i
]
=
(
byte
)
byteValue
;
}
return
digest
;
}
/**
* Base64加密
*
* @param sourceByte
* @return
*/
private
static
String
doBase64Encode
(
byte
[]
sourceByte
)
{
String
src
=
Base64
.
encodeBase64String
(
sourceByte
);
return
src
.
replace
(
"\n"
,
""
);
}
/**
* Base64解密
*
* @param sourceByte
* @return
*/
private
static
byte
[]
doBase64Decode
(
String
sourceStr
)
{
return
Base64
.
decodeBase64
(
sourceStr
);
}
private
static
String
doHandleEncode
(
String
value
,
String
skey
)
{
String
jiami
;
try
{
jiami
=
java
.
net
.
URLEncoder
.
encode
(
value
,
"utf-8"
).
toLowerCase
();
byte
[]
encodeByte
=
encrypt
(
jiami
,
skey
);
return
doBase64Encode
(
encodeByte
);
}
catch
(
UnsupportedEncodingException
e
)
{
// TODO Auto-generated catch block
e
.
printStackTrace
();
}
catch
(
Exception
e
)
{
// TODO Auto-generated catch block
e
.
printStackTrace
();
}
return
null
;
}
private
static
String
doHandleDecode
(
String
value
,
String
skey
)
{
byte
[]
decodeByte
=
doBase64Decode
(
value
);
try
{
return
java
.
net
.
URLDecoder
.
decode
(
decrypt
(
toHexString
(
decodeByte
),
skey
),
"utf-8"
);
}
catch
(
UnsupportedEncodingException
e
)
{
// TODO Auto-generated catch block
e
.
printStackTrace
();
}
catch
(
Exception
e
)
{
// TODO Auto-generated catch block
e
.
printStackTrace
();
}
return
null
;
}
public
static
String
encode
(
String
value
)
{
return
doHandleEncode
(
value
,
"donguooo"
);
}
public
static
String
decode
(
String
value
)
{
return
doHandleDecode
(
value
,
"donguooo"
);
}
private
static
String
toHexString
(
byte
b
[])
{
StringBuffer
hexString
=
new
StringBuffer
();
for
(
int
i
=
0
;
i
<
b
.
length
;
i
++)
{
String
plainText
=
Integer
.
toHexString
(
0xff
&
b
[
i
]);
if
(
plainText
.
length
()
<
2
)
plainText
=
"0"
+
plainText
;
hexString
.
append
(
plainText
);
}
return
hexString
.
toString
();
}
@SuppressWarnings
(
"unused"
)
private
static
String
SHA1
(
String
decript
)
{
try
{
MessageDigest
digest
=
java
.
security
.
MessageDigest
.
getInstance
(
"SHA-1"
);
digest
.
update
(
decript
.
getBytes
());
byte
messageDigest
[]
=
digest
.
digest
();
// Create Hex String
StringBuffer
hexString
=
new
StringBuffer
();
// 字节数组转换为 十六进制 数
for
(
int
i
=
0
;
i
<
messageDigest
.
length
;
i
++)
{
String
shaHex
=
Integer
.
toHexString
(
messageDigest
[
i
]
&
0xFF
);
if
(
shaHex
.
length
()
<
2
)
{
hexString
.
append
(
0
);
}
hexString
.
append
(
shaHex
);
}
return
hexString
.
toString
();
}
catch
(
NoSuchAlgorithmException
e
)
{
e
.
printStackTrace
();
}
return
""
;
}
@SuppressWarnings
(
"unused"
)
private
static
boolean
decryptSha1
(
String
src
,
byte
[]
desc
)
// 如果这里传入的是byte[]
// 转换后的字符串,则再转为字符串比较后,会匹配不成功
{
// MessageDigest sha1 = MessageDigest.getInstance("sha-1");
try
{
java
.
security
.
MessageDigest
algb
=
java
.
security
.
MessageDigest
.
getInstance
(
"sha-1"
);
algb
.
update
(
src
.
getBytes
());
System
.
out
.
println
(
toHexString
(
algb
.
digest
()));
System
.
out
.
println
(
toHexString
(
algb
.
digest
()));
if
(
MessageDigest
.
isEqual
(
desc
,
algb
.
digest
()))
{
System
.
out
.
println
(
"信息检查正常"
);
return
true
;
}
else
{
System
.
out
.
println
(
"摘要不相同"
);
}
}
catch
(
java
.
security
.
NoSuchAlgorithmException
ex
)
{
System
.
out
.
println
(
"非法摘要算法"
);
}
return
false
;
}
public
static
void
main
(
String
[]
args
)
{
// System.out.println(encryptAES("123456"));
// System.out.println(decryptAES(encryptAES("123456")));
// String key = "donguooo";
// String value="1333333333612345";
/*
* String jiami=java.net.URLEncoder.encode(value,"utf-8").toLowerCase();
* //System.out.println("加密数据:"+jiami); byte[] aa = encrypt(jiami, key);
* //String a=toHexString(aa).toUpperCase(); String src =
* org.apache.ws.commons.util.Base64.encode(aa);
* System.out.println("Base64加密后:"+src); aa =
* org.apache.ws.commons.util.Base64.decode(src);
* System.out.println("Base64解密后:"+toHexString(aa)); String
* b=java.net.URLDecoder.decode(decrypt(toHexString(aa),key),"utf-8") ;
* System.out.println("解密后的数据:"+b);
*/
// String str = doHandleEncode(value, key);
// System.out.println(str);
// System.out.println(doHandleDecode("8yxntpc9QX04dHCT9dzQ4Yk7xcppKdA5R0GR8oJZXT30s38LVXhG7XlZRTxkzcWY",
// key));
// System.out.println(toHexString(doBase64Decode("MTIzNDU2")));
// System.out.println(wxPasswordDecode("E10ADC3949BA59ABBE56E057F20F883E"));
System
.
out
.
println
(
encode
(
"XIAN123456"
));
System
.
out
.
println
(
decode
(
"gj7BU4Rm2W27GG5KexzYRw=="
));
}
}
src/main/java/com/egolm/shop/pojo/TCommon.java
0 → 100644
View file @
3b68e1c6
package
com
.
egolm
.
shop
.
pojo
;
import
javax.persistence.Entity
;
import
javax.persistence.Id
;
import
java.util.Date
;
import
java.math.BigDecimal
;
/**
* @author 曲欣亮
* @since 2018-10-09
* @version v-1.0
*/
@Entity
(
name
=
"tCommon"
)
public
class
TCommon
implements
java
.
io
.
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
private
Date
dCreateDate
;
private
String
sComDesc
;
private
Date
dLastUpdateTime
;
private
String
sMemo
;
private
Integer
nTag
;
@Id
private
String
sCommonNO
;
private
String
sConfirmUser
;
private
BigDecimal
nNum1
;
private
String
sText1
;
@Id
private
String
sComID
;
private
Date
dConfirmDate
;
private
String
sCreateUser
;
/**
* 无参数构造方法
*/
public
TCommon
()
{
super
();
}
/**
* 全参数构造方法
* @param dCreateDate
* @param sComDesc
* @param dLastUpdateTime
* @param sMemo
* @param nTag
* @param sCommonNO
* @param sConfirmUser
* @param nNum1
* @param sText1
* @param sComID
* @param dConfirmDate
* @param sCreateUser
*/
public
TCommon
(
Date
dCreateDate
,
String
sComDesc
,
Date
dLastUpdateTime
,
String
sMemo
,
Integer
nTag
,
String
sCommonNO
,
String
sConfirmUser
,
BigDecimal
nNum1
,
String
sText1
,
String
sComID
,
Date
dConfirmDate
,
String
sCreateUser
)
{
this
.
dCreateDate
=
dCreateDate
;
this
.
sComDesc
=
sComDesc
;
this
.
dLastUpdateTime
=
dLastUpdateTime
;
this
.
sMemo
=
sMemo
;
this
.
nTag
=
nTag
;
this
.
sCommonNO
=
sCommonNO
;
this
.
sConfirmUser
=
sConfirmUser
;
this
.
nNum1
=
nNum1
;
this
.
sText1
=
sText1
;
this
.
sComID
=
sComID
;
this
.
dConfirmDate
=
dConfirmDate
;
this
.
sCreateUser
=
sCreateUser
;
}
public
void
setdCreateDate
(
Date
dCreateDate
)
{
this
.
dCreateDate
=
dCreateDate
;
}
public
Date
getdCreateDate
()
{
return
dCreateDate
;
}
public
void
setsComDesc
(
String
sComDesc
)
{
this
.
sComDesc
=
sComDesc
;
}
public
String
getsComDesc
()
{
return
sComDesc
;
}
public
void
setdLastUpdateTime
(
Date
dLastUpdateTime
)
{
this
.
dLastUpdateTime
=
dLastUpdateTime
;
}
public
Date
getdLastUpdateTime
()
{
return
dLastUpdateTime
;
}
public
void
setsMemo
(
String
sMemo
)
{
this
.
sMemo
=
sMemo
;
}
public
String
getsMemo
()
{
return
sMemo
;
}
public
void
setnTag
(
Integer
nTag
)
{
this
.
nTag
=
nTag
;
}
public
Integer
getnTag
()
{
return
nTag
;
}
public
void
setsCommonNO
(
String
sCommonNO
)
{
this
.
sCommonNO
=
sCommonNO
;
}
public
String
getsCommonNO
()
{
return
sCommonNO
;
}
public
void
setsConfirmUser
(
String
sConfirmUser
)
{
this
.
sConfirmUser
=
sConfirmUser
;
}
public
String
getsConfirmUser
()
{
return
sConfirmUser
;
}
public
void
setnNum1
(
BigDecimal
nNum1
)
{
this
.
nNum1
=
nNum1
;
}
public
BigDecimal
getnNum1
()
{
return
nNum1
;
}
public
void
setsText1
(
String
sText1
)
{
this
.
sText1
=
sText1
;
}
public
String
getsText1
()
{
return
sText1
;
}
public
void
setsComID
(
String
sComID
)
{
this
.
sComID
=
sComID
;
}
public
String
getsComID
()
{
return
sComID
;
}
public
void
setdConfirmDate
(
Date
dConfirmDate
)
{
this
.
dConfirmDate
=
dConfirmDate
;
}
public
Date
getdConfirmDate
()
{
return
dConfirmDate
;
}
public
void
setsCreateUser
(
String
sCreateUser
)
{
this
.
sCreateUser
=
sCreateUser
;
}
public
String
getsCreateUser
()
{
return
sCreateUser
;
}
}
src/main/java/com/egolm/shop/pojo/TCustomer.java
View file @
3b68e1c6
...
...
@@ -67,7 +67,7 @@ public class TCustomer implements java.io.Serializable {
private
String
sFax
;
private
List
<
TShop
>
tshop
;
private
List
<
TShop
>
tshop
s
;
/**
* 无参数构造方法
...
...
@@ -132,12 +132,14 @@ public class TCustomer implements java.io.Serializable {
public
List
<
TShop
>
getTshop
()
{
return
tshop
;
public
List
<
TShop
>
getTshops
()
{
return
tshops
;
}
public
void
setTshop
(
List
<
TShop
>
tshop
)
{
this
.
tshop
=
tshop
;
public
void
setTshop
s
(
List
<
TShop
>
tshops
)
{
this
.
tshop
s
=
tshops
;
}
public
void
setToken
(
String
token
)
{
...
...
src/main/java/com/egolm/shop/service/CommonService.java
View file @
3b68e1c6
package
com
.
egolm
.
shop
.
service
;
import
java.util.List
;
import
com.egolm.shop.pojo.TCommon
;
public
interface
CommonService
{
/**
* 保存浏览记录
...
...
@@ -10,4 +14,6 @@ public interface CommonService {
* @param values
*/
public
void
saveViewHistory
(
String
zone
,
String
terminalTypeID
,
String
shopNO
,
String
viewTypeID
,
String
values
);
public
List
<
TCommon
>
getTCommon
(
String
commonNO
,
String
comID
);
}
src/main/java/com/egolm/shop/service/SystemCtrlService.java
View file @
3b68e1c6
package
com
.
egolm
.
shop
.
service
;
import
java.util.Map
;
public
interface
SystemCtrlService
{
public
String
queryTSystemCtrlByCode
(
String
sCode
,
String
langID
);
public
Map
<
String
,
Object
>
queryTSystemCtrlByCode
(
String
sCode
,
String
langID
);
}
src/main/java/com/egolm/shop/service/UserService.java
View file @
3b68e1c6
...
...
@@ -8,7 +8,15 @@ import com.egolm.shop.pojo.TShop;
public
interface
UserService
{
public
TCustomer
getCustomer
(
String
custNO
,
String
shopNO
);
public
TCustomer
getCustomer
(
String
mobile
);
public
TShop
getShop
(
String
shopNO
);
public
Map
<
String
,
Object
>
createGuest
(
Map
<
String
,
Object
>
params
);
public
String
login
(
Map
<
String
,
Object
>
params
)
;
public
String
modifyPwd
(
Map
<
String
,
Object
>
params
);
public
String
sendSms
(
Map
<
String
,
Object
>
params
);
}
src/main/java/com/egolm/shop/service/impl/CategoryServiceImpl.java
View file @
3b68e1c6
...
...
@@ -59,7 +59,7 @@ public class CategoryServiceImpl implements CategoryService {
}
return
Rjx
.
jsonOk
().
setData
(
list1
).
toJson
();
}
catch
(
Exception
e
)
{
return
Rjx
.
jsonErr
().
setMessage
(
"分类查询出错"
).
toJson
();
return
Rjx
.
jsonErr
().
set
Code
(-
1
).
set
Message
(
"分类查询出错"
).
toJson
();
}
}
...
...
src/main/java/com/egolm/shop/service/impl/CommonServiceImpl.java
View file @
3b68e1c6
package
com
.
egolm
.
shop
.
service
.
impl
;
import
java.util.List
;
import
org.apache.commons.logging.Log
;
import
org.apache.commons.logging.LogFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
com.egolm.common.StringUtil
;
import
com.egolm.common.jdbc.JdbcTemplate
;
import
com.egolm.common.jdbc.dialect.SqlServerDialect
;
import
com.egolm.shop.pojo.TCommon
;
import
com.egolm.shop.service.CommonService
;
@Service
...
...
@@ -25,6 +30,7 @@ public class CommonServiceImpl implements CommonService{
*/
public
void
saveViewHistory
(
String
zone
,
String
terminalTypeID
,
String
shopNO
,
String
viewTypeID
,
String
values
){
try
{
jdbcTemplate
.
setDialect
(
new
SqlServerDialect
());
String
checkSql
=
"SELECT "
+
" COUNT(1) "
+
"FROM "
...
...
@@ -57,4 +63,18 @@ public class CommonServiceImpl implements CommonService{
logger
.
error
(
"浏览记录保存失败"
+
e
);
}
}
public
List
<
TCommon
>
getTCommon
(
String
commonNO
,
String
comID
){
List
<
TCommon
>
commList
=
null
;
jdbcTemplate
.
setDialect
(
new
SqlServerDialect
());
String
sql
=
" SELECT * FROM tCommon WHERE nTag&1=0 AND sCommonNO = ? "
;
if
(
StringUtil
.
isNotEmpty
(
comID
))
{
sql
+=
" and sComID = ? "
;
commList
=
jdbcTemplate
.
queryForBeans
(
sql
,
TCommon
.
class
,
commonNO
,
comID
);
}
else
{
commList
=
jdbcTemplate
.
queryForBeans
(
sql
,
TCommon
.
class
,
commonNO
);
}
return
commList
;
}
}
src/main/java/com/egolm/shop/service/impl/GoodsServiceImpl.java
View file @
3b68e1c6
...
...
@@ -210,7 +210,7 @@ public class GoodsServiceImpl implements GoodsService {
//正式用户保存浏览记录
if
(!
customer
.
getsCustLeveTypeID
().
equals
(
ShopContstrant
.
GUEST_LEVEL_TYPE_ID
))
{
commonService
.
saveViewHistory
(
customer
.
getTshop
().
get
(
0
).
getsOrgNO
(),
terminal
,
shopNO
,
"1"
,
goodsID
);
commonService
.
saveViewHistory
(
customer
.
getTshop
s
().
get
(
0
).
getsOrgNO
(),
terminal
,
shopNO
,
"1"
,
goodsID
);
}
Map
<
String
,
Object
>
goodsDetailMap
=
jdbcTemplate
.
queryForMap
(
goodsInfoSql
);
...
...
@@ -277,7 +277,7 @@ public class GoodsServiceImpl implements GoodsService {
if
(
customer
==
null
)
{
return
Rjx
.
jsonErr
().
setMessage
(
"用户不存在"
).
toJson
();
}
TShop
shop
=
customer
.
getTshop
().
get
(
0
);
TShop
shop
=
customer
.
getTshop
s
().
get
(
0
);
String
districtID
=
shop
.
getsDistrictID
();
...
...
@@ -313,7 +313,7 @@ public class GoodsServiceImpl implements GoodsService {
return
Rjx
.
jsonOk
().
setMessage
(
"取消收藏成功"
).
toJson
();
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
Rjx
.
jsonErr
().
setMessage
(
"取消收藏失败"
).
toJson
();
return
Rjx
.
jsonErr
().
set
Code
(-
1
).
set
Message
(
"取消收藏失败"
).
toJson
();
}
}
else
if
(
"1"
.
equals
(
override
))
{
try
{
...
...
@@ -321,9 +321,9 @@ public class GoodsServiceImpl implements GoodsService {
return
Rjx
.
jsonOk
().
setMessage
(
"收藏成功"
).
toJson
();
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
Rjx
.
jsonErr
().
setMessage
(
"收藏失败"
).
toJson
();
return
Rjx
.
jsonErr
().
set
Code
(-
1
).
set
Message
(
"收藏失败"
).
toJson
();
}
}
return
Rjx
.
jsonErr
().
setMessage
(
"操作失败"
).
toJson
();
return
Rjx
.
jsonErr
().
set
Code
(-
1
).
set
Message
(
"操作失败"
).
toJson
();
}
}
src/main/java/com/egolm/shop/service/impl/GoodsSql.java
View file @
3b68e1c6
...
...
@@ -23,7 +23,7 @@ public class GoodsSql {
public
static
String
goodsInfoSql
(
TCustomer
customer
,
Map
<
String
,
Object
>
map
)
{
String
goodsID
=(
String
)
map
.
get
(
"goodsID"
);
String
contractNO
=(
String
)
map
.
get
(
"contractNO"
);
TShop
tshop
=
customer
.
getTshop
().
get
(
0
);
TShop
tshop
=
customer
.
getTshop
s
().
get
(
0
);
String
goodInfoSql
=
""
;
if
(
customer
.
getsCustLeveTypeID
().
equals
(
ShopContstrant
.
GUEST_LEVEL_TYPE_ID
))
{
//游客
goodInfoSql
=
"SELECT TOP 1 "
...
...
src/main/java/com/egolm/shop/service/impl/SystemCtrlServiceImpl.java
View file @
3b68e1c6
...
...
@@ -20,14 +20,14 @@ public class SystemCtrlServiceImpl implements SystemCtrlService {
private
JdbcTemplate
jdbcTemplate
;
public
String
queryTSystemCtrlByCode
(
String
sCode
,
String
langID
)
{
public
Map
<
String
,
Object
>
queryTSystemCtrlByCode
(
String
sCode
,
String
langID
)
{
try
{
String
sql
=
"select sDesc, sSysTypeID, sSysType, sValue1, sValue2, sValue3, sMemo from tSystemCtrl where sCode = ? and nTag&1 = 0"
;
Map
<
String
,
Object
>
mapRsult
=
jdbcTemplate
.
queryForMap
(
sql
,
sCode
);
return
Rjx
.
jsonOk
().
setData
(
mapRsult
).
toJson
()
;
return
mapRsult
;
}
catch
(
Exception
e
)
{
logger
.
error
(
"数据字典查询出错: "
+
e
.
getMessage
());
return
Rjx
.
jsonErr
().
setMessage
(
"数据字典查询出错"
).
toJson
()
;
return
null
;
}
}
}
src/main/java/com/egolm/shop/service/impl/UserServiceImpl.java
View file @
3b68e1c6
package
com
.
egolm
.
shop
.
service
.
impl
;
import
java.math.BigDecimal
;
import
java.text.MessageFormat
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -12,11 +15,18 @@ import org.springframework.beans.factory.annotation.Value;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.stereotype.Service
;
import
com.alibaba.fastjson.JSONObject
;
import
com.egolm.common.HttpsUtil
;
import
com.egolm.common.StringUtil
;
import
com.egolm.common.bean.Rjx
;
import
com.egolm.common.jdbc.JdbcTemplate
;
import
com.egolm.common.jdbc.dialect.SqlServerDialect
;
import
com.egolm.shop.encrypt.EgoPasswordEncoder
;
import
com.egolm.shop.pojo.TCommon
;
import
com.egolm.shop.pojo.TCustomer
;
import
com.egolm.shop.pojo.TShop
;
import
com.egolm.shop.service.CommonService
;
import
com.egolm.shop.service.SystemCtrlService
;
import
com.egolm.shop.service.UserService
;
import
com.egolm.shop.util.ShopContstrant
;
@Service
...
...
@@ -28,10 +38,19 @@ public class UserServiceImpl implements UserService {
@Value
(
"${redis.guest.key}"
)
private
String
guestRedisKey
;
@Value
(
"${redis.sms.code.key}"
)
private
String
smsCodeReidsKey
;
@Autowired
private
JdbcTemplate
jdbcTemplate
;
@Autowired
private
RedisTemplate
redisTemplate
;
@Autowired
private
CommonService
commonService
;
@Autowired
private
SystemCtrlService
systemCtlService
;
public
TCustomer
getCustomer
(
String
custNO
,
String
shopNO
)
{
if
(
custNO
.
contains
(
ShopContstrant
.
CUST_SIGN
))
{
...
...
@@ -43,12 +62,16 @@ public class UserServiceImpl implements UserService {
jdbcTemplate
.
setDialect
(
new
SqlServerDialect
());
TCustomer
tcustomer
=
jdbcTemplate
.
queryForBean
(
sql
,
TCustomer
.
class
,
custNO
);
List
<
TShop
>
shops
=
null
;
String
shopSql
=
"SELECT * FROM tShop WHERE nTag&1=0 and sCustNO =? "
;
if
(
StringUtil
.
isNotEmpty
(
shopNO
))
{
shopSql
+=
" AND sShopNO = ? "
;
shops
=
jdbcTemplate
.
queryForBeans
(
shopSql
,
TShop
.
class
,
custNO
.
trim
(),
shopNO
.
trim
());
}
else
{
shops
=
jdbcTemplate
.
queryForBeans
(
shopSql
,
TShop
.
class
,
custNO
.
trim
());
}
List
<
TShop
>
shops
=
jdbcTemplate
.
queryForBeans
(
shopSql
,
TShop
.
class
,
custNO
,
shopNO
);
tcustomer
.
setTshop
(
shops
);
tcustomer
.
setTshop
s
(
shops
);
return
tcustomer
;
}
catch
(
Exception
e
)
{
...
...
@@ -56,6 +79,17 @@ public class UserServiceImpl implements UserService {
return
null
;
}
}
public
TCustomer
getCustomer
(
String
mobile
)
{
try
{
String
sql
=
"SELECT * FROM tCustomer WHERE sMobile = ? AND nTag&1=0"
;
return
jdbcTemplate
.
queryForBean
(
sql
,
TCustomer
.
class
,
mobile
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
null
;
}
public
TShop
getShop
(
String
shopNO
)
{
if
(
StringUtil
.
isEmpty
(
shopNO
))
{
...
...
@@ -91,7 +125,7 @@ public class UserServiceImpl implements UserService {
List
<
TShop
>
listShop
=
new
ArrayList
<
TShop
>();
listShop
.
add
(
tshop
);
customer
.
setTshop
(
listShop
);
customer
.
setTshop
s
(
listShop
);
redisTemplate
.
opsForHash
().
put
(
guestRedisKey
,
custNO
,
customer
);
Map
<
String
,
Object
>
map
=
new
HashMap
<
String
,
Object
>();
...
...
@@ -106,4 +140,239 @@ public class UserServiceImpl implements UserService {
return
map
;
}
/**
* 登陆 优先级: 账号 > openID
* @Title: login
* @Description: TODO(这里用一句话描述这个方法的作用)
* @param: @param params
* @param: @return
* @return: String
* @throws
*/
public
String
login
(
Map
<
String
,
Object
>
params
)
{
String
userNO
=
params
.
get
(
"userNO"
)+
""
;
String
password
=
params
.
get
(
"password"
)+
""
;
String
openID
=
params
.
get
(
"openID"
)+
""
;
jdbcTemplate
.
setDialect
(
new
SqlServerDialect
());
if
(
StringUtil
.
isNotEmpty
(
userNO
))
{
//优先用户
EgoPasswordEncoder
epe
=
new
EgoPasswordEncoder
();
String
newPwd
=
epe
.
encode
(
userNO
+
password
);
System
.
out
.
println
(
"userNO----"
+
userNO
+
"-----newPwd---"
+
newPwd
);
String
checkUserSql
=
" SELECT count(1) FROM tCustomer t where nTag&1 = 0 and (t.sCustNO=? or t.sMobile =? or t.sCustName = ? ) and t.sPassword = ? "
;
int
i
=
jdbcTemplate
.
queryForInt
(
checkUserSql
,
userNO
,
userNO
,
userNO
,
newPwd
);
System
.
out
.
println
(
i
);
if
(
i
!=
0
)
{
if
(
StringUtil
.
isNotEmpty
(
openID
))
{
//openid不为空,则更新为新的
jdbcTemplate
.
update
(
"update tCustomer set sOpenID=null,dLastUpdateTime=GETDATE() where sOpenID='"
+
openID
+
"' "
);
jdbcTemplate
.
executeUpdate
(
"update tCustomer set sOpenID=?, sBindOpenID=?, dLastUpdateTime=GETDATE() where sCustNO=?"
,
openID
,
openID
,
userNO
);
}
return
Rjx
.
jsonOk
().
set
(
"custNO"
,
userNO
).
setMessage
(
"登陆成功"
).
toJson
();
}
else
{
return
Rjx
.
jsonErr
().
setCode
(-
1
).
setMessage
(
"用户名或密码错误"
).
toJson
();
}
}
else
{
if
(
StringUtil
.
isNotEmpty
(
openID
))
{
//openID登陆
String
checkOpenSql
=
" SELECT t.sCustNO FROM tCustomer t where t.sOpenID =? and nTag&1 = 0 "
;
List
<
Map
<
String
,
Object
>>
list
=
jdbcTemplate
.
queryForList
(
checkOpenSql
,
openID
.
trim
());
if
(
list
!=
null
)
{
if
(
list
.
size
()
==
1
)
{
Map
<
String
,
Object
>
map
=
list
.
get
(
0
);
String
custNO
=
map
.
get
(
"sCustNO"
)+
""
;
return
Rjx
.
jsonOk
().
setMessage
(
"登陆成功"
).
set
(
"custNO"
,
custNO
).
toJson
();
}
else
{
return
Rjx
.
jsonErr
().
setCode
(-
1
).
setMessage
(
"登陆失败"
).
set
(
"errorMsg"
,
"openID存在多条数据"
).
toJson
();
}
}
else
{
return
Rjx
.
jsonErr
().
setCode
(-
1
).
setMessage
(
"登陆失败"
).
set
(
"errorMsg"
,
"openId不存在"
).
toJson
();
}
}
}
return
Rjx
.
jsonErr
().
setCode
(-
1
).
setMessage
(
"登陆失败"
).
toJson
();
}
/**
* 修改密码
* @Title: modifyPwd
* @Description: TODO(这里用一句话描述这个方法的作用)
* @param: @param params
* @param: @return
* @return: String
* @throws
*/
public
String
modifyPwd
(
Map
<
String
,
Object
>
params
)
{
String
mobile
=
params
.
get
(
"mobile"
)+
""
;
String
password
=
params
.
get
(
"password"
)+
""
;
String
smsCode
=
params
.
get
(
"smsCode"
)+
""
;
String
smsTmpID
=
params
.
get
(
"smsTmpID"
)+
""
;
//检查手机号是否存在
TCustomer
customer
=
getCustomer
(
mobile
);
if
(
customer
==
null
)
{
return
Rjx
.
jsonErr
().
setCode
(-
1
).
setMessage
(
"手机号不存在"
).
toJson
();
}
//验证redis中是否在短信验证码
if
(
isCheckCodeByRedis
(
mobile
,
smsTmpID
))
{
String
redisCode
=
(
String
)
redisTemplate
.
opsForHash
().
get
(
smsCodeReidsKey
,
mobile
+
"_"
+
smsTmpID
);
System
.
out
.
println
(
"smsCode-----"
+
smsCode
);
System
.
out
.
println
(
"redisCode-----"
+
redisCode
);
if
(!
smsCode
.
equals
(
redisCode
))
{
return
Rjx
.
jsonOk
().
setCode
(-
1
).
setMessage
(
"验证码不匹配"
).
toJson
();
}
else
{
redisTemplate
.
opsForHash
().
delete
(
smsCodeReidsKey
,
mobile
+
"_"
+
smsTmpID
);
}
}
//较验
jdbcTemplate
.
setDialect
(
new
SqlServerDialect
());
EgoPasswordEncoder
epe
=
new
EgoPasswordEncoder
();
String
newPwd
=
epe
.
encode
(
mobile
+
password
);
String
updateSql
=
"UPDATE tCustomer SET sPassword = ? ,dLastUpdateTime = getdate() WHERE sMobile = ? AND nTag&1=0 "
;
int
i
=
jdbcTemplate
.
update
(
updateSql
,
newPwd
,
mobile
);
if
(
i
>
0
)
{
return
Rjx
.
jsonOk
().
setMessage
(
"密码修改成功"
).
toJson
();
}
else
{
return
Rjx
.
jsonOk
().
setCode
(-
1
).
setMessage
(
"密码修改失败"
).
toJson
();
}
}
/**
* 发送短信
* <p>Title: sendSms</p>
* <p>Description: </p>
* content 根据模板 对应多个参数,以逗号分隔 模板格式示例: 这是是一个{0}的模板{1}
* @param params
* @return
* @see com.egolm.shop.service.UserService#sendSms(java.util.Map)
*/
@Override
public
String
sendSms
(
Map
<
String
,
Object
>
params
)
{
String
mobile
=
params
.
get
(
"mobile"
)+
""
;
String
content
=
params
.
get
(
"content"
)+
""
;
String
smsTmpID
=
params
.
get
(
"smsTmpID"
)+
""
;
String
langID
=
params
.
get
(
"langID"
)+
""
;
content
=
getSmsContent
(
mobile
,
content
,
smsTmpID
);
if
(!
StringUtil
.
isNotEmpty
(
content
))
{
return
Rjx
.
jsonErr
().
setCode
(-
1
).
setMessage
(
"短信发送失败"
).
set
(
"errorMsg"
,
"短信内容不能为空"
).
toJson
();
}
return
sendCallSms
(
mobile
,
content
,
langID
);
}
/**
* 调用短信sms服务,发送短信
* @Title: sendCallSms
* @Description: TODO(这里用一句话描述这个方法的作用)
* @param: @param mobile
* @param: @param content
* @param: @param langID
* @param: @return
* @return: String
* @throws
*/
private
String
sendCallSms
(
String
mobile
,
String
content
,
String
langID
)
{
jdbcTemplate
.
setDialect
(
new
SqlServerDialect
());
Map
<
String
,
Object
>
ctrlMap
=
systemCtlService
.
queryTSystemCtrlByCode
(
ShopContstrant
.
CHOICE_SMS_KEY
,
langID
);
if
(
ctrlMap
!=
null
)
{
String
value1
=
ctrlMap
.
get
(
"sValue1"
)+
""
;
if
(
StringUtil
.
isNotEmpty
(
value1
))
{
Map
<
String
,
Object
>
smsCtrlMap
=
systemCtlService
.
queryTSystemCtrlByCode
(
value1
,
langID
);
if
(
smsCtrlMap
!=
null
)
{
String
smsType
=
smsCtrlMap
.
get
(
"sValue1"
)+
""
;
String
smsMd5
=
smsCtrlMap
.
get
(
"sValue2"
)+
""
;
String
smsUrl
=
smsCtrlMap
.
get
(
"sValue3"
)+
""
;
Map
<
String
,
String
>
smsMap
=
new
HashMap
<
String
,
String
>();
smsMap
.
put
(
"mobile"
,
mobile
);
smsMap
.
put
(
"content"
,
content
);
smsMap
.
put
(
"timestamp"
,
(
new
Date
().
getTime
())+
""
);
smsMap
.
put
(
"smsType"
,
smsType
);
smsMap
.
put
(
"md5Key"
,
smsMd5
);
String
sign
=
StringUtil
.
doMD5Sign
(
smsMap
);
smsMap
.
remove
(
"md5Key"
);
smsMap
.
put
(
"sign"
,
sign
);
String
smsResult
=
HttpsUtil
.
doGet
(
smsUrl
,
smsMap
);
JSONObject
jsonObj
=
JSONObject
.
parseObject
(
smsResult
);
boolean
flag
=
jsonObj
.
getBoolean
(
"isValid"
);
System
.
out
.
println
(
"jsonObj----"
+
jsonObj
);
if
(
flag
)
{
return
Rjx
.
jsonOk
().
setMessage
(
"短信发送成功"
).
toJson
();
}
else
{
return
Rjx
.
jsonErr
().
setCode
(-
1
).
setMessage
(
"短信发送失败"
).
set
(
"errorMsg"
,
jsonObj
.
get
(
"msg"
)).
toJson
();
}
}
else
{
return
Rjx
.
jsonErr
().
setCode
(-
1
).
setMessage
(
"短信发送失败"
).
set
(
"errorMsg"
,
"短信网关未配置"
).
toJson
();
}
}
else
{
return
Rjx
.
jsonErr
().
setCode
(-
1
).
setMessage
(
"短信发送失败"
).
set
(
"errorMsg"
,
"短信选择器未配置"
).
toJson
();
}
}
else
{
return
Rjx
.
jsonErr
().
setCode
(-
1
).
setMessage
(
"短信发送失败"
).
set
(
"errorMsg"
,
"短信选择器参数未配置"
).
toJson
();
}
}
/**
* 格式化短信模板为短信内容
* @Title: getSmsContent
* @Description: TODO(这里用一句话描述这个方法的作用)
* @param: @param content
* @param: @param smsTmpID
* @param: @return
* @return: String
* @throws
*/
private
String
getSmsContent
(
String
mobile
,
String
content
,
String
smsTmpID
)
{
List
<
TCommon
>
commList
=
commonService
.
getTCommon
(
ShopContstrant
.
SMS_TEMPLATE_CODE
,
smsTmpID
);
if
(
commList
!=
null
&&
commList
.
size
()>
0
)
{
TCommon
common
=
commList
.
get
(
0
);
String
text
=
common
.
getsText1
();
BigDecimal
num
=
common
.
getnNum1
();
if
(
smsTmpID
.
equals
(
"1"
))
{
//验证码短信 num1字段0值表示由前端自已生成验证码并存储,1值为由后端生成并缓存验证码至redis ,修改时需要验证
if
(
num
.
compareTo
(
new
BigDecimal
(
1
))
==
0
)
{
content
=
StringUtil
.
getRandom
(
6
);
redisTemplate
.
opsForHash
().
put
(
smsCodeReidsKey
,
mobile
.
trim
()+
"_"
+
smsTmpID
,
content
);
}
}
String
[]
objs
=
content
.
split
(
","
);
text
=
MessageFormat
.
format
(
text
,
objs
);
return
text
;
}
else
{
return
null
;
}
}
/**
* 判断验证码是否要与redis中进行验证
* @Title: isCheckCodeByRedis
* @Description: num1字段0值表示由前端自已生成验证码并存储,1值为由后端生成并缓存验证码至redis
* @param: @param mobile
* @param: @param smsTmpID
* @param: @return
* @return: boolean
* @throws
*/
public
boolean
isCheckCodeByRedis
(
String
mobile
,
String
smsTmpID
)
{
List
<
TCommon
>
commList
=
commonService
.
getTCommon
(
ShopContstrant
.
SMS_TEMPLATE_CODE
,
smsTmpID
);
if
(
commList
!=
null
&&
commList
.
size
()>
0
)
{
TCommon
common
=
commList
.
get
(
0
);
BigDecimal
num
=
common
.
getnNum1
();
if
(
num
.
compareTo
(
new
BigDecimal
(
1
))
==
0
)
{
return
true
;
}
}
return
false
;
}
}
src/main/java/com/egolm/shop/util/ShopContstrant.java
View file @
3b68e1c6
...
...
@@ -5,4 +5,10 @@ public class ShopContstrant {
public
static
final
String
CUST_SIGN
=
"T_"
;
//游客账号标记
public
static
final
String
GUEST_LEVEL_TYPE_ID
=
"-1"
;
// 游客 custLevelTypeID 状态
//短信
public
static
final
String
CHOICE_SMS_KEY
=
"ChoiceSmsKey"
;
// 短信选择器
public
static
final
String
SMS_TEMPLATE_CODE
=
"SmsTemplate"
;
//模板字典 code tcommon表
}
src/main/resources/application-dev.properties
View file @
3b68e1c6
...
...
@@ -32,4 +32,7 @@ spring.redis.pool.max-wait=2000
spring.redis.pool.max-idle
=
5
spring.redis.pool.min-idle
=
0
redis.guest.key
=
B2B_Guest
\ No newline at end of file
### 游客 用户生成用户的前缀
redis.guest.key
=
B2B_Guest
#### 用户验证码存储的前缀
redis.sms.code.key
=
B2B_Sms
\ No newline at end of file
Write
Preview
Markdown
is supported
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