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;

+    }

+

 }