From c6f8a03a3675efa99a833e16ad34ac0dd0fbc9b0 Mon Sep 17 00:00:00 2001
From: fengjin <1435304038@qq.com>
Date: 星期三, 20 九月 2023 17:55:29 +0800
Subject: [PATCH] 1.扫码开门 2. 修改bug

---
 springcloud_k8s_panzhihuazhihuishequ/service_equipment/src/main/java/com/panzhihua/service_equipment/service/impl/UnionUserServiceImpl.java |  116 +++++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 110 insertions(+), 6 deletions(-)

diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_equipment/src/main/java/com/panzhihua/service_equipment/service/impl/UnionUserServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_equipment/src/main/java/com/panzhihua/service_equipment/service/impl/UnionUserServiceImpl.java
index 343f5e2..f565bca 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_equipment/src/main/java/com/panzhihua/service_equipment/service/impl/UnionUserServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_equipment/src/main/java/com/panzhihua/service_equipment/service/impl/UnionUserServiceImpl.java
@@ -7,20 +7,18 @@
 import com.panzhihua.common.model.vos.LoginUserInfoVO;
 import com.panzhihua.common.model.vos.R;
 import com.panzhihua.common.redis.TokenManager;
+import com.panzhihua.service_equipment.dao.*;
+import com.panzhihua.service_equipment.model.dos.*;
 import com.panzhihua.service_equipment.until.AccessUtil;
-import com.panzhihua.service_equipment.dao.UnionAccessMapper;
-import com.panzhihua.service_equipment.dao.UnionUserMapper;
-import com.panzhihua.service_equipment.dao.UsersMapper;
-import com.panzhihua.service_equipment.model.dos.UnionAccess;
-import com.panzhihua.service_equipment.model.dos.UnionUser;
-import com.panzhihua.service_equipment.model.dos.Users;
 import com.panzhihua.service_equipment.service.UnionUserService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -40,6 +38,24 @@
 
     @Resource
     private TokenManager tokenManager;
