springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/UnionUserApi.java
@@ -59,6 +59,7 @@ @ApiOperation(value = "总工会户外劳工站用户认证",response = UnionUserDto.class) @PostMapping("/authentication") public R authentication(@RequestBody UnionUserDto unionUserDto){ unionUserDto.setIsApplets(1); // LoginUserInfoVO loginUser = this.getLoginUserInfo(); // LoginUserInfoVO userInfoByUserId = userService.getUserInfoByUserId(loginUser.getUserId().toString()).getData(); LoginUserInfoVO userInfoByUserId = userService.getUserInfoByUserId("1588095866109984769").getData(); springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/community/CommunityUnionService.java
@@ -139,7 +139,15 @@ * @return 总工会户外劳共用户 */ @PostMapping("/unionUser/authentication") public R unionUserAuthentication(@RequestBody UnionUserDto unionUserDto); R unionUserAuthentication(@RequestBody UnionUserDto unionUserDto); /** * 用户开门 * @param qRCode 二维码字符串 * @return 总工会户外劳共用户 */ @GetMapping("/unionUser/openDoor") R openDoor(@RequestParam(value = "qRCode") String qRCode); /** springcloud_k8s_panzhihuazhihuishequ/huacheng_union_applets/src/main/java/com/chuangongzhijia/huacheng_union_applets/api/UnionUserApi.java
@@ -22,8 +22,8 @@ private CommunityUnionService communityUnionService; @Resource private UserService userService; // @Resource // private UserService userService; /** * 总工会户外劳登录 * @@ -50,4 +50,16 @@ return communityUnionService.unionUserAuthentication(unionUserDto); } /** * 用户开门 * @param qRCode 二维码字符串 * @return 总工会户外劳共用户 */ @ApiOperation(value = "用户开门") @GetMapping("/openDoor") public R openDoor(@RequestParam(value = "qRCode") String qRCode){ return communityUnionService.openDoor(qRCode); } } springcloud_k8s_panzhihuazhihuishequ/service_equipment/src/main/java/com/panzhihua/service_equipment/api/UnionUserApi.java
@@ -53,12 +53,14 @@ public R authentication(@RequestBody UnionUserDto unionUserDto, @CurrentUser UnionUserDto unionUser){ if (unionUserDto.getIsApplets().equals(1)) { log.info("小程序进入无需验证"); return userService.authentication(unionUserDto);} return userService.authentication(unionUserDto); } else { log.info("h5进入"); if (unionUser != null) { unionUserDto.setId(unionUser.getId()); return userService.authentication(unionUserDto);} return userService.authentication(unionUserDto); } else { return R.fail("请重新登录"); } @@ -76,4 +78,20 @@ return userService.selectById(id); } /** * 用户开门 * * @return 总工会户外劳共用户 */ @GetMapping("/openDoor") public R openDoor(@RequestParam(value = "qRCode") String qRCode,@CurrentUser UnionUserDto unionUser){ if (unionUser != null) { return userService.openDoor(unionUser,qRCode); } else { return R.fail("请重新登录"); } } } springcloud_k8s_panzhihuazhihuishequ/service_equipment/src/main/java/com/panzhihua/service_equipment/dao/UnionIntegralRecordMapper.java
@@ -24,10 +24,10 @@ UnionIntegralRecord getData(@Param("id") String id); int insert(@Param("item") UnionIntegralRecordDto item); int insertOne(@Param("item") UnionIntegralRecordDto item); int update(@Param("item") UnionIntegralRecordDto item); int updateOne(@Param("item") UnionIntegralRecordDto item); /** * 删除接口 springcloud_k8s_panzhihuazhihuishequ/service_equipment/src/main/java/com/panzhihua/service_equipment/dao/UnionIntegralRuleMapper.java
New file @@ -0,0 +1,18 @@ package com.panzhihua.service_equipment.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.panzhihua.service_equipment.model.dos.UnionIntegralRule; import org.apache.ibatis.annotations.Mapper; /** * <p> * 积分规则表 Mapper 接口 * </p> * * @author fengjin * @since 2023-09-20 */ @Mapper public interface UnionIntegralRuleMapper extends BaseMapper<UnionIntegralRule> { } springcloud_k8s_panzhihuazhihuishequ/service_equipment/src/main/java/com/panzhihua/service_equipment/dao/UnionIntegralRuleRecordMapper.java
New file @@ -0,0 +1,17 @@ package com.panzhihua.service_equipment.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.panzhihua.service_equipment.model.dos.UnionIntegralRuleRecord; import org.apache.ibatis.annotations.Mapper; /** * <p> * 积分规则表 Mapper 接口 * </p> * * @author fengjin * @since 2023-09-20 */ @Mapper public interface UnionIntegralRuleRecordMapper extends BaseMapper<UnionIntegralRuleRecord> { } springcloud_k8s_panzhihuazhihuishequ/service_equipment/src/main/java/com/panzhihua/service_equipment/dao/UnionOpenDoorMapper.java
New file @@ -0,0 +1,20 @@ package com.panzhihua.service_equipment.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.panzhihua.service_equipment.model.dos.UnionOpenDoor; import org.apache.ibatis.annotations.Mapper; import org.springframework.data.repository.query.Param; /** * <p> * 开门记录表 Mapper 接口 * </p> * * @author fengjin * @since 2023-09-20 */ @Mapper public interface UnionOpenDoorMapper extends BaseMapper<UnionOpenDoor> { Integer getUserLastOpenDoorMinutesDiff(@Param("userId") Long userId); } springcloud_k8s_panzhihuazhihuishequ/service_equipment/src/main/java/com/panzhihua/service_equipment/model/dos/UnionAccess.java
@@ -71,4 +71,16 @@ @ApiModelProperty(value = "创建时间") private LocalDateTime createAt; /** * 设备序列号 */ @ApiModelProperty(value = "设备序列号") private String qRCode; /** * 设备名 */ @ApiModelProperty(value = "设备名") private String qRCodeUrl; } springcloud_k8s_panzhihuazhihuishequ/service_equipment/src/main/java/com/panzhihua/service_equipment/model/dos/UnionIntegralRecord.java
@@ -69,6 +69,12 @@ private String type; /** * 积分id */ @ApiModelProperty(value = "积分id") private String integralId; /** * 用户姓名 */ @TableField(exist = false) springcloud_k8s_panzhihuazhihuishequ/service_equipment/src/main/java/com/panzhihua/service_equipment/model/dos/UnionIntegralRule.java
New file @@ -0,0 +1,73 @@ package com.panzhihua.service_equipment.model.dos; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; import java.time.LocalDateTime; /** * <p> * 积分规则表 * </p> * * @author fengjin * @since 2023-09-20 */ @TableName("union_integral_rule") @Data @ApiModel("积分规则表") public class UnionIntegralRule implements Serializable { private static final long serialVersionUID = 1L; /** * ,主键 */ @TableId(value = "id", type = IdType.AUTO) @ApiModelProperty(value = "主键id") private Long id; /** * 积分规则名称 */ @ApiModelProperty(value = "积分规则名称") private String name; /** * 每日开门限制 */ @ApiModelProperty(value = "每日开门限制") private Integer dayNumber; /** * 每次间隔时间限制 */ @ApiModelProperty(value = "每次间隔时间限制") private Integer timeNumber; /** * 创建时间 */ @ApiModelProperty(value = "创建时间") private LocalDateTime createAt; /** * 修改时间 */ @ApiModelProperty(value = "修改时间") private LocalDateTime updateAt; /** * 清零时间 */ @ApiModelProperty(value = "清零时间") private LocalDateTime zeroTime; } springcloud_k8s_panzhihuazhihuishequ/service_equipment/src/main/java/com/panzhihua/service_equipment/model/dos/UnionIntegralRuleRecord.java
New file @@ -0,0 +1,59 @@ package com.panzhihua.service_equipment.model.dos; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; import java.time.LocalDateTime; /** * <p> * 积分规则表次数表 * </p> * * @author fengjin * @since 2023-09-20 */ @TableName("union_integral_rule_record") @Data @ApiModel("积分规则表次数表") public class UnionIntegralRuleRecord implements Serializable { private static final long serialVersionUID = 1L; /** * ,主键 */ @TableId(value = "id", type = IdType.AUTO) @ApiModelProperty(value = "主键id") private Long id; /** * 规则id */ @ApiModelProperty(value = "规则id") private String ruleId; /** * 次数 */ @ApiModelProperty(value = "次数") private Integer count; /** * 积分数 */ @ApiModelProperty(value = "积分数") private Integer integralNumber; /** * 新增时间 */ @ApiModelProperty(value = "新增时间") private LocalDateTime createAt; } springcloud_k8s_panzhihuazhihuishequ/service_equipment/src/main/java/com/panzhihua/service_equipment/model/dos/UnionOpenDoor.java
New file @@ -0,0 +1,59 @@ package com.panzhihua.service_equipment.model.dos; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; import java.time.LocalDateTime; /** * <p> * 开门记录表 * </p> * * @author fengjin * @since 2023-09-20 */ @TableName("union_open_door") @Data @ApiModel("开门记录表") public class UnionOpenDoor implements Serializable { private static final long serialVersionUID = 1L; /** * ,主键 */ @TableId(value = "id", type = IdType.AUTO) @ApiModelProperty(value = "主键") private Long id; /** * 站点id */ @ApiModelProperty(value = "站点id") private Integer siteId; /** * 用户id */ @ApiModelProperty(value = "用户id") private Long userId; /** * 创建时间 */ @ApiModelProperty(value = " 创建时间") private LocalDateTime createAt; /** * 1 获得积分开门 2 普通开门不活动积分 */ @ApiModelProperty(value = " 1 获得积分开门 2 普通开门不活动积分") private Integer type; } springcloud_k8s_panzhihuazhihuishequ/service_equipment/src/main/java/com/panzhihua/service_equipment/service/UnionUserService.java
@@ -47,4 +47,11 @@ */ UnionUserDto selectById(Long id); /** * 用户开门 * * @return 总工会户外劳共用户 */ R openDoor(UnionUserDto unionUserDto,String qRCode); } springcloud_k8s_panzhihuazhihuishequ/service_equipment/src/main/java/com/panzhihua/service_equipment/service/impl/UnionIntegralRecordServiceImpl.java
@@ -32,7 +32,7 @@ @Override public R insert(UnionIntegralRecordDto item) { int num= baseMapper.insert(item); int num= baseMapper.insertOne(item); if(num>0) { return R.ok(); @@ -43,7 +43,7 @@ @Override public R update(UnionIntegralRecordDto item) { int num= baseMapper.update(item); int num= baseMapper.updateOne(item); if(num>0) { return R.ok(); springcloud_k8s_panzhihuazhihuishequ/service_equipment/src/main/java/com/panzhihua/service_equipment/service/impl/UnionReportServiceImpl.java
@@ -66,13 +66,17 @@ Page page = new Page(unionReportDto.getPageNum(), unionReportDto.getPageSize()); QueryWrapper<UnionReport> unionOutdoorLaborDynamicQueryWrapper = new QueryWrapper<>(); if (unionReportDto.getIsApplets().equals(1)){ unionOutdoorLaborDynamicQueryWrapper.eq("create_user_id",unionReportDto.getCreateUserId()).eq("type",2); unionOutdoorLaborDynamicQueryWrapper.eq("create_user_id",unionReportDto.getCreateUserId()); if (unionReportDto.getType()!=null) unionOutdoorLaborDynamicQueryWrapper.eq("type",unionReportDto.getType()); if (unionReportDto.getStatus()!=null) unionOutdoorLaborDynamicQueryWrapper.eq("status",unionReportDto.getStatus()); }else if(unionReportDto.getIsApplets().equals(3)){ unionOutdoorLaborDynamicQueryWrapper.eq("create_union_user_id",unionReportDto.getCreateUnionUserId()).eq("type",2); unionOutdoorLaborDynamicQueryWrapper.eq("create_union_user_id",unionReportDto.getCreateUnionUserId()).eq("type",unionReportDto.getType()); if (unionReportDto.getStatus()!=null) unionOutdoorLaborDynamicQueryWrapper.eq("status",unionReportDto.getStatus()); if (unionReportDto.getType()!=null) unionOutdoorLaborDynamicQueryWrapper.eq("type",unionReportDto.getType()); } Page pageResult = baseMapper.selectPage(page, unionOutdoorLaborDynamicQueryWrapper); pageResult.setTotal(pageResult.getRecords().size()); 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("开门成功"); } } } springcloud_k8s_panzhihuazhihuishequ/service_equipment/src/main/resources/mapper/UnionIntegralRecordMapper.xml
@@ -48,7 +48,7 @@ order by create_time desc </select> <insert id="insert"> <insert id="insertOne"> insert into union_integral_record <trim prefix="(" suffix=")" suffixOverrides=","> <if test="item.id != null and item.id != '' "> @@ -95,7 +95,7 @@ </trim> </insert> <update id="update"> <update id="updateOne"> update union_integral_record <set> <if test="item.id != null and item.id != '' "> springcloud_k8s_panzhihuazhihuishequ/service_equipment/src/main/resources/mapper/UnionIntegralRuleMapper.xml
New file @@ -0,0 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.panzhihua.service_equipment.dao.UnionIntegralRuleMapper"> </mapper> springcloud_k8s_panzhihuazhihuishequ/service_equipment/src/main/resources/mapper/UnionIntegralRuleRecordMapper.xml
New file @@ -0,0 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.panzhihua.service_equipment.dao.UnionIntegralRuleRecordMapper"> </mapper> springcloud_k8s_panzhihuazhihuishequ/service_equipment/src/main/resources/mapper/UnionOpenDoorMapper.xml
New file @@ -0,0 +1,18 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.panzhihua.service_equipment.dao.UnionOpenDoorMapper"> <select id="getUserLastOpenDoorMinutesDiff" resultType="java.lang.Integer"> SELECT TIMESTAMPDIFF(MINUTE, ( SELECT MAX(create_at) FROM union_open_door WHERE user_id = #{userId} ), NOW()) AS minutes_diff FROM union_open_door WHERE user_id = #{userId} ORDER BY create_at DESC LIMIT 1; </select> </mapper>