H5开门添加设备使用次数统计,以及最常使用设备排序展示
diff --git a/src/main/java/com/supwisdom/dlpay/app/controller/AppController.java b/src/main/java/com/supwisdom/dlpay/app/controller/AppController.java
index c4d83a6..6de832e 100644
--- a/src/main/java/com/supwisdom/dlpay/app/controller/AppController.java
+++ b/src/main/java/com/supwisdom/dlpay/app/controller/AppController.java
@@ -40,7 +40,7 @@
return "apph5/remoteMintUIH5";
}
- //加载用户有权限开门的设备
+ //根据用户使用次数加载用户有权限开门的设备---常使用设备优先的排序原则
@ResponseBody
@RequestMapping("/loadAppDevList")
public Map loadAppDevList(@RequestParam(value = "userId",required = true,defaultValue = "")String userId){
@@ -104,13 +104,19 @@
}
}
- String tmpVal = rmtDev.substring(0, devNo - 1) + ctrlcode + rmtDev.substring(devNo);
- RedisUtil.set("remote_" + ncDevice.getDevphyid(), tmpVal);
- boolean b = appService.saveAppTDoorDtlByUserIdAndDevId(devId, userId);
- if (b=false){
- message="开门未成功!";
- }
+ String tmpVal = rmtDev.substring(0, devNo - 1) + ctrlcode + rmtDev.substring(devNo);
+ RedisUtil.set("remote_" + ncDevice.getDevphyid(), tmpVal);
+ //每次开门成功记录 此用户开门设备 次数 以便查询时根据经常使用设备进行 查询
+ boolean a = appService.recordFre(userId, Integer.parseInt(devId));
+ if (a=false){
+ message="记录开门次数失败!";
+ }
+ //存储流水
+ boolean b = appService.saveAppTDoorDtlByUserIdAndDevId(devId, userId);
+ if (b=false){
+ message=message+"流水存储失败!";
+ }
}catch (Exception e){
e.printStackTrace();
diff --git a/src/main/java/com/supwisdom/dlpay/app/dao/AppDao.java b/src/main/java/com/supwisdom/dlpay/app/dao/AppDao.java
index 0b956b5..1322745 100644
--- a/src/main/java/com/supwisdom/dlpay/app/dao/AppDao.java
+++ b/src/main/java/com/supwisdom/dlpay/app/dao/AppDao.java
@@ -1,6 +1,7 @@
package com.supwisdom.dlpay.app.dao;
+import com.supwisdom.dlpay.app.domain.TAppDevFre;
import com.supwisdom.dlpay.ncmgr.domain.TNcDevice;
import java.util.List;
@@ -10,4 +11,13 @@
//获取app远程开门最大流水号
public String getMaxAppRmtSeqNo();
+
+ //获取用户对指定设备的开门次数
+ public int getDevAppFreByUserId(String userId,int devId);
+
+ //修改设备开门次数
+ public int updateFreByUserIdAndDevId(String userId,int devId,int frequency);
+
+ //保存AppDevFre对象
+ public boolean saveAppDevFre(TAppDevFre bean);
}
diff --git a/src/main/java/com/supwisdom/dlpay/app/dao/impl/AppDaoImpl.java b/src/main/java/com/supwisdom/dlpay/app/dao/impl/AppDaoImpl.java
index 150e0bb..1df919d 100644
--- a/src/main/java/com/supwisdom/dlpay/app/dao/impl/AppDaoImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/app/dao/impl/AppDaoImpl.java
@@ -1,6 +1,7 @@
package com.supwisdom.dlpay.app.dao.impl;
import com.supwisdom.dlpay.app.dao.AppDao;
+import com.supwisdom.dlpay.app.domain.TAppDevFre;
import com.supwisdom.dlpay.ncmgr.domain.TNcDevice;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
@@ -20,9 +21,11 @@
@Transactional
@Override
public List<TNcDevice> findAllDevByUserId(String userId) {
- String sql = "select a.* from t_nc_device a where a.devtype='R' and a.deviceid in " +
- " (select b.deviceid from t_nc_cardlist b where b.operflag='A' and b.syncflag='Y' and b.custid=?1 ) " +
- " order by a.deviceid ";
+ String sql = "select a.* from t_nc_device a " +
+ " left join tb_app_devfre c on a.deviceid=c.deviceid " +
+ " where a.devtype='R' and a.deviceid in " +
+ " (select b.deviceid from t_nc_cardlist b where b.operflag='A' and b.syncflag='Y' and b.custid=?1 ) " +
+ " order by c.frequency desc ";
Query query = entityManager.createNativeQuery(sql, TNcDevice.class);
query.setParameter(1, userId);
List<TNcDevice> list = query.getResultList();
@@ -43,4 +46,43 @@
}
return null;
}
+
+ @Transactional
+ @Override
+ public int getDevAppFreByUserId(String userId, int devId) {
+ String sql = " select frequency from tb_app_devfre where custid=?1 and deviceid=?2 ";
+ Query query = entityManager.createNativeQuery(sql);
+ query.setParameter(1, userId);
+ query.setParameter(2, devId);
+ List list = query.getResultList();
+ if (list!=null && list.size()>0 && list.get(0)!=null){
+ return (int)list.get(0);
+ }
+ return 0;
+ }
+
+ @Transactional
+ @Override
+ public int updateFreByUserIdAndDevId(String userId, int devId,int frequency) {
+ String sql = "update tb_app_devfre set frequency=?1 where custid=?2 and deviceid=?3 ";
+ Query query = entityManager.createNativeQuery(sql);
+ query.setParameter(1, frequency);
+ query.setParameter(2, userId);
+ query.setParameter( 3, devId);
+ int i = query.executeUpdate();
+ return i;
+ }
+
+ @Transactional
+ @Override
+ public boolean saveAppDevFre(TAppDevFre bean) {
+ boolean flag=false;
+ try {
+ entityManager.persist(bean);
+ flag=true;
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ return flag;
+ }
}
diff --git a/src/main/java/com/supwisdom/dlpay/app/domain/TAppDevFre.java b/src/main/java/com/supwisdom/dlpay/app/domain/TAppDevFre.java
new file mode 100644
index 0000000..d7a1c9d
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/app/domain/TAppDevFre.java
@@ -0,0 +1,40 @@
+package com.supwisdom.dlpay.app.domain;
+
+import javax.persistence.*;
+
+@Entity
+@Table(name = "TB_APP_DEVFRE")
+public class TAppDevFre {
+ private TAppDevFreId Id;
+
+ private Integer frequency;
+
+ public TAppDevFre() {
+ }
+
+ public TAppDevFre(TAppDevFreId id, Integer frequency) {
+ Id = id;
+ this.frequency = frequency;
+ }
+
+ @EmbeddedId
+ @AttributeOverrides({
+ @AttributeOverride(name = "custId", column = @Column(name = "CUSTID", nullable = false, length = 32)),
+ @AttributeOverride(name = "deviceId", column = @Column(name = "DEVICEID", nullable = false, length = 32)) })
+ public TAppDevFreId getId() {
+ return Id;
+ }
+
+ public void setId(TAppDevFreId id) {
+ Id = id;
+ }
+
+ @Column(name = "FREQUENCY", nullable = false,length = 32)
+ public Integer getFrequency() {
+ return frequency;
+ }
+
+ public void setFrequency(Integer frequency) {
+ this.frequency = frequency;
+ }
+}
diff --git a/src/main/java/com/supwisdom/dlpay/app/domain/TAppDevFreId.java b/src/main/java/com/supwisdom/dlpay/app/domain/TAppDevFreId.java
new file mode 100644
index 0000000..9b87cb7
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/app/domain/TAppDevFreId.java
@@ -0,0 +1,37 @@
+package com.supwisdom.dlpay.app.domain;
+
+import javax.persistence.Column;
+import javax.persistence.Embeddable;
+import java.io.Serializable;
+
+@Embeddable
+public class TAppDevFreId implements Serializable {
+ private String custId;
+ private int deviceId;
+
+ public TAppDevFreId() {
+ }
+
+ public TAppDevFreId(String custId, int deviceId) {
+ this.custId = custId;
+ this.deviceId = deviceId;
+ }
+
+ @Column(name = "CUSTID", nullable = false, length = 32)
+ public String getCustId() {
+ return custId;
+ }
+
+ public void setCustId(String custId) {
+ this.custId = custId;
+ }
+
+ @Column(name = "DEVICEID", nullable = false, length = 32)
+ public int getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(int deviceId) {
+ this.deviceId = deviceId;
+ }
+}
diff --git a/src/main/java/com/supwisdom/dlpay/app/service/AppService.java b/src/main/java/com/supwisdom/dlpay/app/service/AppService.java
index 4a958f7..defa67b 100644
--- a/src/main/java/com/supwisdom/dlpay/app/service/AppService.java
+++ b/src/main/java/com/supwisdom/dlpay/app/service/AppService.java
@@ -8,11 +8,16 @@
public interface AppService {
- //根据userId获取此用户所有有权限的开门的设备--读头
+ //根据userId获取此用户所有有权限的开门的设备--读头 并根据用户常用设备进行排序,如果为新用户则默认排序
@Transactional(propagation = Propagation.REQUIRED,rollbackFor = {Exception.class})
public List<TNcDevice> findAllDevByUserId(String userId);
//根据设备编号和userId存储手机远程开门流水
@Transactional(propagation = Propagation.REQUIRED,rollbackFor = {Exception.class})
public boolean saveAppTDoorDtlByUserIdAndDevId(String devId,String userId);
+
+ //根据用户和开门设备 记录开门次数
+ @Transactional(propagation = Propagation.REQUIRED,rollbackFor = {Exception.class})
+ public boolean recordFre(String userId,int devId);
+
}
diff --git a/src/main/java/com/supwisdom/dlpay/app/service/impl/AppServiceImpl.java b/src/main/java/com/supwisdom/dlpay/app/service/impl/AppServiceImpl.java
index b7a759d..e74bcf3 100644
--- a/src/main/java/com/supwisdom/dlpay/app/service/impl/AppServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/app/service/impl/AppServiceImpl.java
@@ -3,6 +3,8 @@
import com.google.gson.Gson;
import com.supwisdom.dlpay.app.bean.CustomerInfo;
import com.supwisdom.dlpay.app.dao.AppDao;
+import com.supwisdom.dlpay.app.domain.TAppDevFre;
+import com.supwisdom.dlpay.app.domain.TAppDevFreId;
import com.supwisdom.dlpay.app.service.AppService;
import com.supwisdom.dlpay.doorlist.bean.TCustomerInfo;
import com.supwisdom.dlpay.framework.util.DateUtil;
@@ -143,4 +145,41 @@
}
+ @Override
+ public boolean recordFre(String userId, int devId) {
+ boolean flag = false;
+ try {
+ int fre = 0;
+ String freTmp = RedisUtil.get("userId_" + userId + "_devId_" + devId + "_fre");
+ if (freTmp==null || "0".equals(freTmp) || "-5".equals(freTmp)){
+ fre = appDao.getDevAppFreByUserId(userId, devId);
+ }else {
+ fre = Integer.parseInt(freTmp);
+ }
+
+ if (fre!=0){
+ appDao.updateFreByUserIdAndDevId(userId, devId, fre+1);
+ RedisUtil.set("userId_" + userId + "_devId_" + devId + "_fre",fre+1+"");
+ }else {
+ TAppDevFreId tAppDevFreId = new TAppDevFreId();
+ tAppDevFreId.setCustId(userId);
+ tAppDevFreId.setDeviceId(devId);
+ TAppDevFre tAppDevFre = new TAppDevFre();
+ tAppDevFre.setId(tAppDevFreId);
+ tAppDevFre.setFrequency(1);
+
+ appDao.saveAppDevFre(tAppDevFre);
+
+ RedisUtil.set("userId_" + userId + "_devId_" + devId + "_fre",1+"");
+ }
+ flag=true;
+
+
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+
+ return flag;
+ }
+
}