+
+    @Resource
+    private UnionOpenDoorMapper unionOpenDoorMapper;
+
+    @Resource
+    private UnionIntegralRuleMapper unionIntegralRuleMapper;
+
+    @Resource
+    private  UnionIntegralRuleRecordMapper unionIntegralRuleRecordMapper;
+
+    @Resource
+    private  UnionIntegralSummarizeMapper unionIntegralSummarizeMapper;
+
+    @Resource
+    private  UnionOutdoorSiteMapper unionOutdoorSiteMapper;
+
+    @Resource
+    private  UnionIntegralRecordMapper unionIntegralRecordMapper;
 
     /**
      * 总工会户外劳登录
@@ -204,4 +220,92 @@
         }
 
     }
+
+
+    /**
+     * 用户开门
+     *
+     * @return 总工会户外劳共用户
+     */
+    @Override
+    public  R openDoor(UnionUserDto unionUserDto,String qRCode){
+        log.info("开始开门当前用户为{}",unionUserDto);
+        UnionAccess unionAccess = unionAccessMapper.selectOne(new QueryWrapper<UnionAccess>().eq("q_r_code", qRCode));
+        if (unionAccess==null){
+            return R.fail("无效的二维码");
+        }
+        try {
+            accessUtil.deviceOpen(unionAccess.getSn(), unionUserDto.getName(), "scan", "occupant");
+        } catch (Exception e) {
+            e.printStackTrace(); // 打印异常信息
+            log.info("开门失败原因{}",e);
+            return  R.fail("开门失败请检查人脸照片是否你本人或者联系工作人员");
+        }
+        Integer userLastOpenDoorMinutesDiff = unionOpenDoorMapper.getUserLastOpenDoorMinutesDiff(unionUserDto.getId());
+        log.info("上次开门时间间隔时间{}分钟",userLastOpenDoorMinutesDiff);
+        QueryWrapper<UnionOpenDoor> queryWrapper = new QueryWrapper<>();
+        QueryWrapper<UnionOpenDoor> eq = queryWrapper.eq("user_id", unionUserDto.getId())
+                .eq("DATE(create_at)", LocalDate.now())
+                .eq("type", 1);
+        Integer count = unionOpenDoorMapper.selectCount(eq);
+        log.info("今日获得积分的开门次数为{}",count);
+        UnionIntegralRule unionIntegralRule =
+                unionIntegralRuleMapper.selectOne(new QueryWrapper<UnionIntegralRule>().eq("id", 1));
+        log.info("当前规则{}",unionIntegralRule);
+        if (unionIntegralRule.getDayNumber()>count && unionIntegralRule.getTimeNumber() <userLastOpenDoorMinutesDiff ){
+            log.info("此次开门获得积分");
+            UnionOpenDoor unionOpenDoor=new UnionOpenDoor();
+            unionOpenDoor.setSiteId(unionAccess.getSiteId());
+            unionOpenDoor.setUserId(unionUserDto.getId());
+            unionOpenDoor.setType(1);
+            unionOpenDoor.setCreateAt(LocalDateTime.now());
+            unionOpenDoorMapper.insert(unionOpenDoor);
+            UnionIntegralRuleRecord unionIntegralRuleRecord = unionIntegralRuleRecordMapper.selectOne(new QueryWrapper<UnionIntegralRuleRecord>()
+                    .eq("rule_id", unionIntegralRule.getId())
+                    .eq("count", count + 1));
+            log.info("此次开门获得积分{}",unionIntegralRuleRecord.getIntegralNumber());
+            UnionOutdoorSite unionOutdoorSite = unionOutdoorSiteMapper.selectById(unionAccess.getSiteId());
+            UnionIntegralSummarize unionIntegralSummarize = unionIntegralSummarizeMapper.selectOne(new QueryWrapper<UnionIntegralSummarize>()
+                    .eq("community_id", unionOutdoorSite.getAreaCode()).eq("user_id", unionUserDto.getId()));
+            if (unionIntegralSummarize==null){
+                log.info("第一次开门在此区域没有积分表新增一个");
+                unionIntegralSummarize=new UnionIntegralSummarize();
+                unionIntegralSummarize.setUserId(unionUserDto.getId().toString());
+                unionIntegralSummarize.setCommunityId(unionOutdoorSite.getAreaCode());
+                unionIntegralSummarize.setCreateTime(new Date());
+                unionIntegralSummarize.setUpdateTime(new Date());
+                unionIntegralSummarize.setAllIntegral(unionIntegralRuleRecord.getIntegralNumber().toString());
+                unionIntegralSummarizeMapper.insert(unionIntegralSummarize);
+            }else {
+                log.info("用户积分修改前{}",unionIntegralSummarize);
+                unionIntegralSummarize.setUpdateTime(new Date());
+                unionIntegralSummarize.setAllIntegral(String.valueOf((Integer.parseInt(unionIntegralSummarize.getAllIntegral())
+                        +unionIntegralRuleRecord.getIntegralNumber())));
+                log.info("用户积分修改后{}",unionIntegralSummarize);
+                unionIntegralSummarizeMapper.updateById(unionIntegralSummarize);
+            }
+            log.info("新增积分记录");
+            UnionIntegralRecord unionIntegralRecord=new UnionIntegralRecord();
+            unionIntegralRecord.setIntegralType("1");
+            unionIntegralRecord.setIntegral(unionIntegralRuleRecord.getIntegralNumber().toString());
+            unionIntegralRecord.setUserId(unionUserDto.getId().toString());
+            unionIntegralRecord.setCreateTime(new Date());
+            unionIntegralRecord.setUpdateTime(new Date());
+            unionIntegralRecord.setCommunityId(unionOutdoorSite.getAreaCode());
+            unionIntegralRecord.setIntegralId(unionIntegralSummarize.getId());
+            unionIntegralRecord.setType("1");
+            unionIntegralRecordMapper.insert(unionIntegralRecord);
+            return R.ok("开门成功");
+        }
+        else {
+            log.info("此次开门不获得积分");
+            UnionOpenDoor unionOpenDoor=new UnionOpenDoor();
+            unionOpenDoor.setSiteId(unionAccess.getSiteId());
+            unionOpenDoor.setUserId(unionUserDto.getId());
+            unionOpenDoor.setType(2);
+            unionOpenDoor.setCreateAt(LocalDateTime.now());
+            unionOpenDoorMapper.insert(unionOpenDoor);
+            return  R.ok("开门成功");
+        }
+    }
 }

--
Gitblit v1.7.1