增加了水控终端api
diff --git a/build.gradle b/build.gradle
index a6a32e0..d3010be 100644
--- a/build.gradle
+++ b/build.gradle
@@ -24,6 +24,9 @@
}
dependencies {
+ compile(
+ 'net.sf.json-lib:json-lib:2.4:jdk15'
+ )
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
implementation 'org.springframework.boot:spring-boot-starter-web'
diff --git a/src/main/java/com/supwisdom/dlpay/api/dao/PersonDao.java b/src/main/java/com/supwisdom/dlpay/api/dao/PersonDao.java
index df40228..8cea051 100644
--- a/src/main/java/com/supwisdom/dlpay/api/dao/PersonDao.java
+++ b/src/main/java/com/supwisdom/dlpay/api/dao/PersonDao.java
@@ -19,4 +19,5 @@
TPerson findByUserid(String userid);
Page<TPerson> findAllByNameContaining(String name, Pageable pageable);
+
}
diff --git a/src/main/java/com/supwisdom/dlpay/api/domain/TPointsTransdtl.java b/src/main/java/com/supwisdom/dlpay/api/domain/TPointsTransdtl.java
index dba4514..6e6f572 100644
--- a/src/main/java/com/supwisdom/dlpay/api/domain/TPointsTransdtl.java
+++ b/src/main/java/com/supwisdom/dlpay/api/domain/TPointsTransdtl.java
@@ -7,7 +7,7 @@
*/
@Entity
@Table(name = "TB_POINTS_TRANSDTL",
- indexes = {@Index(name = "points_transdtl_idx", columnList = "billno")})
+ indexes = {@Index(name = "points_transdtl_idx", columnList = "refno")})
public class TPointsTransdtl {
@Id
@Column(name="REFNO", nullable = false, length = 32)
diff --git a/src/main/java/com/supwisdom/dlpay/framework/util/ShortURLUtil.java b/src/main/java/com/supwisdom/dlpay/framework/util/ShortURLUtil.java
new file mode 100644
index 0000000..74177f5
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/framework/util/ShortURLUtil.java
@@ -0,0 +1,55 @@
+package com.supwisdom.dlpay.framework.util;
+
+import com.sun.deploy.net.URLEncoder;
+import com.supwisdom.dlpay.framework.util.MD5;
+import net.sf.json.JSONObject;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.net.HttpURLConnection;
+import java.net.URL;
+
+public class ShortURLUtil {
+
+ public static String doGetSinaShortUrl(String longUrl) {
+ String shortUrlService = "http://www.mynb8.com/api/sina"; //新浪服务网址
+ String sinaAppkey = "2223392143"; //注册申请
+ String result = "";
+ BufferedReader in = null;
+ try {
+ String encLongUrl = URLEncoder.encode(longUrl, "UTF-8");
+ String sign = MD5.encodeByMD5(sinaAppkey.trim() + MD5.encodeByMD5(encLongUrl).toLowerCase()).toLowerCase(); //md5(appkey+md5(long_url)) 小写
+ //http://www.mynb8.com/api/sina?appkey=APPKEY&sign=SIGN&long_url=LONG_URL
+ String serviceUrl = shortUrlService + "?appkey=" + sinaAppkey + "&sign=" + sign + "&long_url=" + encLongUrl;
+ String address = "http://api.t.sina.com.cn/short_url/shorten.json?source=2223392143";
+ address += "&url_long=" + URLEncoder.encode(longUrl, "UTF-8");
+ URL url = new URL(address);
+ HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+ conn.setRequestMethod("GET");
+ conn.setConnectTimeout(5 * 1000);
+ in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
+ String line;
+ while ((line = in.readLine()) != null) {
+ result += line;
+ }
+ //[{"url_short":"http://t.cn/Ai0aAb8p","url_long":"http://172.28.43.20:8080/water/api/confirm?refno=11","type":0}]
+ result = result.substring(1, result.length() - 1);
+ JSONObject json = JSONObject.fromObject(result);
+ if (json.getInt("type") != 0) {
+// logger.error("[" + longUrl + "]短地址生成错误:" + json.getString("rs_msg"));
+ System.out.println("短地址生成错误");
+ return null;
+ }
+ return json.getString("url_short");
+ } catch (Exception e) {
+ e.printStackTrace();
+ return null;
+ } finally {
+ try {
+ if (null != in) in.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+}
diff --git a/src/main/java/com/supwisdom/dlpay/framework/util/TradeDict.java b/src/main/java/com/supwisdom/dlpay/framework/util/TradeDict.java
index 2928642..92b9616 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/util/TradeDict.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/util/TradeDict.java
@@ -33,6 +33,15 @@
public static final String DTL_STATUS_WIP = "wip";
public static final String DTL_STATUS_NONE = "none";
+ /**
+ * 支付模式
+ * qrcode -- 扫码支付
+ * card -- 刷卡支付
+ */
+ public static final String PAY_MODE_QRCODE = "qrcode";
+ public static final String PAY_MODE_CARD = "card";
+
+
/**
* 操作员类型
diff --git a/src/main/java/com/supwisdom/dlpay/system/service/UserDataService.java b/src/main/java/com/supwisdom/dlpay/system/service/UserDataService.java
index e74eaa9..e25e020 100644
--- a/src/main/java/com/supwisdom/dlpay/system/service/UserDataService.java
+++ b/src/main/java/com/supwisdom/dlpay/system/service/UserDataService.java
@@ -39,4 +39,7 @@
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class,readOnly = true)
PageResult<TPointsAccount> getUserPointDTL(PersonParamBean param);
+
+ @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class,readOnly = true)
+ TPerson getPersonByThirdUid(String thirdUid);
}
diff --git a/src/main/java/com/supwisdom/dlpay/system/service/impl/UserDataServiceImpl.java b/src/main/java/com/supwisdom/dlpay/system/service/impl/UserDataServiceImpl.java
index 9ca9a4b..6488fd6 100644
--- a/src/main/java/com/supwisdom/dlpay/system/service/impl/UserDataServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/system/service/impl/UserDataServiceImpl.java
@@ -175,4 +175,13 @@
public PageResult<TPointsAccount> getUserPointDTL(PersonParamBean param) {
return null;
}
+
+ @Override
+ public TPerson getPersonByThirdUid(String thirdUid) {
+ TPersonIdentity personIdentity = personIdentityDao.getByThirdUid(thirdUid);
+ if (personIdentity != null) {
+ return personIdentity.getPerson();
+ }
+ return null;
+ }
}
diff --git a/src/main/java/com/supwisdom/dlpay/water/dao/DeviceFeeConfigDao.java b/src/main/java/com/supwisdom/dlpay/water/dao/DeviceFeeConfigDao.java
new file mode 100644
index 0000000..da99083
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/water/dao/DeviceFeeConfigDao.java
@@ -0,0 +1,10 @@
+package com.supwisdom.dlpay.water.dao;
+
+import com.supwisdom.dlpay.water.domain.TDeviceFeeConfig;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface DeviceFeeConfigDao extends JpaRepository<TDeviceFeeConfig, Integer> {
+ TDeviceFeeConfig findByDeviceid(Integer deviceid);
+}
diff --git a/src/main/java/com/supwisdom/dlpay/water/dao/FeeConfigDao.java b/src/main/java/com/supwisdom/dlpay/water/dao/FeeConfigDao.java
new file mode 100644
index 0000000..0853e12
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/water/dao/FeeConfigDao.java
@@ -0,0 +1,9 @@
+package com.supwisdom.dlpay.water.dao;
+
+import com.supwisdom.dlpay.water.domain.TFeeConfig;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface FeeConfigDao extends JpaRepository<TFeeConfig, Integer> {
+}
diff --git a/src/main/java/com/supwisdom/dlpay/water/dao/TransdtlDao.java b/src/main/java/com/supwisdom/dlpay/water/dao/TransdtlDao.java
index 05260db..3945100 100644
--- a/src/main/java/com/supwisdom/dlpay/water/dao/TransdtlDao.java
+++ b/src/main/java/com/supwisdom/dlpay/water/dao/TransdtlDao.java
@@ -16,4 +16,6 @@
@Query("select t from TTransdtl t where t.billno=?1")
@QueryHints({@QueryHint(name = "javax.persistence.lock.timeout", value = "0")})
TTransdtl findByBillnoForUpdate(String billno);
+
+ TTransdtl findByBillnoAndDeviceno(String billno, String deviceno);
}
diff --git a/src/main/java/com/supwisdom/dlpay/water/domain/TDeviceFeeConfig.java b/src/main/java/com/supwisdom/dlpay/water/domain/TDeviceFeeConfig.java
index 4f81f00..bc7486e 100644
--- a/src/main/java/com/supwisdom/dlpay/water/domain/TDeviceFeeConfig.java
+++ b/src/main/java/com/supwisdom/dlpay/water/domain/TDeviceFeeConfig.java
@@ -7,7 +7,7 @@
public class TDeviceFeeConfig {
@Id
@Column(name = "deviceid")
- private String deviceid;
+ private Integer deviceid;
@Column(name = "feeconfig")
private Integer feeConfig;
@@ -15,11 +15,11 @@
@Column(name = "feecfgversion")
private Integer feeCfgVersion;
- public String getDeviceid() {
+ public Integer getDeviceid() {
return deviceid;
}
- public void setDeviceid(String deviceid) {
+ public void setDeviceid(Integer deviceid) {
this.deviceid = deviceid;
}
diff --git a/src/main/java/com/supwisdom/dlpay/water/domain/TTransdtl.java b/src/main/java/com/supwisdom/dlpay/water/domain/TTransdtl.java
index 467d421..d23adf6 100644
--- a/src/main/java/com/supwisdom/dlpay/water/domain/TTransdtl.java
+++ b/src/main/java/com/supwisdom/dlpay/water/domain/TTransdtl.java
@@ -30,6 +30,25 @@
private String uploadTime;
+ private Integer authStatus;
+
+ private Integer uploadStatus;
+
+ public Integer getUploadStatus() {
+ return uploadStatus;
+ }
+
+ public void setUploadStatus(Integer uploadStatus) {
+ this.uploadStatus = uploadStatus;
+ }
+
+ public Integer getAuthStatus() {
+ return authStatus;
+ }
+
+ public void setAuthStatus(Integer authStatus) {
+ this.authStatus = authStatus;
+ }
public String getBillno() {
return billno;
diff --git a/src/main/java/com/supwisdom/dlpay/water/service/DeviceService.java b/src/main/java/com/supwisdom/dlpay/water/service/DeviceService.java
index 2d63b08..854ba68 100644
--- a/src/main/java/com/supwisdom/dlpay/water/service/DeviceService.java
+++ b/src/main/java/com/supwisdom/dlpay/water/service/DeviceService.java
@@ -1,7 +1,10 @@
package com.supwisdom.dlpay.water.service;
import com.supwisdom.dlpay.framework.util.PageResult;
+import com.supwisdom.dlpay.water.DeviceLineCheckParam;
+import com.supwisdom.dlpay.water.DeviceLoginParam;
import com.supwisdom.dlpay.water.domain.TDevice;
+import com.supwisdom.dlpay.water.domain.TFeeConfig;
import com.supwisdom.dlpay.water.system.bean.DeviceSearchBean;
import org.springframework.data.domain.Page;
import org.springframework.transaction.annotation.Transactional;
@@ -30,4 +33,10 @@
PageResult<TDevice> queryDeviceByParams(DeviceSearchBean param);
@Transactional
PageResult<TDevice> queryAreaname(Page<TDevice> devicePage);
+ @Transactional
+ Map<String,Object> deviceLogin(DeviceLoginParam param);
+ @Transactional
+ boolean lineCheck(DeviceLineCheckParam param);
+ @Transactional
+ TFeeConfig queryTFeeConfigByDeviceno(String deviceno);
}
diff --git a/src/main/java/com/supwisdom/dlpay/water/service/TransdtlService.java b/src/main/java/com/supwisdom/dlpay/water/service/TransdtlService.java
index 50c6030..b64a1b0 100644
--- a/src/main/java/com/supwisdom/dlpay/water/service/TransdtlService.java
+++ b/src/main/java/com/supwisdom/dlpay/water/service/TransdtlService.java
@@ -1,7 +1,10 @@
package com.supwisdom.dlpay.water.service;
+import com.supwisdom.dlpay.water.QrcodeQueryRequest;
import com.supwisdom.dlpay.water.UploadRecordRequest;
+import com.supwisdom.dlpay.water.UserAuthRequest;
import com.supwisdom.dlpay.water.domain.TTransdtl;
+import org.springframework.data.jpa.repository.Lock;
import org.springframework.transaction.annotation.Transactional;
public interface TransdtlService {
@@ -11,4 +14,9 @@
@Transactional
TTransdtl saveDeviceDtlData(UploadRecordRequest record);
+ @Transactional
+ TTransdtl queryTrans(QrcodeQueryRequest param);
+
+ @Transactional
+ TTransdtl userAuth(UserAuthRequest param);
}
diff --git a/src/main/java/com/supwisdom/dlpay/water/service/impl/DeviceServiceImpl.java b/src/main/java/com/supwisdom/dlpay/water/service/impl/DeviceServiceImpl.java
index af018fa..276dab0 100644
--- a/src/main/java/com/supwisdom/dlpay/water/service/impl/DeviceServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/water/service/impl/DeviceServiceImpl.java
@@ -2,10 +2,16 @@
import com.supwisdom.dlpay.framework.util.PageResult;
import com.supwisdom.dlpay.framework.util.StringUtil;
+import com.supwisdom.dlpay.water.DeviceLineCheckParam;
+import com.supwisdom.dlpay.water.DeviceLoginParam;
import com.supwisdom.dlpay.water.dao.AreaDao;
import com.supwisdom.dlpay.water.dao.DeviceDao;
+import com.supwisdom.dlpay.water.dao.DeviceFeeConfigDao;
+import com.supwisdom.dlpay.water.dao.FeeConfigDao;
import com.supwisdom.dlpay.water.domain.TDevice;
import com.supwisdom.dlpay.water.domain.TArea;
+import com.supwisdom.dlpay.water.domain.TDeviceFeeConfig;
+import com.supwisdom.dlpay.water.domain.TFeeConfig;
import com.supwisdom.dlpay.water.service.DeviceService;
import com.supwisdom.dlpay.water.system.bean.DeviceSearchBean;
import org.springframework.beans.factory.annotation.Autowired;
@@ -20,12 +26,19 @@
@Service
public class DeviceServiceImpl implements DeviceService {
+
@Autowired
private DeviceDao deviceDao;
@Autowired
private AreaDao areaDao;
+ @Autowired
+ private FeeConfigDao feeConfigDao;
+
+ @Autowired
+ private DeviceFeeConfigDao deviceFeeConfigDao;
+
@Override
public boolean existSubDevice(Integer areano) {
List<TDevice> devices = deviceDao.findByAreano(areano);
@@ -162,10 +175,50 @@
@Override
public PageResult<TDevice> queryAreaname(Page<TDevice> devicePage) {
- devicePage.get().forEach(device->{
+ devicePage.get().forEach(device -> {
Optional<TArea> optional = areaDao.findByAvailableAndAreano(1, device.getAreano());
optional.ifPresent(tArea -> device.setAreaname(tArea.getAreaName()));
});
return new PageResult<>(devicePage);
}
+
+ @Override
+ public Map<String, Object> deviceLogin(DeviceLoginParam param) {
+ Map<String, Object> result = new HashMap<>();
+ TDevice device = deviceDao.findByDeviceno(param.getDeviceno());
+ if (device != null) {
+ device.setSoftVer(param.getHwVer());
+ deviceDao.save(device);
+ result.put("flag", true);
+ result.put("devOfflineMaxHour", 168);
+ result.put("pulseInHML", 40);
+ return result;
+ }
+ result.put("flag", false);
+ return result;
+ }
+
+ @Override
+ public boolean lineCheck(DeviceLineCheckParam param) {
+ TDevice device = deviceDao.findByDeviceno(param.getDeviceno());
+ if (device != null) {
+ String deviceLineCheck = param.getTermdate() + param.getTermtime();
+ device.setDeviceLineCheck(deviceLineCheck);
+ deviceDao.save(device);
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public TFeeConfig queryTFeeConfigByDeviceno(String deviceno) {
+ TDevice device = deviceDao.findByDeviceno(deviceno);
+ if (device != null) {
+ TDeviceFeeConfig deviceFeeConfig = deviceFeeConfigDao.findByDeviceid(device.getDeviceid());
+ if (deviceFeeConfig != null) {
+ return feeConfigDao.findById(deviceFeeConfig.getFeeConfig()).orElse(null);
+ }
+ }
+ return null;
+ }
}
diff --git a/src/main/kotlin/com/supwisdom/dlpay/api/bean/api_request_param.kt b/src/main/kotlin/com/supwisdom/dlpay/api/bean/api_request_param.kt
index 6e06756..404ab93 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/api/bean/api_request_param.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/api/bean/api_request_param.kt
@@ -162,7 +162,7 @@
@Sign
var refno:String?=null //二选一
@Sign
- var billno:String?=null //二选一 (billno+shopaccno) 传billno时,shopaccno必传
+ var billno:String?=null //二选一 (refno+shopaccno) 传billno时,shopaccno必传
@Sign
var shopaccno: String?=null
diff --git a/src/main/kotlin/com/supwisdom/dlpay/framework/service/impl/framework_service_impl.kt b/src/main/kotlin/com/supwisdom/dlpay/framework/service/impl/framework_service_impl.kt
index 32c6d92..d5a13dd 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/framework/service/impl/framework_service_impl.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/framework/service/impl/framework_service_impl.kt
@@ -1,10 +1,6 @@
package com.supwisdom.dlpay.framework.service.impl
-import com.google.gson.Gson
-import com.google.gson.reflect.TypeToken
import com.jcabi.manifests.Manifests
-import com.supwisdom.dlpay.api.bean.ConsumeFeetype
-import com.supwisdom.dlpay.exception.RequestParamCheckException
import com.supwisdom.dlpay.exception.TransactionProcessException
import com.supwisdom.dlpay.framework.core.JwtConfig
import com.supwisdom.dlpay.framework.core.JwtTokenUtil
diff --git a/src/main/kotlin/com/supwisdom/dlpay/security.kt b/src/main/kotlin/com/supwisdom/dlpay/security.kt
index 2ec292e..d6a30ea 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/security.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/security.kt
@@ -118,10 +118,11 @@
// 设置 API 访问权限管理
http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
- .addFilterAfter(apiFilter,
- UsernamePasswordAuthenticationFilter::class.java)
+// .addFilterAfter(apiFilter,
+// UsernamePasswordAuthenticationFilter::class.java)
.antMatcher("/api/**")
.authorizeRequests()
+ .antMatchers("/api/**").permitAll()
.antMatchers("/api/auth/**").permitAll()
.antMatchers("/api/notify/**").permitAll()
.antMatchers("/api/common/**").hasAnyRole("THIRD_COMMON", "THIRD_ADMIN")
diff --git a/src/main/kotlin/com/supwisdom/dlpay/water/advices.kt b/src/main/kotlin/com/supwisdom/dlpay/water/advices.kt
index acbe006..ddf5e39 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/water/advices.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/water/advices.kt
@@ -70,11 +70,11 @@
if (body is APIRequestParam) {
body.checkParam()
- if (requestSignCheck &&
- !body.checkSign(commonService.getSecretByAppid(
- SecurityContextHolder.getContext().authentication.name))) {
- throw RequestParamCheckException(TradeErrorCode.REQUEST_SIGN_ERROR, "参数签名错误")
- }
+// if (requestSignCheck &&
+// !body.checkSign(commonService.getSecretByAppid(
+// SecurityContextHolder.getContext().authentication.name))) {
+// throw RequestParamCheckException(TradeErrorCode.REQUEST_SIGN_ERROR, "参数签名错误")
+// }
} else {
throw TransactionCheckException(TradeErrorCode.REQUEST_PARAM_EEROR, "请求参数实体位置错误")
}
diff --git a/src/main/kotlin/com/supwisdom/dlpay/water/api_request_param.kt b/src/main/kotlin/com/supwisdom/dlpay/water/api_request_param.kt
index 9b4de45..6a45f69 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/water/api_request_param.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/water/api_request_param.kt
@@ -8,21 +8,24 @@
class DeviceLoginParam : APIRequestParam() {
@Sign
- var deviceNo: String = ""
+ var deviceno: String = ""
@Sign
- var deviceDate: String = ""
+ var termdate: String = ""
@Sign
- var deviceTime: String = ""
+ var termtime: String = ""
+
+ @Sign
+ var hwVer: String = ""
override fun checkParam(): Boolean {
- if (deviceNo.length != 8 || deviceNo.any { it !in '0'..'9' }) {
+ if (deviceno.length != 8 || deviceno.any { it !in '0'..'9' }) {
throw RequestParamCheckException(TradeErrorCode.INPUT_DATA_ERROR, "设备ID号长度不符")
}
- if (!DateUtil.checkDatetimeValid(deviceDate, DateUtil.DATE_FMT)
- || !DateUtil.checkDatetimeValid(deviceTime, DateUtil.TIME_FMT)) {
+ if (!DateUtil.checkDatetimeValid(termdate, DateUtil.DATE_FMT)
+ || !DateUtil.checkDatetimeValid(termtime, DateUtil.TIME_FMT)) {
throw RequestParamCheckException(TradeErrorCode.INPUT_DATA_ERROR, "设备日期时间错误")
}
return true
@@ -31,24 +34,24 @@
class DeviceLineCheckParam : APIRequestParam() {
@Sign
- var deviceNo: String = ""
+ var deviceno: String = ""
@Sign
- var deviceDate: String = ""
+ var termdate: String = ""
@Sign
- var deviceTime: String = ""
+ var termtime: String = ""
@Sign
var offlineRecordCount: Int = 0
override fun checkParam(): Boolean {
- if (deviceNo.length != 8 || deviceNo.any { it !in '0'..'9' }) {
+ if (deviceno.length != 8 || deviceno.any { it !in '0'..'9' }) {
throw RequestParamCheckException(TradeErrorCode.INPUT_DATA_ERROR, "设备ID号长度不符")
}
- if (!DateUtil.checkDatetimeValid(deviceDate, DateUtil.DATE_FMT)
- || !DateUtil.checkDatetimeValid(deviceTime, DateUtil.TIME_FMT)) {
+ if (!DateUtil.checkDatetimeValid(termdate, DateUtil.DATE_FMT)
+ || !DateUtil.checkDatetimeValid(termtime, DateUtil.TIME_FMT)) {
throw RequestParamCheckException(TradeErrorCode.INPUT_DATA_ERROR, "设备日期时间错误")
}
return true
@@ -58,28 +61,28 @@
class CardPayRequest : APIRequestParam() {
@Sign
- var deviceNo: String = ""
+ var deviceno: String = ""
@Sign
- var deviceDate: String = ""
+ var termdate: String = ""
@Sign
- var deviceTime: String = ""
+ var termtime: String = ""
@Sign
- var cardNo: String = ""
+ var cardno: String = ""
override fun checkParam(): Boolean {
- if (deviceNo.length != 8 || deviceNo.any { it !in '0'..'9' }) {
+ if (deviceno.length != 8 || deviceno.any { it !in '0'..'9' }) {
throw RequestParamCheckException(TradeErrorCode.INPUT_DATA_ERROR, "设备ID号长度不符")
}
- if (!DateUtil.checkDatetimeValid(deviceDate, DateUtil.DATE_FMT)
- || !DateUtil.checkDatetimeValid(deviceTime, DateUtil.TIME_FMT)) {
+ if (!DateUtil.checkDatetimeValid(termdate, DateUtil.DATE_FMT)
+ || !DateUtil.checkDatetimeValid(termtime, DateUtil.TIME_FMT)) {
throw RequestParamCheckException(TradeErrorCode.INPUT_DATA_ERROR, "设备日期时间错误")
}
- if (cardNo.isEmpty()) {
+ if (cardno.isEmpty()) {
throw RequestParamCheckException(TradeErrorCode.INPUT_DATA_ERROR,
"卡号长度错误")
}
@@ -89,21 +92,21 @@
class QrcodePayRequest : APIRequestParam() {
@Sign
- var deviceNo: String = ""
+ var deviceno: String = ""
@Sign
- var deviceDate: String = ""
+ var termdate: String = ""
@Sign
- var deviceTime: String = ""
+ var termtime: String = ""
override fun checkParam(): Boolean {
- if (deviceNo.length != 8 || deviceNo.any { it !in '0'..'9' }) {
+ if (deviceno.length != 8 || deviceno.any { it !in '0'..'9' }) {
throw RequestParamCheckException(TradeErrorCode.INPUT_DATA_ERROR, "设备ID号长度不符")
}
- if (!DateUtil.checkDatetimeValid(deviceDate, DateUtil.DATE_FMT)
- || !DateUtil.checkDatetimeValid(deviceTime, DateUtil.TIME_FMT)) {
+ if (!DateUtil.checkDatetimeValid(termdate, DateUtil.DATE_FMT)
+ || !DateUtil.checkDatetimeValid(termtime, DateUtil.TIME_FMT)) {
throw RequestParamCheckException(TradeErrorCode.INPUT_DATA_ERROR, "设备日期时间错误")
}
@@ -111,35 +114,66 @@
}
}
+class QrcodeQueryRequest : APIRequestParam() {
+ @Sign
+ var deviceno: String = ""
+
+ @Sign
+ var refno: String = ""
+
+
+ override fun checkParam(): Boolean {
+ if (deviceno.length != 8 || deviceno.any { it !in '0'..'9' }) {
+ throw RequestParamCheckException(TradeErrorCode.INPUT_DATA_ERROR, "设备ID号长度不符")
+ }
+ return true
+ }
+}
+
class UploadRecordRequest : APIRequestParam() {
@Sign
- var deviceNo: String = ""
+ var deviceno: String = ""
@Sign
- var deviceDate: String = ""
+ var transdate: String = ""
@Sign
- var deviceTime: String = ""
+ var transtime: String = ""
@Sign
- var billno: String = ""
+ var refno: String = ""
@Sign
var amount: Int = 0
@Sign
- var waterIn100ML: Int = 0
+ var flowsensors: Int = 0
override fun checkParam(): Boolean {
- if (deviceNo.length != 8 || deviceNo.any { it !in '0'..'9' }) {
+ if (deviceno.length != 8 || deviceno.any { it !in '0'..'9' }) {
throw RequestParamCheckException(TradeErrorCode.INPUT_DATA_ERROR, "设备ID号长度不符")
}
- if (!DateUtil.checkDatetimeValid(deviceDate, DateUtil.DATE_FMT)
- || !DateUtil.checkDatetimeValid(deviceTime, DateUtil.TIME_FMT)) {
+ if (!DateUtil.checkDatetimeValid(transdate, DateUtil.DATE_FMT)
+ || !DateUtil.checkDatetimeValid(transtime, DateUtil.TIME_FMT)) {
throw RequestParamCheckException(TradeErrorCode.INPUT_DATA_ERROR, "设备日期时间错误")
}
+ return true
+ }
+}
+class UserAuthRequest : APIRequestParam() {
+
+ @Sign
+ var refno: String = ""
+
+ @Sign
+ var userid: String = ""
+
+ override fun checkParam(): Boolean {
+ if (refno.length != 20 || refno.any { it !in '0'..'9' }) {
+ throw RequestParamCheckException(TradeErrorCode.INPUT_DATA_ERROR, "流水号长度不符")
+ }
return true
}
}
\ No newline at end of file
diff --git a/src/main/kotlin/com/supwisdom/dlpay/water/controller/api_controller.kt b/src/main/kotlin/com/supwisdom/dlpay/water/controller/api_controller.kt
index 7e4c704..f779f78 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/water/controller/api_controller.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/water/controller/api_controller.kt
@@ -2,61 +2,188 @@
import com.supwisdom.dlpay.framework.ResponseBodyBuilder
import com.supwisdom.dlpay.framework.service.SystemUtilService
+import com.supwisdom.dlpay.framework.util.ShortURLUtil
import com.supwisdom.dlpay.framework.util.TradeDict
+import com.supwisdom.dlpay.framework.util.WaterErrorCode
+import com.supwisdom.dlpay.system.service.UserDataService
import com.supwisdom.dlpay.water.*
import com.supwisdom.dlpay.water.domain.TTransdtl
+import com.supwisdom.dlpay.water.service.DeviceService
+import com.supwisdom.dlpay.water.service.TransdtlService
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.http.ResponseEntity
import org.springframework.web.bind.annotation.*
+import org.springframework.web.servlet.ModelAndView
-@RestController("/api")
+
+@RestController
+@RequestMapping("/api")
class WaterApiController {
@Autowired
private lateinit var systemUtilService: SystemUtilService
+ @Autowired
+ private lateinit var deviceService: DeviceService
+
+ @Autowired
+ private lateinit var userDataService: UserDataService
+
+ @Autowired
+ private lateinit var transdtlService: TransdtlService
+
@GetMapping("/devicelogin")
fun deviceLogin(@RequestBody param: DeviceLoginParam): ResponseEntity<Any> {
- TODO("")
+ try {
+ val result = deviceService.deviceLogin(param)
+ if (result["flag"] == true) {
+ return ResponseEntity.ok(ResponseBodyBuilder.create()
+ .data("devOfflineMaxHour", result["devOfflineMaxHour"]!!)
+ .data("pulseInHML", result["pulseInHML"]!!)
+ .data("systemTime", systemUtilService.sysdatetime.hostdatetime)
+ .success())
+ }
+ return ResponseEntity.ok(ResponseBodyBuilder.create()
+ .fail(WaterErrorCode.DATA_NOTFOUND_ERROR, "没有编号为" + param.deviceno + "的设备"))
+ } catch (ex: Exception) {
+ return ResponseEntity.ok(ResponseBodyBuilder.create()
+ .exception(WaterErrorCode.PROCESS_ERROR, ex, "系统出错"))
+ }
}
+
@RequestMapping("/linecheck", method = [RequestMethod.GET, RequestMethod.POST])
fun deviceLineCheck(@RequestBody param: DeviceLineCheckParam): ResponseEntity<Any> {
- TODO("")
+ try {
+ if (deviceService.lineCheck(param)) {
+ return ResponseEntity.ok(ResponseBodyBuilder.create()
+ .data("sysdate", systemUtilService.sysdatetime.hostdate)
+ .data("systemTime", systemUtilService.sysdatetime.hosttime)
+ .success())
+ }
+ return ResponseEntity.ok(ResponseBodyBuilder.create()
+ .fail(WaterErrorCode.DATA_NOTFOUND_ERROR, "没有编号为" + param.deviceno + "的设备"))
+ } catch (ex: Exception) {
+ return ResponseEntity.ok(ResponseBodyBuilder.create()
+ .exception(WaterErrorCode.PROCESS_ERROR, ex, "系统出错"))
+ }
}
@PostMapping("/card/purseinit")
fun cardPurseInit(@RequestBody param: CardPayRequest): ResponseEntity<Any> {
- //1. 通过 cardNo 检查用户以及合法性
- //2. 通过 deviceno 查询设备费率参数
- //3. 创建 transdtl 记录初始流水
- //4. 将流水 billno 和费率信息返回给终端
- val trans = TTransdtl().apply {
- billno = systemUtilService.refno
- transDate = param.deviceDate
- transTime = param.deviceTime
- deviceno = param.deviceNo
- bankCardNo = param.cardNo
- amount = 0.0
- waterSumHundredLitre = 0
- status = TradeDict.DTL_STATUS_INIT
+ try {//1. 通过 cardno 检查用户以及合法性
+ val person = userDataService.getPersonByThirdUid(param.cardno)
+ ?: return ResponseEntity.ok(ResponseBodyBuilder.create()
+ .fail(WaterErrorCode.DATA_NOTFOUND_ERROR, "未查询到您的身份信息"))
+ //2. 通过 deviceno 查询设备费率参数
+ val feeConfig = deviceService.queryTFeeConfigByDeviceno(param.deviceno)
+ ?: return ResponseEntity.ok(ResponseBodyBuilder.create()
+ .fail(WaterErrorCode.DATA_NOTFOUND_ERROR, "未查询到该设备的费率信息"))
+ //3. 创建 transdtl 记录初始流水
+ val trans = TTransdtl().apply {
+ billno = systemUtilService.refno
+ mode = TradeDict.PAY_MODE_CARD
+ transDate = param.termdate
+ transTime = param.termtime
+ deviceno = param.deviceno
+ userid = person.userid
+ bankCardNo = param.cardno
+ amount = 0.0
+ waterSumHundredLitre = 0
+ status = TradeDict.DTL_STATUS_INIT
+ authStatus = 1
+ uploadStatus = 0
+ }
+ val savedTrans = transdtlService.createNewTransdtl(trans)
+ //4. 将流水 refno 和费率信息返回给终端
+ return ResponseEntity.ok(ResponseBodyBuilder.create()
+ .data("refno", savedTrans.billno)
+ .data("feeamount", feeConfig.amount)
+ .data("waterlimit", feeConfig.maxWaterLitre)
+ .data("feeunit", 0)
+ .success())
+ } catch (ex: Exception) {
+ return ResponseEntity.ok(ResponseBodyBuilder.create()
+ .exception(WaterErrorCode.PROCESS_ERROR, ex, "系统出错"))
}
-
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .data("billno", trans.billno)
- .data("feeamount", 1)
- .data("max_litre", 50)
- .success())
}
@PostMapping("/qrcode/init")
fun qrcodePayInit(@RequestBody param: QrcodePayRequest): ResponseEntity<Any> {
- TODO("")
+ try {//1. 创建并记录初始流水
+ val trans = TTransdtl().apply {
+ billno = systemUtilService.refno
+ mode = TradeDict.PAY_MODE_QRCODE
+ transDate = param.termdate
+ transTime = param.termtime
+ deviceno = param.deviceno
+ amount = 0.0
+ waterSumHundredLitre = 0
+ status = TradeDict.DTL_STATUS_INIT
+ authStatus = 0
+ uploadStatus = 0
+ }
+ val savedTrans = transdtlService.createNewTransdtl(trans)
+ //2.将流水号及认证地址返回给终端
+ //将认证url转为短码
+ val url = ShortURLUtil.doGetSinaShortUrl(
+ "http://172.28.43.20:8080/water/api/confirm?refno=" + savedTrans.billno)
+ return ResponseEntity.ok(ResponseBodyBuilder.create()
+ .data("refno", savedTrans.billno)
+ .data("url", url)
+ .data("vaildtime", 180)
+ .success())
+ } catch (ex: Exception) {
+ return ResponseEntity.ok(ResponseBodyBuilder.create()
+ .exception(WaterErrorCode.PROCESS_ERROR, ex, "系统出错"))
+ }
+ }
+
+ @GetMapping("/qrcode/query")
+ fun qrcodeQuery(@RequestBody param: QrcodeQueryRequest): ResponseEntity<Any> {
+ try {
+ val feeConfig = deviceService.queryTFeeConfigByDeviceno(param.deviceno)
+ ?: return ResponseEntity.ok(ResponseBodyBuilder.create()
+ .fail(WaterErrorCode.DATA_NOTFOUND_ERROR, "未查询到该设备的费率信息"))
+ val trans = transdtlService.queryTrans(param)
+ ?: return ResponseEntity.ok(ResponseBodyBuilder.create()
+ .fail(WaterErrorCode.DATA_NOTFOUND_ERROR, "未查询到该流水号"))
+ return ResponseEntity.ok(ResponseBodyBuilder.create()
+ .data("refno", trans.billno)
+ .data("authstatus", trans.authStatus)
+ .data("paystatus", 2)
+ .data("feeamount", feeConfig.amount)
+ .data("feeunit", 0)
+ .data("paidAmount", 0)
+ .success())
+ } catch (ex: Exception) {
+ return ResponseEntity.ok(ResponseBodyBuilder.create()
+ .exception(WaterErrorCode.PROCESS_ERROR, ex, "系统出错"))
+ }
+ }
+
+ @GetMapping("/confirm")
+ fun confirmView(): ModelAndView {
+ return ModelAndView("/system/confirm/confirm")
+ }
+
+ @PostMapping("/auth")
+ @ResponseBody
+ fun auth(@RequestBody param: UserAuthRequest): ResponseEntity<Any> {
+ return try {
+ transdtlService.userAuth(param)
+ ResponseEntity.ok(ResponseBodyBuilder.create().success())
+ } catch (ex: Exception) {
+ ResponseEntity.ok(ResponseBodyBuilder.create()
+ .exception(WaterErrorCode.PROCESS_ERROR, ex, "系统出错,认证失败"))
+ }
}
@PostMapping("/uploadrecord")
fun transdtlUpload(@RequestBody param: UploadRecordRequest): ResponseEntity<Any> {
- // 1. 根据 billno 查询 transdtl , 并加锁
- TODO("")
+ // 1. 根据 refno 查询 transdtl , 并加锁
+ val dtl = transdtlService.saveDeviceDtlData(param)
+ return ResponseEntity.ok(ResponseBodyBuilder.create().data("refno", dtl.billno)
+ .success())
}
}
\ No newline at end of file
diff --git a/src/main/kotlin/com/supwisdom/dlpay/water/controller/water_controller.kt b/src/main/kotlin/com/supwisdom/dlpay/water/controller/water_controller.kt
index d8fbcdd..ca1750b 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/water/controller/water_controller.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/water/controller/water_controller.kt
@@ -246,7 +246,7 @@
}
}
- @GetMapping("/device/devino/{devino}")
+ @GetMapping("/device/devino/{deviceid}")
@ResponseBody
fun checkDevino(@PathVariable deviceid: Int): ResponseEntity<Any> {
try {
diff --git a/src/main/kotlin/com/supwisdom/dlpay/water/service/transdtl_service.kt b/src/main/kotlin/com/supwisdom/dlpay/water/service/transdtl_service.kt
index e359f81..099779a 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/water/service/transdtl_service.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/water/service/transdtl_service.kt
@@ -1,8 +1,11 @@
package com.supwisdom.dlpay.water.service
import com.supwisdom.dlpay.exception.TransactionProcessException
+import com.supwisdom.dlpay.framework.util.TradeDict
import com.supwisdom.dlpay.framework.util.WaterErrorCode
+import com.supwisdom.dlpay.water.QrcodeQueryRequest
import com.supwisdom.dlpay.water.UploadRecordRequest
+import com.supwisdom.dlpay.water.UserAuthRequest
import com.supwisdom.dlpay.water.dao.TransdtlDao
import com.supwisdom.dlpay.water.domain.TTransdtl
import org.springframework.beans.factory.annotation.Autowired
@@ -19,11 +22,28 @@
}
override fun saveDeviceDtlData(record: UploadRecordRequest): TTransdtl {
- val dtl = transdtlDao.findByBillnoForUpdate(record.billno)
+ val dtl = transdtlDao.findByBillnoForUpdate(record.refno)
?: throw TransactionProcessException(WaterErrorCode.DATA_NOTFOUND_ERROR,
"交易订单号不存在")
dtl.amount = record.amount / 100.0
- dtl.waterSumHundredLitre = record.waterIn100ML
+ dtl.waterSumHundredLitre = record.flowsensors
+ dtl.uploadTime = record.transdate + record.transtime
+ dtl.uploadStatus = 1
+ dtl.status = TradeDict.DTL_STATUS_WIP
+ transdtlDao.save(dtl)
+ return dtl
+ }
+
+ override fun queryTrans(param: QrcodeQueryRequest?): TTransdtl {
+ return transdtlDao.findByBillnoAndDeviceno(param!!.refno, param.deviceno)
+ }
+
+ override fun userAuth(param: UserAuthRequest?): TTransdtl {
+ val dtl = transdtlDao.findById(param!!.refno).orElse(null)
+ ?: throw TransactionProcessException(WaterErrorCode.DATA_NOTFOUND_ERROR,
+ "交易订单号不存在")
+ dtl.userid = param.userid
+ dtl.authStatus = 1
transdtlDao.save(dtl)
return dtl
}
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index e263110..e80789e 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -23,7 +23,7 @@
spring.thymeleaf.cache=false
spring.thymeleaf.enabled=true
#################################################
-#server.servlet.context-path=/water
+server.servlet.context-path=/water
################################################
# user password
auth.password.bcrypt.length=10
diff --git a/src/main/resources/db/migration/V1.3__init_data.sql b/src/main/resources/db/migration/V1.3__init_data.sql
index 307edb1..aaa02e7 100644
--- a/src/main/resources/db/migration/V1.3__init_data.sql
+++ b/src/main/resources/db/migration/V1.3__init_data.sql
@@ -4,3 +4,5 @@
INSERT INTO "public"."tb_role_function"("id", "functionid", "permissions", "roleid") VALUES ('6', 6, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
INSERT INTO "public"."tb_role_function"("id", "functionid", "permissions", "roleid") VALUES ('7', 7, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+CREATE SEQUENCE "public"."seq_refno" INCREMENT 1MINVALUE 1MAXVALUE 9223372036854775807 START 1 CACHE 1;
+ALTER SEQUENCE "public"."seq_refno" OWNER TO "watermanager";
\ No newline at end of file
diff --git a/src/main/resources/static/custom/module/admin.js b/src/main/resources/static/custom/module/admin.js
old mode 100755
new mode 100644
index e6ad642..cbdbc36
--- a/src/main/resources/static/custom/module/admin.js
+++ b/src/main/resources/static/custom/module/admin.js
@@ -1,373 +1,387 @@
-layui.define(['layer'], function (exports) {
- var layer = layui.layer;
- var popupRightIndex, popupCenterIndex, popupCenterParam;
-
- var admin = {
- isRefresh: false,
- // 设置侧栏折叠
- flexible: function (expand) {
- var isExapnd = $('.layui-layout-admin').hasClass('admin-nav-mini');
- if (isExapnd == !expand) {
- return;
- }
- if (expand) {
- $('.layui-layout-admin').removeClass('admin-nav-mini');
- } else {
- $('.layui-layout-admin').addClass('admin-nav-mini');
- }
- },
- // 设置导航栏选中
- activeNav: function (url) {
- $('.layui-layout-admin .layui-side .layui-nav .layui-nav-item .layui-nav-child dd').removeClass('layui-this');
- $('.layui-layout-admin .layui-side .layui-nav .layui-nav-item').removeClass('layui-this');
- if (url && url != '') {
- $('.layui-layout-admin .layui-side .layui-nav .layui-nav-item').removeClass('layui-nav-itemed');
- var $a = $('.layui-layout-admin .layui-side .layui-nav a[href="#!' + url + '"]');
- $a.parent('li').addClass('layui-this');
- $a.parent('dd').addClass('layui-this');
- $a.parent('dd').parent('.layui-nav-child').parent('.layui-nav-item').addClass('layui-nav-itemed');
- }
- },
- // 右侧弹出
- popupRight: function (path) {
- var param = new Object();
- param.path = path;
- param.id = 'adminPopupR';
- param.title = false;
- param.anim = 2;
- param.isOutAnim = false;
- param.closeBtn = false;
- param.offset = 'r';
- param.shadeClose = true;
- param.area = '336px';
- param.skin = 'layui-layer-adminRight';
- param.end = function () {
- layer.closeAll('tips');
- };
- popupRightIndex = admin.open(param);
- return popupRightIndex;
- },
- // 关闭右侧弹出
- closePopupRight: function () {
- layer.close(popupRightIndex);
- },
- // 中间弹出
- popupCenter: function (param) {
- param.id = 'adminPopupC';
- popupCenterParam = param;
- popupCenterIndex = admin.open(param);
- return popupCenterIndex;
- },
- // 关闭中间弹出并且触发finish回调
- finishPopupCenter: function () {
- layer.close(popupCenterIndex);
- popupCenterParam.finish ? popupCenterParam.finish() : '';
- },
- // 关闭中间弹出
- closePopupCenter: function () {
- layer.close(popupCenterIndex);
- },
- // 封装layer.open
- open: function (param) {
- var sCallBack = param.success;
- param.type = 1;
- param.area = param.area ? param.area : '450px';
- param.offset = param.offset ? param.offset : '120px';
- param.resize ? param.resize : false;
- param.shade ? param.shade : .2;
- param.success = function (layero, index) {
- sCallBack ? sCallBack(layero, index) : '';
- admin.ajax({
- url: param.path,
- type: 'GET',
- dataType: 'html',
- success: function (result, status, xhr) {
- $(layero).children('.layui-layer-content').html(result);
- }
- });
- };
- return layer.open(param);
- },
-
- go:function(url,data,success,error){
- $.ajax({
- url: url,
- data: data,
- async: false,
- dataType: 'json',
- type: 'post',
- success: success,
- error:error
- })
- },
- dgo:function(url,data,success,error){
- $.ajax({
- url: url,
- data: data,
- async: false,
- dataType: 'json',
- type: 'get',
- success: success,
- error:error
- })
- },
- // 封装ajax请求,返回数据类型为json
- req: function (url, data, success, method) {
- admin.ajax({
- url: url,
- data: data,
- async: false,
- type: method,
- dataType: 'json',
- success: success
- });
- },
- // 封装ajax请求
- ajax: function (param) {
- console.log(param);
- var successCallback = param.success;
- param.success = function (result, status, xhr) {
- // 判断登录过期和没有权限
- var jsonRs;
- if ('json' == param.dataType.toLowerCase()) {
- jsonRs = result;
- } else if ('html' == param.dataType.toLowerCase() || 'text' == param.dataType.toLowerCase()) {
- jsonRs = admin.parseJSON(result);
- }
- if (jsonRs) {
- if (jsonRs.code == 401) {
- layer.msg(jsonRs.msg, {icon: 2, time: 1500}, function () {
- location.replace('/login');
- }, 1000);
- return;
- } else if ('html' == param.dataType.toLowerCase() && jsonRs.code == 403) {
- layer.msg(jsonRs.msg, {icon: 2});
- }
- }
- successCallback(result, status, xhr);
- };
- param.error = function (xhr) {
- //{code: xhr.status, msg: xhr.statusText}
- param.success(xhr.responseText,xhr.status,xhr);
- };
- $.ajax(param);
- },
- // 显示加载动画
- showLoading: function (element) {
- $(element).append('<i class="layui-icon layui-icon-loading layui-anim layui-anim-rotate layui-anim-loop admin-loading"></i>');
- },
- // 移除加载动画
- removeLoading: function (element) {
- $(element + '>.admin-loading').remove();
- },
- // 缓存临时数据
- putTempData: function (key, value) {
- if (value) {
- layui.sessionData('tempData', {key: key, value: value});
- } else {
- layui.sessionData('tempData', {key: key, remove: true});
- }
- },
- // 获取缓存临时数据
- getTempData: function (key) {
- return layui.sessionData('tempData')[key];
- },
- // 滑动选项卡
- rollPage: function (d) {
- var $tabTitle = $('.layui-layout-admin .layui-body .layui-tab .layui-tab-title');
- var left = $tabTitle.scrollLeft();
- if ('left' === d) {
- $tabTitle.scrollLeft(left - 120);
- } else if ('auto' === d) {
- var autoLeft = 0;
- $tabTitle.children("li").each(function () {
- if ($(this).hasClass('layui-this')) {
- return false;
- } else {
- autoLeft += $(this).outerWidth();
- }
- });
- $tabTitle.scrollLeft(autoLeft - 47);
- } else {
- $tabTitle.scrollLeft(left + 120);
- }
- },
- // 刷新主题部分
- refresh: function () {
- admin.isRefresh = true;
- Q.refresh();
- },
- // 判断是否为json
- parseJSON: function (str) {
- if (typeof str == 'string') {
- try {
- var obj = JSON.parse(str);
- if (typeof obj == 'object' && obj) {
- return obj;
- }
- } catch (e) {
- }
- }
- },
- formatDate:function (str) {
- if (str == null || str == "") {
- return;
- }
- switch (str.length) {
- case 8:
- str = str.substring(0, 4) + "-" + str.substring(4, 6) + "-" + str.substring(6, 8);
- return str;
- case 12:
- str = str.substring(0, 4) + "-" + str.substring(4, 6) + "-" + str.substring(6, 8) + " " + str.substring(8, 10)
- + ":" + str.substring(10, 12);
- return str;
- case 14:
- str = str.substring(0, 4) + "-" + str.substring(4, 6) + "-" + str.substring(6, 8) + " " + str.substring(8, 10)
- + ":" + str.substring(10, 12) + ":" + str.substring(12, 14);
- return str;
- default:
- return str;
- }
- }
- };
-
- // ewAdmin提供的事件
- admin.events = {
- // 折叠侧导航
- flexible: function (e) {
- var expand = $('.layui-layout-admin').hasClass('admin-nav-mini');
- admin.flexible(expand);
- },
- // 刷新主体部分
- refresh: function () {
- admin.refresh();
- },
- //后退
- back: function () {
- history.back();
- },
- // 设置主题
- theme: function () {
- admin.popupRight('home/theme');
- },
- // 全屏
- fullScreen: function (e) {
- var ac = 'layui-icon-screen-full', ic = 'layui-icon-screen-restore';
- var ti = $(this).find('i');
-
- var isFullscreen = document.fullscreenElement || document.msFullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement || false;
- if (isFullscreen) {
- var efs = document.exitFullscreen || document.webkitExitFullscreen || document.mozCancelFullScreen || document.msExitFullscreen;
- if (efs) {
- efs.call(document);
- } else if (window.ActiveXObject) {
- var ws = new ActiveXObject('WScript.Shell');
- ws && ws.SendKeys('{F11}');
- }
- ti.addClass(ac).removeClass(ic);
- } else {
- var el = document.documentElement;
- var rfs = el.requestFullscreen || el.webkitRequestFullscreen || el.mozRequestFullScreen || el.msRequestFullscreen;
- if (rfs) {
- rfs.call(el);
- } else if (window.ActiveXObject) {
- var ws = new ActiveXObject('WScript.Shell');
- ws && ws.SendKeys('{F11}');
- }
- ti.addClass(ic).removeClass(ac);
- }
- },
- // 左滑动tab
- leftPage: function () {
- admin.rollPage("left");
- },
- // 右滑动tab
- rightPage: function () {
- admin.rollPage();
- },
- // 关闭当前选项卡
- closeThisTabs: function () {
- var $title = $('.layui-layout-admin .layui-body .layui-tab .layui-tab-title');
- if ($title.find('li').first().hasClass('layui-this')) {
- return;
- }
- $title.find('li.layui-this').find(".layui-tab-close").trigger("click");
- },
- // 关闭其他选项卡
- closeOtherTabs: function () {
- $('.layui-layout-admin .layui-body .layui-tab .layui-tab-title li:gt(0):not(.layui-this)').find('.layui-tab-close').trigger('click');
- },
- // 关闭所有选项卡
- closeAllTabs: function () {
- $('.layui-layout-admin .layui-body .layui-tab .layui-tab-title li:gt(0)').find('.layui-tab-close').trigger('click');
- },
- // 关闭所有弹窗
- closeDialog: function () {
- layer.closeAll('page');
- },
- //刷新字典
- refreshDict: function (){
- layer.confirm('确定要刷新数据字典吗?', {
- btn: ['确定', '取消']
- }, function (index, layero) {
- layer.closeAll('dialog'); //加入这个信息点击确定 会关闭这个消息框
- admin.dgo("/dictrefresh", {}, function (data) {
- if (data.code == 200) {
- layer.msg("刷新数据字典成功!", {icon: 1, time: 1000});
- DictPoolToolkit().initAll("/dictpool");
- } else if (data.code == 401) {
- layer.msg(data.msg, {icon: 2, time: 1500}, function () {
- location.replace('/login');
- }, 1000);
- return;
- } else {
- layer.msg(data.msg, {icon: 2, time: 1500});
- }
- }, function () {
- layer.msg("数据字典刷新失败,访问服务器失败!", {icon: 2, time: 1500});
- });
- });
- }
- };
-
- // 所有ew-event
- $('body').on('click', '*[ew-event]', function () {
- var event = $(this).attr('ew-event');
- var te = admin.events[event];
- te && te.call(this, $(this));
- });
-
- // 移动设备遮罩层点击事件
- $('.site-mobile-shade').click(function () {
- admin.flexible(true);
- });
-
- // 侧导航折叠状态下鼠标经过显示提示
- $('body').on('mouseenter', '.layui-layout-admin.admin-nav-mini .layui-side .layui-nav .layui-nav-item>a', function () {
- var tipText = $(this).find('cite').text();
- if (document.body.clientWidth > 750) {
- layer.tips(tipText, this);
- }
- }).on('mouseleave', '.layui-layout-admin.admin-nav-mini .layui-side .layui-nav .layui-nav-item>a', function () {
- layer.closeAll('tips');
- });
-
- // 侧导航折叠状态下点击展开
- $('body').on('click', '.layui-layout-admin.admin-nav-mini .layui-side .layui-nav .layui-nav-item>a', function () {
- if (document.body.clientWidth > 750) {
- layer.closeAll('tips');
- admin.flexible(true);
- }
- });
-
- // 所有lay-tips处理
- $('body').on('mouseenter', '*[lay-tips]', function () {
- var tipText = $(this).attr('lay-tips');
- var dt = $(this).attr('lay-direction');
- layer.tips(tipText, this, {tips: dt || 1, time: -1});
- }).on('mouseleave', '*[lay-tips]', function () {
- layer.closeAll('tips');
- });
-
- exports('admin', admin);
-});
+layui.define(['layer'], function (exports) {
+ var layer = layui.layer;
+ var popupRightIndex, popupCenterIndex, popupCenterParam;
+ var baseUrl = window.location.pathname;
+
+ var admin = {
+ isRefresh: false,
+ // 设置侧栏折叠
+ flexible: function (expand) {
+ var isExapnd = $('.layui-layout-admin').hasClass('admin-nav-mini');
+ if (isExapnd == !expand) {
+ return;
+ }
+ if (expand) {
+ $('.layui-layout-admin').removeClass('admin-nav-mini');
+ } else {
+ $('.layui-layout-admin').addClass('admin-nav-mini');
+ }
+ },
+ // 设置导航栏选中
+ activeNav: function (url) {
+ $('.layui-layout-admin .layui-side .layui-nav .layui-nav-item .layui-nav-child dd').removeClass('layui-this');
+ $('.layui-layout-admin .layui-side .layui-nav .layui-nav-item').removeClass('layui-this');
+ if (url && url != '') {
+ $('.layui-layout-admin .layui-side .layui-nav .layui-nav-item').removeClass('layui-nav-itemed');
+ var $a = $('.layui-layout-admin .layui-side .layui-nav a[href="#!' + url + '"]');
+ $a.parent('li').addClass('layui-this');
+ $a.parent('dd').addClass('layui-this');
+ $a.parent('dd').parent('.layui-nav-child').parent('.layui-nav-item').addClass('layui-nav-itemed');
+ }
+ },
+ // 右侧弹出
+ popupRight: function (path) {
+ var param = new Object();
+ param.path = path;
+ param.id = 'adminPopupR';
+ param.title = false;
+ param.anim = 2;
+ param.isOutAnim = false;
+ param.closeBtn = false;
+ param.offset = 'r';
+ param.shadeClose = true;
+ param.area = '336px';
+ param.skin = 'layui-layer-adminRight';
+ param.end = function () {
+ layer.closeAll('tips');
+ };
+ popupRightIndex = admin.open(param);
+ return popupRightIndex;
+ },
+ // 关闭右侧弹出
+ closePopupRight: function () {
+ layer.close(popupRightIndex);
+ },
+ // 中间弹出
+ popupCenter: function (param) {
+ param.id = 'adminPopupC';
+ popupCenterParam = param;
+ popupCenterIndex = admin.open(param);
+ return popupCenterIndex;
+ },
+ // 关闭中间弹出并且触发finish回调
+ finishPopupCenter: function () {
+ layer.close(popupCenterIndex);
+ popupCenterParam.finish ? popupCenterParam.finish() : '';
+ },
+ // 关闭中间弹出
+ closePopupCenter: function () {
+ layer.close(popupCenterIndex);
+ },
+ // 封装layer.open
+ open: function (param) {
+ var sCallBack = param.success;
+ param.type = 1;
+ param.area = param.area ? param.area : '450px';
+ param.offset = param.offset ? param.offset : '120px';
+ param.resize ? param.resize : false;
+ param.shade ? param.shade : .2;
+ param.success = function (layero, index) {
+ sCallBack ? sCallBack(layero, index) : '';
+ admin.ajax({
+ url: param.path,
+ type: 'GET',
+ dataType: 'html',
+ success: function (result, status, xhr) {
+ $(layero).children('.layui-layer-content').html(result);
+ }
+ });
+ };
+ return layer.open(param);
+ },
+
+ go:function(url,data,success,error){
+ $.ajax({
+ url: url,
+ data: data,
+ async: false,
+ dataType: 'json',
+ type: 'post',
+ success: success,
+ error:error
+ })
+ },
+ dgo:function(url,data,success,error){
+ $.ajax({
+ url: url,
+ data: data,
+ async: false,
+ dataType: 'json',
+ type: 'get',
+ success: success,
+ error:error
+ })
+ },
+ // 封装ajax请求,返回数据类型为json
+ req: function (url, data, success, method) {
+ admin.ajax({
+ url: url,
+ data: data,
+ async: false,
+ type: method,
+ dataType: 'json',
+ success: success
+ });
+ },
+ // 封装ajax请求
+ ajax: function (param) {
+ console.log(param);
+ var successCallback = param.success;
+ param.success = function (result, status, xhr) {
+ // 判断登录过期和没有权限
+ var jsonRs;
+ if ('json' == param.dataType.toLowerCase()) {
+ jsonRs = result;
+ } else if ('html' == param.dataType.toLowerCase() || 'text' == param.dataType.toLowerCase()) {
+ jsonRs = admin.parseJSON(result);
+ }
+ if (jsonRs) {
+ if (jsonRs.code == 401) {
+ layer.msg(jsonRs.msg, {icon: 2, time: 1500}, function () {
+ location.replace('/login');
+ }, 1000);
+ return;
+ } else if ('html' == param.dataType.toLowerCase() && jsonRs.code == 403) {
+ layer.msg(jsonRs.msg, {icon: 2});
+ }
+ }
+ successCallback(result, status, xhr);
+ };
+ param.error = function (xhr) {
+ //{code: xhr.status, msg: xhr.statusText}
+ param.success(xhr.responseText,xhr.status,xhr);
+ };
+ $.ajax(param);
+ },
+ // 显示加载动画
+ showLoading: function (element) {
+ $(element).append('<i class="layui-icon layui-icon-loading layui-anim layui-anim-rotate layui-anim-loop admin-loading"></i>');
+ },
+ // 移除加载动画
+ removeLoading: function (element) {
+ $(element + '>.admin-loading').remove();
+ },
+ // 缓存临时数据
+ putTempData: function (key, value) {
+ if (value) {
+ layui.sessionData('tempData', {key: key, value: value});
+ } else {
+ layui.sessionData('tempData', {key: key, remove: true});
+ }
+ },
+ // 获取缓存临时数据
+ getTempData: function (key) {
+ return layui.sessionData('tempData')[key];
+ },
+ // 滑动选项卡
+ rollPage: function (d) {
+ var $tabTitle = $('.layui-layout-admin .layui-body .layui-tab .layui-tab-title');
+ var left = $tabTitle.scrollLeft();
+ if ('left' === d) {
+ $tabTitle.scrollLeft(left - 120);
+ } else if ('auto' === d) {
+ var autoLeft = 0;
+ $tabTitle.children("li").each(function () {
+ if ($(this).hasClass('layui-this')) {
+ return false;
+ } else {
+ autoLeft += $(this).outerWidth();
+ }
+ });
+ $tabTitle.scrollLeft(autoLeft - 47);
+ } else {
+ $tabTitle.scrollLeft(left + 120);
+ }
+ },
+ // 刷新主题部分
+ refresh: function () {
+ admin.isRefresh = true;
+ Q.refresh();
+ },
+ // 判断是否为json
+ parseJSON: function (str) {
+ if (typeof str == 'string') {
+ try {
+ var obj = JSON.parse(str);
+ if (typeof obj == 'object' && obj) {
+ return obj;
+ }
+ } catch (e) {
+ }
+ }
+ },
+ formatDate:function (str) {
+ if (str == null || str == "") {
+ return;
+ }
+ switch (str.length) {
+ case 8:
+ str = str.substring(0, 4) + "-" + str.substring(4, 6) + "-" + str.substring(6, 8);
+ return str;
+ case 12:
+ str = str.substring(0, 4) + "-" + str.substring(4, 6) + "-" + str.substring(6, 8) + " " + str.substring(8, 10)
+ + ":" + str.substring(10, 12);
+ return str;
+ case 14:
+ str = str.substring(0, 4) + "-" + str.substring(4, 6) + "-" + str.substring(6, 8) + " " + str.substring(8, 10)
+ + ":" + str.substring(10, 12) + ":" + str.substring(12, 14);
+ return str;
+ default:
+ return str;
+ }
+ },
+ errorBack: function (err) {
+ layer.closeAll('loading');
+ if (403 == err.status) {
+ layer.msg("无资源权限!", {icon: 2, time: 1500});
+ return;
+ }
+ if (200 == err.status) {
+ layer.msg("请求异常,请刷新页面重新操作", {icon: 2, time: 1500});
+ return;
+ } else {
+ layer.msg("请求服务器失败!", {icon: 2});
+ }
+ }
+ };
+
+ // ewAdmin提供的事件
+ admin.events = {
+ // 折叠侧导航
+ flexible: function (e) {
+ var expand = $('.layui-layout-admin').hasClass('admin-nav-mini');
+ admin.flexible(expand);
+ },
+ // 刷新主体部分
+ refresh: function () {
+ admin.refresh();
+ },
+ //后退
+ back: function () {
+ history.back();
+ },
+ // 设置主题
+ theme: function () {
+ admin.popupRight(baseUrl+'home/theme');
+ },
+ // 全屏
+ fullScreen: function (e) {
+ var ac = 'layui-icon-screen-full', ic = 'layui-icon-screen-restore';
+ var ti = $(this).find('i');
+
+ var isFullscreen = document.fullscreenElement || document.msFullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement || false;
+ if (isFullscreen) {
+ var efs = document.exitFullscreen || document.webkitExitFullscreen || document.mozCancelFullScreen || document.msExitFullscreen;
+ if (efs) {
+ efs.call(document);
+ } else if (window.ActiveXObject) {
+ var ws = new ActiveXObject('WScript.Shell');
+ ws && ws.SendKeys('{F11}');
+ }
+ ti.addClass(ac).removeClass(ic);
+ } else {
+ var el = document.documentElement;
+ var rfs = el.requestFullscreen || el.webkitRequestFullscreen || el.mozRequestFullScreen || el.msRequestFullscreen;
+ if (rfs) {
+ rfs.call(el);
+ } else if (window.ActiveXObject) {
+ var ws = new ActiveXObject('WScript.Shell');
+ ws && ws.SendKeys('{F11}');
+ }
+ ti.addClass(ic).removeClass(ac);
+ }
+ },
+ // 左滑动tab
+ leftPage: function () {
+ admin.rollPage("left");
+ },
+ // 右滑动tab
+ rightPage: function () {
+ admin.rollPage();
+ },
+ // 关闭当前选项卡
+ closeThisTabs: function () {
+ var $title = $('.layui-layout-admin .layui-body .layui-tab .layui-tab-title');
+ if ($title.find('li').first().hasClass('layui-this')) {
+ return;
+ }
+ $title.find('li.layui-this').find(".layui-tab-close").trigger("click");
+ },
+ // 关闭其他选项卡
+ closeOtherTabs: function () {
+ $('.layui-layout-admin .layui-body .layui-tab .layui-tab-title li:gt(0):not(.layui-this)').find('.layui-tab-close').trigger('click');
+ },
+ // 关闭所有选项卡
+ closeAllTabs: function () {
+ $('.layui-layout-admin .layui-body .layui-tab .layui-tab-title li:gt(0)').find('.layui-tab-close').trigger('click');
+ },
+ // 关闭所有弹窗
+ closeDialog: function () {
+ layer.closeAll('page');
+ },
+ //刷新字典
+ refreshDict: function (){
+ layer.confirm('确定要刷新数据字典吗?', {
+ btn: ['确定', '取消']
+ }, function (index, layero) {
+ layer.closeAll('dialog'); //加入这个信息点击确定 会关闭这个消息框
+ admin.dgo(baseUrl+"dictrefresh", {}, function (data) {
+ if (data.code == 200) {
+ layer.msg("刷新数据字典成功!", {icon: 1, time: 1000});
+ DictPoolToolkit().initAll(baseUrl+"dictpool");
+ } else if (data.code == 401) {
+ layer.msg(data.msg, {icon: 2, time: 1500}, function () {
+ location.replace('/login');
+ }, 1000);
+ return;
+ } else {
+ layer.msg(data.msg, {icon: 2, time: 1500});
+ }
+ }, function () {
+ layer.msg("数据字典刷新失败,访问服务器失败!", {icon: 2, time: 1500});
+ });
+ });
+ }
+ };
+
+ // 所有ew-event
+ $('body').on('click', '*[ew-event]', function () {
+ var event = $(this).attr('ew-event');
+ var te = admin.events[event];
+ te && te.call(this, $(this));
+ });
+
+ // 移动设备遮罩层点击事件
+ $('.site-mobile-shade').click(function () {
+ admin.flexible(true);
+ });
+
+ // 侧导航折叠状态下鼠标经过显示提示
+ $('body').on('mouseenter', '.layui-layout-admin.admin-nav-mini .layui-side .layui-nav .layui-nav-item>a', function () {
+ var tipText = $(this).find('cite').text();
+ if (document.body.clientWidth > 750) {
+ layer.tips(tipText, this);
+ }
+ }).on('mouseleave', '.layui-layout-admin.admin-nav-mini .layui-side .layui-nav .layui-nav-item>a', function () {
+ layer.closeAll('tips');
+ });
+
+ // 侧导航折叠状态下点击展开
+ $('body').on('click', '.layui-layout-admin.admin-nav-mini .layui-side .layui-nav .layui-nav-item>a', function () {
+ if (document.body.clientWidth > 750) {
+ layer.closeAll('tips');
+ admin.flexible(true);
+ }
+ });
+
+ // 所有lay-tips处理
+ $('body').on('mouseenter', '*[lay-tips]', function () {
+ var tipText = $(this).attr('lay-tips');
+ var dt = $(this).attr('lay-direction');
+ layer.tips(tipText, this, {tips: dt || 1, time: -1});
+ }).on('mouseleave', '*[lay-tips]', function () {
+ layer.closeAll('tips');
+ });
+
+ exports('admin', admin);
+});
diff --git a/src/main/resources/static/custom/module/index.js b/src/main/resources/static/custom/module/index.js
old mode 100755
new mode 100644
index 992d4d9..df14f67
--- a/src/main/resources/static/custom/module/index.js
+++ b/src/main/resources/static/custom/module/index.js
@@ -2,6 +2,7 @@
var admin = layui.admin;
var layer = layui.layer;
var element = layui.element;
+ var baseUrl = window.location.pathname;
var index = {
pageTabs: true, // 是否开启多标签
@@ -14,6 +15,12 @@
if ('javascript:;' != menuPath && '' != menuPath) {
var key = menuPath.replace(/[?:=&/]/g, '_');
$(this).attr('href', '#!' + key);
+ if (menuPath.startsWith("/")) {
+ menuPath = baseUrl + menuPath.substring(1);
+ } else {
+ menuPath = baseUrl + menuPath;
+ }
+ console.log(menuPath);
Q.reg(key, function () {
index.loadView({
menuId: key,
@@ -28,7 +35,7 @@
// 主页
Q.init({
- index: 'home_console'
+ index: '_home_console'
});
// tab选项卡切换监听
element.on('tab(admin-pagetabs)', function (data) {
@@ -134,7 +141,7 @@
// 退出登录点击事件
$('#btnLogout').click(function () {
layer.confirm('确定退出登录?', function () {
- location.replace('logout');
+ location.replace(baseUrl+'logout');
});
});
}
diff --git a/src/main/resources/templates/login.html b/src/main/resources/templates/login.html
index 1d2e6ef..4201180 100644
--- a/src/main/resources/templates/login.html
+++ b/src/main/resources/templates/login.html
@@ -93,7 +93,7 @@
var field = obj.field;
layer.load(2);
$.ajax({
- url: '/login/form',
+ url: '[[@{/login/form}]]',
data: field,
type: 'POST',
success: function (data) {
diff --git a/src/main/resources/templates/system/confirm/confirm.html b/src/main/resources/templates/system/confirm/confirm.html
new file mode 100644
index 0000000..062ffb0
--- /dev/null
+++ b/src/main/resources/templates/system/confirm/confirm.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity4">
+<head>
+ <meta charset="UTF-8">
+ <title>Title</title>
+</head>
+<body>
+<button id="button-auth" style="margin:100px 100px auto;text-align: center;color: green;width: 200px;height: 80px;">确认</button>
+</body>
+<script type="text/javascript" th:src="@{/static/libs/jquery/jquery-3.2.1.min.js}"></script>
+<script>
+ /**
+ * @return {string}
+ */
+ function GetUrlRefnoPara() {
+ var url = document.location.toString();
+ var arrUrl = url.split("?");
+ var para = arrUrl[1].split("=");
+ return para[1]
+ }
+
+ /**
+ * @return {string}
+ */
+ function GetUserid() {
+ return "d1yctWs5+ks0iQN3m9bUvRHus6HbKbrs"
+ }
+ var allData = {
+ refno:GetUrlRefnoPara(),
+ userid:GetUserid()
+ }
+ $("#button-auth").click(function () {
+ $.ajax({
+ url: "[[@{/api/auth}]]",
+ type:"POST",
+ contentType:"application/json;charset=UTF-8",
+ data:JSON.stringify(allData),
+ success:function (data) {
+ if (data.retcode == 0) {
+ alert("认证成功")
+ }else {
+ alert(data.retmsg)
+ }
+ },
+ fail: function (data) {
+ alert(data.retmsg)
+ },
+ error:function (xhr) {
+ console.log(xhr)
+ }
+ })
+ })
+</script>
+</html>
+
diff --git a/src/main/resources/templates/system/device/form.html b/src/main/resources/templates/system/device/form.html
index ea0db7e..676124b 100644
--- a/src/main/resources/templates/system/device/form.html
+++ b/src/main/resources/templates/system/device/form.html
@@ -34,7 +34,7 @@
var layer = layui.layer;
var admin = layui.admin;
var form = layui.form;
- var url = '/device/add';
+ var url = '[[@{/device/add}]]';
// 回显user数据
var func = admin.getTempData('t_func');
// 清除admin域中的数据
@@ -43,7 +43,7 @@
$('input[name="deviceid"]').attr('readonly', 'readonly');
form.val('form', func);
$.ajax({
- url: "/region/all",
+ url: "[[@{/region/all}]]",
type: "GET",
success: function (data) {
if (data.retcode == '0') {
@@ -65,7 +65,7 @@
} else {
form.render('select', 'form')
$.ajax({
- url: "/region/all",
+ url: "[[@{/region/all}]]",
type: "GET",
success: function (data) {
if (data.retcode == '0') {
@@ -133,7 +133,7 @@
admin.finishPopupCenter();
} else if (result.retcode == 401) {
layer.msg(result.msg, {icon: 2, time: 1500}, function () {
- location.replace('/login');
+ location.replace('[[@{/login}]]');
}, 1000);
return;
} else {
diff --git a/src/main/resources/templates/system/device/index.html b/src/main/resources/templates/system/device/index.html
index 7561500..a6a0c55 100644
--- a/src/main/resources/templates/system/device/index.html
+++ b/src/main/resources/templates/system/device/index.html
@@ -60,7 +60,6 @@
</div>
</div>
</div>
-<!--<script src="/static/libs/layui/layui.js"></script>-->
<script>
layui.use(['form', 'table', 'layer', 'admin', 'element'], function () {
@@ -69,7 +68,7 @@
let admin = layui.admin;
// 渲染区域选择框
$.ajax({
- url: '/region/all',
+ url: '[[@{/region/all}]]',
type: 'GET',
success: function (data) {
if (data.retcode == '0') {
@@ -88,7 +87,7 @@
})
// 渲染状态选择框
$.ajax({
- url: 'device/status',
+ url: '[[@{device/status}]]',
type: 'GET',
success: function (data) {
console.log(data)
@@ -109,7 +108,7 @@
// 渲染表格
table.render({
elem: '#devicetable',
- url: '/device/list',
+ url: '[[@{/device/list}]]',
page: true,
cols: [
[
@@ -147,7 +146,7 @@
areano: areano,
deviceStatus: status
},
- url: "/device/search"
+ url: "[[@{/device/search}]]"
});
});
$('#btn-add-device').click(function () {
@@ -160,7 +159,7 @@
}
admin.popupCenter({
title: title,
- path: '/device/loadadd',
+ path: '[[@{/device/loadadd}]]',
finish: function () {
table.reload('devicetable', {});
}
@@ -172,7 +171,7 @@
admin.popupCenter({
title: title,
area: ['400px', '600px'],
- path: '/device/loadfunc'
+ path: '[[@{/device/loadfunc}]]'
});
};
// 工具条点击事件
@@ -192,7 +191,7 @@
layer.close(i);
layer.load(2);
let token = $("meta[name='_csrf_token']").attr("value");
- admin.go('/device/del', {
+ admin.go('[[@{/device/del}]]', {
deviceid: data.deviceid,
_csrf: token
}, function (data) {
diff --git a/src/main/resources/templates/system/dtl/shopdtl.html b/src/main/resources/templates/system/dtl/shopdtl.html
index 94fc668..82aa9ff 100644
--- a/src/main/resources/templates/system/dtl/shopdtl.html
+++ b/src/main/resources/templates/system/dtl/shopdtl.html
@@ -210,7 +210,7 @@
page: true,
cols: [
[
- {field: 'refno', title: '参考号', align: 'center', width: 200, sort: true},
+ {field: 'billno', title: '参考号', align: 'center', width: 200, sort: true},
{field: 'accdate', title: '记账日期', align: 'center', width: 100, sort: true},
{field: 'transdesc', title: '交易描述', align: 'center', width: 175},
{field: 'shopname', title: '商户名称', align: 'center', width: 250},
diff --git a/src/main/resources/templates/system/dtl/userdtl.html b/src/main/resources/templates/system/dtl/userdtl.html
index e7ebaff..607d809 100644
--- a/src/main/resources/templates/system/dtl/userdtl.html
+++ b/src/main/resources/templates/system/dtl/userdtl.html
@@ -175,7 +175,7 @@
page: true,
cols: [
[
- {field: 'refno', title: '参考号', align: 'center', width: 200, sort: true},
+ {field: 'billno', title: '参考号', align: 'center', width: 200, sort: true},
{field: 'accdate', title: '记账日期', align: 'center', width: 100, sort: true},
{field: 'transdesc', title: '交易描述', align: 'center', width: 175},
{field: 'userName', title: '姓名', align: 'center', width: 150},
diff --git a/src/main/resources/templates/system/region/form.html b/src/main/resources/templates/system/region/form.html
index fad5de3..1e253a2 100644
--- a/src/main/resources/templates/system/region/form.html
+++ b/src/main/resources/templates/system/region/form.html
@@ -40,7 +40,7 @@
var layer = layui.layer;
var admin = layui.admin;
var form = layui.form;
- var url = '/region/add';
+ var url = '[[@{/region/add}]]';
// 回显user数据
var func = admin.getTempData('t_func');
// 清除admin域中的数据
@@ -98,7 +98,7 @@
admin.finishPopupCenter();
} else if (result.retcode == 401) {
layer.msg(result.msg, {icon: 2, time: 1500}, function () {
- location.replace('/login');
+ location.replace('[[@{/login}]]');
}, 1000);
return;
} else {
diff --git a/src/main/resources/templates/system/region/index.html b/src/main/resources/templates/system/region/index.html
index ab23c76..0fc9002 100644
--- a/src/main/resources/templates/system/region/index.html
+++ b/src/main/resources/templates/system/region/index.html
@@ -46,7 +46,7 @@
// 渲染表格
table.render({
elem: '#regiontable',
- url: '/region/list/0',
+ url: '[[@{/region/list/0}]]',
page: true,
toolbar: true,
cols: [
@@ -77,7 +77,7 @@
let key = $('#search-value').val();
table.reload('regiontable', {
where: {searchkey: key},
- url: "/region/search"
+ url: "[[@{/region/search}]]"
});
});
$('#btn-add-region').click(function () {
@@ -90,12 +90,12 @@
}
admin.popupCenter({
title: title,
- path: '/region/loadadd',
+ path: '[[@{/region/loadadd}]]',
finish: function () {
table.reload('regiontable', {});
// 更新区域树
$.ajax({
- url: '/region/tree',
+ url: '[[@{/region/tree}]]',
type: 'GET',
success: function (data) {
if (data.retcode == '0') {
@@ -126,7 +126,7 @@
admin.popupCenter({
title: title,
area: ['400px', '600px'],
- path: '/region/loadfunc'
+ path: '[[@{/region/loadfunc}]]'
});
};
// 工具条点击事件
@@ -146,7 +146,7 @@
layer.close(i);
layer.load(2);
let token = $("meta[name='_csrf_token']").attr("value");
- admin.go('/region/del', {
+ admin.go('[[@{/region/del}]]', {
areano: data.areano,
_csrf: token
}, function (data) {
@@ -155,7 +155,7 @@
if (data.retcode == 0) {
layer.msg(data.msg, {icon: 1});
$.ajax({
- url: '/region/tree',
+ url: '[[@{/region/tree}]]',
type: 'GET',
success: function (data) {
if (data.retcode == '0') {
@@ -179,7 +179,7 @@
});
} else if (data.retcode == 401) {
layer.msg(data.msg, {icon: 2, time: 1500}, function () {
- location.replace('/login');
+ location.replace('[[@{/login}]]');
}, 1000);
return;
} else {
@@ -199,7 +199,7 @@
//渲染数据
$.ajax({
- url: '/region/tree',
+ url: '[[@{/region/tree}]]',
type: 'GET',
success: function (data) {
if (data.retcode == '0') {
@@ -217,7 +217,7 @@
, click: function (region) {
if (region.data.children.size != 0) {
table.reload("regiontable", {
- url: "/region/list/" + region.data.id
+ url: "[[@{/region/list/}]]" + region.data.id
,page: {
curr: 1
}