修改了表结构
diff --git a/config/application-devel-pg-local.properties b/config/application-devel-pg-local.properties
index 3602345..175bb6b 100644
--- a/config/application-devel-pg-local.properties
+++ b/config/application-devel-pg-local.properties
@@ -16,3 +16,5 @@
jwt.secret=Zj5taLomEbrM0lk+NMQZbHfSxaDU1wekjT+kiC3YzDw=
# timeout seconds
jwt.expiration=3600
+# user password
+auth.password.bcrypt.seed=
diff --git a/src/main/java/com/supwisdom/dlpay/consume/domain/TAccount.java b/src/main/java/com/supwisdom/dlpay/consume/domain/TAccount.java
index 9dd87c1..d4a4d21 100644
--- a/src/main/java/com/supwisdom/dlpay/consume/domain/TAccount.java
+++ b/src/main/java/com/supwisdom/dlpay/consume/domain/TAccount.java
@@ -7,7 +7,9 @@
import javax.persistence.*;
@Entity
-@Table(name = "TB_ACCOUNT")
+@Table(name = "TB_ACCOUNT",
+ indexes = {@Index(name = "acc_userid_idx", columnList = "userid"),
+ @Index(name = "acc_status_idx", columnList = "status")})
public class TAccount {
@Id
@GenericGenerator(name = "idGenerator", strategy = "uuid")
@@ -15,52 +17,52 @@
@Column(name = "ACCNO", nullable = false, length = 32)
private String accno; //账号
- @Column(name="ACCNAME", length = 100)
+ @Column(name = "ACCNAME", length = 100)
private String accname; //账户名
- @Column(name="SUBJNO", length = 10)
+ @Column(name = "SUBJNO", length = 10)
private String subjno; //科目号
- @Column(name="USERID", nullable = false, length = 32)
+ @Column(name = "USERID", nullable = false, length = 32)
private String userid; //用户ID
- @Column(name="STATUS", nullable = false, length = 20)
+ @Column(name = "STATUS", nullable = false, length = 20)
private String status; //状态:normal-正常;closed-注销;locked-冻结
- @Column(name="BALANCE", nullable = false, precision = 15, scale = 2)
+ @Column(name = "BALANCE", nullable = false, precision = 15, scale = 2)
private Double balance; //总余额
- @Column(name="AVAILBAL", nullable = false, precision = 15, scale = 2)
+ @Column(name = "AVAILBAL", nullable = false, precision = 15, scale = 2)
private Double availbal; //可用余额
- @Column(name="FROZEBAL", nullable = false, precision = 15, scale = 2)
+ @Column(name = "FROZEBAL", nullable = false, precision = 15, scale = 2)
private Double frozebal; //冻结金额
- @Column(name="LOWFREE_FLAG", nullable = false, precision = 1, scale = 0)
+ @Column(name = "LOWFREE_FLAG", nullable = false, precision = 1, scale = 0)
private Boolean lowfreeFlag; //低额免密开关
- @Column(name="LOWFREE_LIMIT", precision = 9, scale = 2)
+ @Column(name = "LOWFREE_LIMIT", precision = 9, scale = 2)
private Double lowfreeLimit; //免密额度
- @Column(name="DAYLIMIT", precision = 9, scale = 2)
+ @Column(name = "DAY_LIMIT", precision = 9, scale = 2)
private Double daylimit; // 日累计消费额度
- @Column(name="MAXBAL", precision = 15, scale = 2)
+ @Column(name = "MAX_BAL", precision = 15, scale = 2)
private Double maxbal; // 最大余额限制
- @Column(name = "LASTTRANSDATE", length = 8)
+ @Column(name = "LAST_TRANSDATE", length = 8)
private String lasttransdate; //最后交易日期
- @Column(name="LASTDAY_TRANSAMT", precision = 9, scale = 2)
+ @Column(name = "LASTDAY_TRANSAMT", precision = 9, scale = 2)
private Double lastdayTransamt; //最后一天消费金额
- @Column(name="LASTDAY_DPSAMT", precision = 9, scale = 2)
+ @Column(name = "LASTDAY_DPSAMT", precision = 9, scale = 2)
private Double lastdayDpsamt; //最后一天充值金额
- @Column(name="TAC", length = 32)
+ @Column(name = "TAC", length = 32)
private String tac; //校验
- @Column(name="OPENDATE", nullable = false, length = 8)
+ @Column(name = "OPENDATE", nullable = false, length = 8)
private String opendate;
@Column(name = "CLOSEDATE", length = 8)
@@ -233,14 +235,14 @@
this.closedate = closedate;
}
- public String generateTac(){
- String data = this.accno+ MoneyUtil.YuanToFen(this.availbal)+MoneyUtil.YuanToFen(this.balance)+MoneyUtil.YuanToFen(this.frozebal);
+ public String generateTac() {
+ String data = this.accno + MoneyUtil.YuanToFen(this.availbal) + MoneyUtil.YuanToFen(this.balance) + MoneyUtil.YuanToFen(this.frozebal);
return MD5.generatePassword(data, this.accno);
}
- public boolean tacCheck(){
+ public boolean tacCheck() {
String tac_c = generateTac();
- if (tac_c.equalsIgnoreCase(this.tac)||this.tac==null) {
+ if (tac_c.equalsIgnoreCase(this.tac) || this.tac == null) {
return true;
}
return false;
@@ -252,9 +254,9 @@
this.tac = this.generateTac();
}
- public boolean checkOverflow(){
- if(null!=this.maxbal && this.maxbal>0){
- if(MoneyUtil.moneyCompare(this.balance,this.maxbal)>0){
+ public boolean checkOverflow() {
+ if (null != this.maxbal && this.maxbal > 0) {
+ if (MoneyUtil.moneyCompare(this.balance, this.maxbal) > 0) {
return true; //超出账户最大值
}
}
diff --git a/src/main/java/com/supwisdom/dlpay/consume/domain/TPerson.java b/src/main/java/com/supwisdom/dlpay/consume/domain/TPerson.java
index c5bceb6..cfe4872 100644
--- a/src/main/java/com/supwisdom/dlpay/consume/domain/TPerson.java
+++ b/src/main/java/com/supwisdom/dlpay/consume/domain/TPerson.java
@@ -5,7 +5,8 @@
import javax.persistence.*;
@Entity
-@Table(name = "TB_PERSON")
+@Table(name = "TB_PERSON",
+ indexes = {@Index(name = "person_name_idx", columnList = "name")})
public class TPerson {
@Id
@GenericGenerator(name = "idGenerator", strategy = "uuid")
@@ -19,7 +20,7 @@
@Column(name = "SEX", length = 10)
private String sex;
- @Column(name = "STATUS",nullable = false, length = 10)
+ @Column(name = "STATUS", nullable = false, length = 10)
private String status;
@Column(name = "IDTYPE", length = 20)
@@ -54,7 +55,7 @@
/**
* 第三方唯一标识,可为学工号,银行卡号等
- * */
+ */
@Column(name = "THIRD_UNIQUE_IDENTY", length = 32)
private String thirdUniqueIdenty;
diff --git a/src/main/java/com/supwisdom/dlpay/consume/domain/TUserdtl.java b/src/main/java/com/supwisdom/dlpay/consume/domain/TUserdtl.java
index 4b59d98..5826052 100644
--- a/src/main/java/com/supwisdom/dlpay/consume/domain/TUserdtl.java
+++ b/src/main/java/com/supwisdom/dlpay/consume/domain/TUserdtl.java
@@ -1,12 +1,13 @@
package com.supwisdom.dlpay.consume.domain;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.Table;
+import javax.persistence.*;
@Entity
-@Table(name = "TB_USERDTL")
+@Table(name = "TB_USERDTL",
+ indexes = {@Index(name = "userdtl_transdate_idx", columnList = "transdate"),
+ @Index(name = "userdtl_accdate_idx", columnList = "accdate"),
+ @Index(name = "userdtl_status_idx", columnList = "status"),
+ @Index(name = "userdtl_reverse_idx", columnList = "REVERSE_FLAG")})
public class TUserdtl {
@Id
@Column(name = "REFNO", nullable = false, length = 32)
diff --git a/src/main/java/com/supwisdom/dlpay/framework/core/PasswordBCryptConfig.java b/src/main/java/com/supwisdom/dlpay/framework/core/PasswordBCryptConfig.java
new file mode 100644
index 0000000..1743e2e
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/framework/core/PasswordBCryptConfig.java
@@ -0,0 +1,28 @@
+package com.supwisdom.dlpay.framework.core;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class PasswordBCryptConfig {
+ @Value("${auth.password.bcrypt.length:10}")
+ private Integer length;
+ @Value("${auth.password.bcrypt.seed}")
+ private String seed = "";
+
+ public Integer getLength() {
+ return length;
+ }
+
+ public void setLength(Integer length) {
+ this.length = length;
+ }
+
+ public String getSeed() {
+ return seed;
+ }
+
+ public void setSeed(String seed) {
+ this.seed = seed;
+ }
+}
diff --git a/src/main/java/com/supwisdom/dlpay/framework/dao/OperRoleDao.java b/src/main/java/com/supwisdom/dlpay/framework/dao/OperRoleDao.java
index 72dc37a..292a999 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/dao/OperRoleDao.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/dao/OperRoleDao.java
@@ -10,6 +10,6 @@
@Repository
public interface OperRoleDao extends JpaRepository<TOperRole, String> {
- @Query(value = "select distinct role_code from TB_OPER_ROLE a,TB_ROLE b where a.role_id=b.role_id and a.operid=?1", nativeQuery = true)
+ @Query(value = "select distinct rolecode from TB_OPER_ROLE a,TB_ROLE b where a.roleid=b.roleid and a.operid=?1", nativeQuery = true)
List<String> getRolecodeByOperid(String operid);
}
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TFunction.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TFunction.java
index 5b7beab..8c135e8 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TFunction.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TFunction.java
@@ -13,22 +13,22 @@
@Column(name="ID", nullable = false, length = 32)
private String id;
- @Column(name="PARENT_ID", length = 32)
+ @Column(name="PARENTID", length = 32)
private String parentId;
@Column(name="NAME", length = 32)
private String name;
- @Column(name="MENU_URL", nullable = false, length = 60)
+ @Column(name="MENUURL", nullable = false, length = 60)
private String menuUrl; //菜单url
- @Column(name="IS_LEAF", nullable = false, precision = 1)
+ @Column(name="ISLEAF", nullable = false, precision = 1)
private Integer isLeaf;
- @Column(name="ORDER_NUM", precision = 9)
+ @Column(name="ORDERNUM", precision = 9)
private Integer orderNum;
- @Column(name="MENU_ICON", precision = 9)
+ @Column(name="MENUICON", precision = 9)
private String menuIcon;
@Column(name="CREATETIME", length = 14)
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TOperRole.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TOperRole.java
index f889fac..d17c273 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TOperRole.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TOperRole.java
@@ -5,18 +5,19 @@
import javax.persistence.*;
@Entity
-@Table(name = "TB_OPER_ROLE")
+@Table(name = "TB_OPER_ROLE",
+ indexes = {@Index(name = "operrole_operid_idx", columnList = "operid")})
public class TOperRole {
@Id
@GenericGenerator(name = "idGenerator", strategy = "uuid")
@GeneratedValue(generator = "idGenerator")
- @Column(name="ID", nullable = false, length = 32)
+ @Column(name = "ID", nullable = false, length = 32)
private String id;
- @Column(name="ROLE_ID", nullable = false, length = 32)
+ @Column(name = "ROLEID", nullable = false, length = 32)
private String roleId;
- @Column(name="OPERID", nullable = false, length = 32)
+ @Column(name = "OPERID", nullable = false, length = 32)
private String operid;
public String getId() {
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TOperator.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TOperator.java
index 6285302..520f19a 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TOperator.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TOperator.java
@@ -9,33 +9,34 @@
import java.util.Collection;
@Entity
-@Table(name = "TB_OPERATOR")
+@Table(name = "TB_OPERATOR",
+ indexes = {@Index(name = "opercode_idx", columnList = "OPERCODE", unique = true)})
public class TOperator implements UserDetails {
@Id
@GenericGenerator(name = "idGenerator", strategy = "uuid")
@GeneratedValue(generator = "idGenerator")
- @Column(name="OPERID", nullable = false, length = 32)
+ @Column(name = "OPERID", nullable = false, length = 32)
private String operid;
- @Column(name="OPERCODE", nullable = false, length = 20)
+ @Column(name = "OPERCODE", nullable = false, length = 20)
private String opercode;
- @Column(name="OPERTYPE", nullable = false, length = 20)
+ @Column(name = "OPERTYPE", nullable = false, length = 20)
private String opertype;
- @Column(name="OPERNAME", nullable = false, length = 100)
+ @Column(name = "OPERNAME", nullable = false, length = 100)
private String opername;
- @Column(name="OPERPWD", nullable = false, length = 80)
+ @Column(name = "OPERPWD", nullable = false, length = 80)
private String operpwd;
- @Column(name="STATUS", nullable = false, length = 32)
+ @Column(name = "STATUS", nullable = false, length = 32)
private String status;
- @Column(name="OPENDATE", length = 8)
+ @Column(name = "OPENDATE", length = 8)
private String opendate;
- @Column(name="CLOSEDATE", length = 8)
+ @Column(name = "CLOSEDATE", length = 8)
private String closedate;
@Transient
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TRole.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TRole.java
index 6be9d78..3112259 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TRole.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TRole.java
@@ -10,16 +10,16 @@
@Id
@GenericGenerator(name = "idGenerator", strategy = "uuid")
@GeneratedValue(generator = "idGenerator")
- @Column(name="ROLE_ID", nullable = false, length = 32)
+ @Column(name="ROLEID", nullable = false, length = 32)
private String roleId;
- @Column(name="ROLE_NAME", nullable = false, length = 60)
+ @Column(name="ROLENAME", nullable = false, length = 60)
private String roleName;
- @Column(name="ROLE_CODE", nullable = false, length = 20)
+ @Column(name="ROLECODE", nullable = false, length = 20)
private String roleCode;
- @Column(name="ROLE_DESC", length = 60)
+ @Column(name="ROLEDESC", length = 60)
private String roleDesc;
@Column(name="EDITFLAG", length = 60)
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TRoleFunction.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TRoleFunction.java
index 3475cd3..91f4307 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TRoleFunction.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TRoleFunction.java
@@ -13,10 +13,10 @@
@Column(name="ID", nullable = false, length = 32)
private String id;
- @Column(name="ROLE_ID", nullable = false, length = 32)
+ @Column(name="ROLEID", nullable = false, length = 32)
private String roleId;
- @Column(name="FUNCTION_ID", nullable = false, length = 32)
+ @Column(name="FUNCTIONID", nullable = false, length = 32)
private String functionId;
public String getId() {
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TSettlectl.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TSettlectl.java
index 80895c6..73dbf10 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TSettlectl.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TSettlectl.java
@@ -12,10 +12,10 @@
@Column(name="BOOKSETNO", nullable = false, precision = 2)
private Integer booksetno;
- @Column(name="PERIOD_YEAR", nullable = false, precision = 4)
+ @Column(name="PERIODYEAR", nullable = false, precision = 4)
private Integer periodYear;
- @Column(name="PERIOD_MONTH", nullable = false, precision = 2)
+ @Column(name="PERIODMONTH", nullable = false, precision = 2)
private Integer periodMonth;
@Column(name="STATDATE", precision = 8)
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TVoucher.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TVoucher.java
index d2faa89..7f42c1f 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TVoucher.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TVoucher.java
@@ -13,10 +13,10 @@
@Column(name="VOUCHERID", nullable = false, length = 32)
private String voucherid;
- @Column(name="PERIOD_YEAR", precision = 8)
+ @Column(name="PERIODYEAR", precision = 8)
private Integer periodYear;
- @Column(name="PERIOD_MONTH", precision = 2)
+ @Column(name="PERIODMONTH", precision = 2)
private Integer periodMonth;
@Column(name="VOUCHERNO", precision = 9)
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TVouchernoCtl.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TVouchernoCtl.java
index 8b010c4..24f75c3 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TVouchernoCtl.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TVouchernoCtl.java
@@ -12,7 +12,7 @@
@Column(name="VOUCHERTYPE", nullable = false, precision = 2)
private Integer vouchertype;
- @Column(name="PERIOD_MONTH", nullable = false, precision = 2)
+ @Column(name="PERIODMONTH", nullable = false, precision = 2)
private Integer periodMonth;
@Column(name = "VOUCHERNO", nullable = false, precision = 9)
diff --git a/src/main/kotlin/com/supwisdom/dlpay/framework/controller/security_controller.kt b/src/main/kotlin/com/supwisdom/dlpay/framework/controller/security_controller.kt
index 147270b..5bcea3a 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/framework/controller/security_controller.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/framework/controller/security_controller.kt
@@ -15,6 +15,7 @@
import com.supwisdom.dlpay.framework.util.HmacUtil
import com.supwisdom.dlpay.system.service.CommonService
import com.supwisdom.dlpay.system.service.FunctionService
+import mu.KotlinLogging
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.http.HttpStatus
import org.springframework.http.ResponseEntity
@@ -122,10 +123,10 @@
}
-data class LoginForm(val username: String, val password: String, val imageCode: String)
-
@Controller
class WebHomeController {
+
+ private val logger = KotlinLogging.logger {}
@Autowired
lateinit var functionService: FunctionService
@Autowired
@@ -137,12 +138,13 @@
@GetMapping("/logout")
fun logout(request: HttpServletRequest, response: HttpServletResponse): String {
SecurityContextHolder.getContext().authentication?.also {
+ logger.debug { "user logout!!" }
SecurityContextLogoutHandler().logout(request, response, it)
}
return "redirect:/login?logout"
}
- @GetMapping("/index")
+ @GetMapping(value = ["/", "/index"])
fun homeView(@AuthenticationPrincipal operUser: UserDetails, model: Model): String {
model.addAttribute("loginOper", operUser as TOperator)
val funclist = functionService.getFunctionsByOperid(operUser.operid)
diff --git a/src/main/kotlin/com/supwisdom/dlpay/security.kt b/src/main/kotlin/com/supwisdom/dlpay/security.kt
index 5b375ff..491cc46 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/security.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/security.kt
@@ -2,6 +2,7 @@
import com.supwisdom.dlpay.framework.core.JwtConfig
import com.supwisdom.dlpay.framework.core.JwtTokenUtil
+import com.supwisdom.dlpay.framework.core.PasswordBCryptConfig
import com.supwisdom.dlpay.framework.security.ValidateCodeSecurityConfig
import com.supwisdom.dlpay.framework.service.OperatorDetailService
import org.jose4j.jwt.consumer.InvalidJwtException
@@ -26,6 +27,7 @@
import org.springframework.security.web.authentication.rememberme.JdbcTokenRepositoryImpl
import org.springframework.security.web.util.matcher.AntPathRequestMatcher
import org.springframework.web.filter.OncePerRequestFilter
+import java.security.SecureRandom
import javax.servlet.FilterChain
import javax.servlet.http.HttpServletRequest
import javax.servlet.http.HttpServletResponse
@@ -54,7 +56,6 @@
@EnableWebSecurity
class WebSecurityConfig {
-
companion object {
@Configuration
@Order(1)
@@ -94,6 +95,8 @@
lateinit var authenticationFailureHandler: AuthenticationFailureHandler
@Autowired
lateinit var authenticationSuccessHandler: AuthenticationSuccessHandler
+ @Autowired
+ lateinit var passwordBCryptConfig: PasswordBCryptConfig
@Autowired
@@ -113,7 +116,12 @@
@Bean
fun passwordEncoder(): BCryptPasswordEncoder {
- return BCryptPasswordEncoder()
+ return if (passwordBCryptConfig.seed.isBlank()) {
+ BCryptPasswordEncoder()
+ } else {
+ BCryptPasswordEncoder(passwordBCryptConfig.length,
+ SecureRandom(passwordBCryptConfig.seed.toByteArray()))
+ }
}
@Bean
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index 6abc8d8..b54e727 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -18,3 +18,8 @@
spring.thymeleaf.mode=HTML5
spring.thymeleaf.cache=false
spring.thymeleaf.enabled=true
+
+################################################
+# user password
+auth.password.bcrypt.length=10
+