springcloud_k8s_panzhihuazhihuishequ/applets_backstage/src/main/java/com/panzhihua/applets_backstage/api/CommunityConvenientApi.java
@@ -307,7 +307,6 @@ @ApiOperation(value = "新增便民服务商家") @PostMapping("/merchant/add") public R addMerchant(@RequestBody @Validated(AddGroup.class) ConvenientMerchantDTO convenientMerchantDTO) { log.error("catTimeStamp进入appletsbackstage" + convenientMerchantDTO.getAccount() + Instant.now().toEpochMilli()); convenientMerchantDTO.setCreatedBy(this.getUserId()); return communityService.addMerchant(convenientMerchantDTO); } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActCommiteeVO.java
@@ -1,5 +1,7 @@ package com.panzhihua.common.model.vos.community; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -38,6 +40,7 @@ * 小区id */ @ApiModelProperty(value = "小区id") @JsonSerialize(using = ToStringSerializer.class) private Long areaId; /** springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComPropertyVO.java
@@ -1,5 +1,7 @@ package com.panzhihua.common.model.vos.community; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -76,5 +78,6 @@ private String areaName; @ApiModelProperty("小区id") @JsonSerialize(using = ToStringSerializer.class) private Long areaId; } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/ConvenientApi.java
@@ -365,7 +365,6 @@ */ @PostMapping("/merchant/add") public R addMerchant(@RequestBody ConvenientMerchantDTO convenientMerchantDTO) { log.error("catTimeStamp进入service_community" + convenientMerchantDTO.getAccount() + Instant.now().toEpochMilli()); return convenientMerchantService.addMerchant(convenientMerchantDTO); } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ConvenientMerchantServiceImpl.java
@@ -5,7 +5,6 @@ import static org.apache.commons.lang3.StringUtils.isNotBlank; import java.text.SimpleDateFormat; import java.time.Instant; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -13,7 +12,6 @@ import javax.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -56,6 +54,8 @@ import com.panzhihua.service_community.model.dos.ConvenientViewStatisticsDO; import com.panzhihua.service_community.service.ConvenientMerchantService; import lombok.extern.slf4j.Slf4j; /** * @title: ConvenientMerchantServiceImpl * @projectName: 成都呐喊信息技术有限公司-智慧社区项目 @@ -83,7 +83,6 @@ @Override @Transactional(rollbackFor = Exception.class) public R addMerchant(ConvenientMerchantDTO convenientMerchantDTO) { log.error("catTimeStamp开始执行addMerchant" + convenientMerchantDTO.getAccount() + Instant.now().toEpochMilli()); ComActDO comActDO = comActDAO.selectById(convenientMerchantDTO.getCommunityId()); ConvenientMerchantDO convenientMerchantDO = new ConvenientMerchantDO(); BeanUtils.copyProperties(convenientMerchantDTO, convenientMerchantDO); @@ -103,7 +102,6 @@ }); } } log.error("catTimeStamp商家创建完成开始添加用户" + convenientMerchantDTO.getAccount() + Instant.now().toEpochMilli()); //添加user R addUserResult = userService.addConvenientMerchantUser(convenientMerchantDTO); if (R.isOk(addUserResult)) { @@ -113,7 +111,6 @@ } else { throw new ServiceException("406", addUserResult.getMsg()); } log.error("catTimeStamp全部完成" + convenientMerchantDTO.getAccount() + Instant.now().toEpochMilli()); return R.ok(); } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActActivityMapper.xml
@@ -54,6 +54,6 @@ </select> <select id="getIndexTopActivityList" resultMap="BaseResultMap"> SELECT * FROM `com_act_activity` WHERE community_id = #{communityId} and is_top = 1 and sign_up_end >= now() and sign_up_begin <= now() WHERE community_id = #{communityId} and is_top = 1 and sign_up_end >= now() </select> </mapper> springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ConvenientMerchantMapper.xml
@@ -60,7 +60,7 @@ OR ccm.phone LIKE CONCAT('%', #{pageConvenientMerchantDTO.keyword}, '%') ) </if> GROUP BY ccm.id GROUP BY ccm.id ORDER BY ccm.created_at DESC </select> <select id="selectMerchantById" resultType="com.panzhihua.common.model.vos.community.convenient.ConvenientMerchantVO"> SELECT ccm.*, su.account, su.status AS accountStatus springcloud_k8s_panzhihuazhihuishequ/service_property/pom.xml
@@ -111,22 +111,10 @@ <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <!--kafka依赖 --> <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> <version>2.7.6</version> </dependency> <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka-test</artifactId> <scope>test</scope> <version>2.7.6</version> </dependency> <!--json转换工具包依赖 --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> <version>2.3.4.RELEASE</version> </dependency> </dependencies> springcloud_k8s_panzhihuazhihuishequ/service_property/src/main/java/com/panzhihua/service_property/config/KafkaConfig.java
File was deleted springcloud_k8s_panzhihuazhihuishequ/service_property/src/main/java/com/panzhihua/service_property/config/WebSocketClient.java
New file @@ -0,0 +1,129 @@ package com.panzhihua.service_property.config; import java.io.IOException; import java.util.Date; import javax.annotation.Resource; import javax.websocket.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; import com.alibaba.fastjson.JSONObject; import com.panzhihua.service_property.dao.ComPropertyAlarmDao; import com.panzhihua.service_property.dto.DeviceDto; import com.panzhihua.service_property.entity.ComPropertyAlarm; import cn.hutool.extra.spring.SpringUtil; import lombok.extern.slf4j.Slf4j; /** * 应用模块名称 * <p> * 一键报警设备消息 代码描述 * <p> * Copyright: Copyright (C) 2021 XXX, Inc. All rights reserved. * <p> * Company: 成都呐喊信息技术有限公司 * <p> * * @author manailin * @since 2021/9/27 16:31 */ @Slf4j @Component @ClientEndpoint public class WebSocketClient { private static final Logger logger = LoggerFactory.getLogger(WebSocketClient.class); /** 保存报警记录服务 */ @Resource private ComPropertyAlarmDao comPropertyAlarmDao; /** * session */ private Session session; /** * <beforeInit> * * @throws */ public static void beforeInit() { // 在socket配置类中调用此方法可以完成一些需要初始化注入的操作 } @OnOpen public void onOpen(Session session) { logger.info("连接开启..."); this.session = session; } @OnMessage public void onMessage(String message, Session session) { // 提取数据 dealData(message); } @Async void dealData(String message) { comPropertyAlarmDao = SpringUtil.getBean(ComPropertyAlarmDao.class); DeviceDto deviceInfo = JSONObject.parseObject(message, DeviceDto.class); if (deviceInfo.getCallstatus().equals("RINGING")) { logger.info("收到设备报警信息:{}", message); ComPropertyAlarm comPropertyAlarm = new ComPropertyAlarm(); comPropertyAlarm.setSerialNo(deviceInfo.getCallid()); comPropertyAlarm.setStatus(1); comPropertyAlarm.setCreateTime(new Date()); comPropertyAlarmDao.insert(comPropertyAlarm); } } @OnClose public void onClose() { logger.info("长连接关闭..."); } @OnError public void onError(Session session, Throwable t) { logger.error("error, cause: ", t); } /** * <异步发送message> * * @param message * message @throws */ public void send(String message) { this.session.getAsyncRemote().sendText(message); } /** * <发送message> * * @param message * message @throws */ public void sendMessage(String message) { try { session.getBasicRemote().sendText(message); } catch (IOException ex) { logger.error("error, cause: ", ex); } } /** * <关闭连接> * * @throws */ public void close() throws IOException { if (this.session.isOpen()) { this.session.close(); } } } springcloud_k8s_panzhihuazhihuishequ/service_property/src/main/java/com/panzhihua/service_property/config/WebSocketConfig.java
New file @@ -0,0 +1,136 @@ package com.panzhihua.service_property.config; import java.net.URI; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import javax.websocket.ContainerProvider; import javax.websocket.WebSocketContainer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.context.annotation.Configuration; import org.springframework.core.annotation.Order; /** * 应用模块名称 * <p> * 一键报警websocket 配置 代码描述 * <p> * Copyright: Copyright (C) 2021 XXX, Inc. All rights reserved. * <p> * Company: 成都呐喊信息技术有限公司 * <p> * * @author manailin * @since 2021/9/27 16:31 */ @Configuration @Order(1) public class WebSocketConfig implements ApplicationRunner { private static final Logger logger = LoggerFactory.getLogger(WebSocketConfig.class); private static Boolean isOk; private static WebSocketContainer container = ContainerProvider.getWebSocketContainer(); private WebSocketClient client; /** * 定义定时任务线程 */ private ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(1); @Value("${websocket.uri}") private String uri; @Value("${websocket.ip}") private String ip; /** * <run> * * @param args * args @throws */ @Override public void run(ApplicationArguments args) throws Exception { logger.info("[WebSocketConfig] web socket init start."); // websocket客户端初始化 wsClientInit(); } /** * <websocket客户端初始化> * * @throws */ public void wsClientInit() { logger.info("[WebSocketConfig] start to wsClientInit"); try { client = new WebSocketClient(); WebSocketClient.beforeInit(); container.connectToServer(client, new URI(uri)); isOk = true; } catch (Exception e) { isOk = false; logger.error("error, cause: ", e); } /** * 参数:1、任务体 2、首次执行的延时时间 3、任务执行间隔 4、间隔时间单位 **/ scheduledExecutorService.scheduleAtFixedRate(new Runnable() { @Override public void run() { // 心跳检测 断线重连 heartbeatCheck(); } }, 1, 30, TimeUnit.SECONDS); logger.info("[WebSocketConfig] end to wsClientInit"); } /** * <心跳检测 断线重连> * * */ private void heartbeatCheck() { logger.info("[WebSocketConfig] start to heartbeatCheck"); if (isOk != null && isOk) { try { client.send("ping " + ip); } catch (Exception e) { isOk = false; } } else { // 系统连接失败进行重试 logger.warn("系统连接失败,正在重连..."); try { client.send("ping " + ip); logger.warn("系统重连成功!"); isOk = true; } catch (Exception e) { try { client = new WebSocketClient(); container.connectToServer(client, new URI(uri)); isOk = true; } catch (Exception e1) { isOk = false; } if (isOk != null && isOk) { logger.warn("系统重连成功!"); } } } } } springcloud_k8s_panzhihuazhihuishequ/service_property/src/main/java/com/panzhihua/service_property/dto/CallForward.java
File was deleted springcloud_k8s_panzhihuazhihuishequ/service_property/src/main/java/com/panzhihua/service_property/dto/CallForwardDto.java
File was deleted springcloud_k8s_panzhihuazhihuishequ/service_property/src/main/java/com/panzhihua/service_property/dto/CustomBtn.java
File was deleted springcloud_k8s_panzhihuazhihuishequ/service_property/src/main/java/com/panzhihua/service_property/dto/DeviceDto.java
New file @@ -0,0 +1,33 @@ package com.panzhihua.service_property.dto; import lombok.Data; /** * 应用模块名称 * <p> * 一键报警设备消息 代码描述 * <p> * Copyright: Copyright (C) 2021 XXX, Inc. All rights reserved. * <p> * Company: 成都呐喊信息技术有限公司 * <p> * * @author manailin * @since 2021/9/27 16:31 */ @Data public class DeviceDto { /** 呼叫状态 */ private String callstatus; /** 指令 */ private String cmd; /** 状态 */ private String status; /** 呼叫人员ID */ private String userid; /** 呼叫iD */ private String callid; /** 呼叫时间 */ private String _ts; } springcloud_k8s_panzhihuazhihuishequ/service_property/src/main/java/com/panzhihua/service_property/dto/DeviceInfoDto.java
File was deleted springcloud_k8s_panzhihuazhihuishequ/service_property/src/main/java/com/panzhihua/service_property/dto/TaskDetail.java
File was deleted springcloud_k8s_panzhihuazhihuishequ/service_property/src/main/java/com/panzhihua/service_property/dto/TaskInfo.java
File was deleted springcloud_k8s_panzhihuazhihuishequ/service_property/src/main/java/com/panzhihua/service_property/listener/OrderListener.java
File was deleted springcloud_k8s_panzhihuazhihuishequ/service_property/src/main/resources/bootstrap.yml
@@ -1,25 +1,6 @@ spring: application: name: property kafka: bootstrap-servers: 182.151.37.143:9092 #kafka地址 consumer: group-id: order-consumer key-deserializer: org.apache.kafka.common.serialization.StringDeserializer #kafkaTemplate.send()方法参数类型 value-deserializer: org.apache.kafka.common.serialization.StringDeserializer auto-offset-reset: earliest security: protocol: PLAINTEXT producer: batch-size: 16384 buffer-memory: 33554432 retries: 0 key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer properties: linger.ms: 1 security: protocol: PLAINTEXT cloud: config: discovery: @@ -39,7 +20,6 @@ client: service-url: defaultZone: http://${EUREKA_URL:localhost}:8192/eureka #实体加密、解密、字段脱敏拦截设置 domain: @@ -62,9 +42,7 @@ tags: application: property # kafka自定义消息发送配置 kafka: topic: kafka-demo-topic: Task_Info kafka-demo-key: order-key autoCreate: false #从一键报警设备websocket订阅时间消息配置 websocket: uri: ws://182.151.37.143:8086/status ip: 182.151.37.143 springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/dao/SysRoleMenuDAO.java
@@ -4,6 +4,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.panzhihua.service_user.model.dos.SysRoleMenuDO; import org.apache.ibatis.annotations.Param; import java.util.List; /** * @program: springcloud_k8s_panzhihuazhihuishequ @@ -12,4 +15,12 @@ * @create: 2020-12-25 09:51 **/ @Mapper public interface SysRoleMenuDAO extends BaseMapper<SysRoleMenuDO> {} public interface SysRoleMenuDAO extends BaseMapper<SysRoleMenuDO> { /** * 批量插入角色菜单关系 * @param menuIds * @param roleId * @return */ int batchInsertWithRoleId(@Param("menuIds") List<Long> menuIds, @Param("roleId") Long roleId); } springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java
@@ -3,7 +3,6 @@ import static java.util.Objects.isNull; import static java.util.Objects.nonNull; import java.time.Instant; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; @@ -1203,19 +1202,28 @@ // 获取所有权限id List<SysMenuDO> menuDOList = sysMenuDAO.selectList(new QueryWrapper<SysMenuDO>().lambda() .eq(SysMenuDO::getCommunityId, 2l).orderByAsc(SysMenuDO::getOrderNum)); .eq(SysMenuDO::getCommunityId, 2L).orderByAsc(SysMenuDO::getOrderNum)); if (!menuDOList.isEmpty()) { menuIds = menuDOList.stream().map(sysMenuDO -> sysMenuDO.getMenuId()).collect(Collectors.toList()); for (int i = 0; i < menuIds.size(); i++) { SysRoleMenuDO sysRoleMenuDO = sysRoleMenuDAO.selectOne(new QueryWrapper<SysRoleMenuDO>().lambda() .eq(SysRoleMenuDO::getMenuId, menuIds.get(i)).eq(SysRoleMenuDO::getRoleId, roleId)); if (sysRoleMenuDO == null) { sysRoleMenuDO = new SysRoleMenuDO(); sysRoleMenuDO.setMenuId(menuIds.get(i)); sysRoleMenuDO.setRoleId(roleId); sysRoleMenuDAO.insert(sysRoleMenuDO); } List<SysRoleMenuDO> sysRoleMenuDOList = sysRoleMenuDAO.selectList(new QueryWrapper<SysRoleMenuDO>().lambda().eq(SysRoleMenuDO::getRoleId, roleId).in(SysRoleMenuDO::getMenuId, menuIds)); if (!sysRoleMenuDOList.isEmpty()) { menuIds = menuIds.stream().filter(menuId -> !sysRoleMenuDOList.stream() .anyMatch(sysRoleMenuDO -> sysRoleMenuDO.getMenuId().equals(menuId))).collect(Collectors.toList()); } if (!menuIds.isEmpty()) { sysRoleMenuDAO.batchInsertWithRoleId(menuIds, roleId); } // for (int i = 0; i < menuIds.size(); i++) { // SysRoleMenuDO sysRoleMenuDO = sysRoleMenuDAO.selectOne(new QueryWrapper<SysRoleMenuDO>().lambda() // .eq(SysRoleMenuDO::getMenuId, menuIds.get(i)).eq(SysRoleMenuDO::getRoleId, roleId)); // if (sysRoleMenuDO == null) { // sysRoleMenuDO = new SysRoleMenuDO(); // sysRoleMenuDO.setMenuId(menuIds.get(i)); // sysRoleMenuDO.setRoleId(roleId); // sysRoleMenuDAO.insert(sysRoleMenuDO); // } // } } return R.ok(); } @@ -2168,7 +2176,6 @@ @Override @Transactional(rollbackFor = Exception.class) public R addGridUser(EventGridMemberAddDTO eventGridMemberAddDTO) { //todo 网格 SysRoleDO gridMemberDefaultRole = roleDAO.selectOne( new QueryWrapper<SysRoleDO>().lambda().eq(SysRoleDO::getRoleKey, Constants.GRID_DEFAULT_ROLE_KEY)); if (gridMemberDefaultRole == null) { @@ -2591,41 +2598,17 @@ @Override @Transactional(rollbackFor = Exception.class) public R addConvenientMerchantUser(ConvenientMerchantDTO convenientMerchantDTO) { // todo 便民 log.error("catTimeStamp进入addConvenientMerchantUser" + convenientMerchantDTO.getAccount() + Instant.now().toEpochMilli()); SysUserDO sysUserDO = new SysUserDO(); Long communityId = 0L; // 新增社区高级管理员角色 SysRoleDO sysRoleDO = new SysRoleDO(); sysRoleDO.setCommunityId(communityId); sysRoleDO.setRoleName(convenientMerchantDTO.getName()); sysRoleDO.setRoleKey(Constants.CONVENIENT_MERCHANT_ROLE_KEY + convenientMerchantDTO.getAccount()); sysRoleDO.setRoleSort(0); sysRoleDO.setCreateBy(convenientMerchantDTO.getCreatedBy()); try { int insert = roleDAO.insert(sysRoleDO); if (insert != 1) { return R.fail("网络错误"); } } catch (Exception e) { log.error("新增角色报错【{}】", e.getMessage()); if (e.getMessage().contains("unique_role_name_community_id")) { return R.fail("商家名称已被占用"); } else { return R.fail("建立商家角色失败,商家名称可能已被占用!"); } SysUserDO sysUserDO; sysUserDO = userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getAccount, convenientMerchantDTO.getAccount())); if (nonNull(sysUserDO)) { return R.fail("账户已经存在"); } log.error("catTimeStamp-SysRoleDO创建完成" + convenientMerchantDTO.getAccount() + Instant.now().toEpochMilli()); // 新角色设置所有权限 MenuRoleVO menuRoleVO = new MenuRoleVO(); menuRoleVO.setIsAll(1); menuRoleVO.setCommunityId(communityId); menuRoleVO.setRoleId(sysRoleDO.getRoleId()); this.putMenuRole(menuRoleVO); log.error("catTimeStamp-MenuRoleVO创建完成" + convenientMerchantDTO.getAccount() + Instant.now().toEpochMilli()); sysUserDO = userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getPhone, convenientMerchantDTO.getPhone())); if (nonNull(sysUserDO)) { return R.fail("手机号已经存在"); } // sys_user 表 sysUserDO = new SysUserDO(); String encode = new BCryptPasswordEncoder().encode(convenientMerchantDTO.getPassword()); BeanUtils.copyProperties(convenientMerchantDTO, sysUserDO); sysUserDO.setAccount(convenientMerchantDTO.getAccount()); @@ -2637,17 +2620,10 @@ sysUserDO.setPassword(encode); try { userDao.insert(sysUserDO); log.error("catTimeStamp-sysUserDO创建完成" + convenientMerchantDTO.getAccount() + Instant.now().toEpochMilli()); return R.ok(sysUserDO.getUserId()); } catch (Exception e) { e.printStackTrace(); log.error("新增后台用户报错【{}】", e.getMessage()); roleDAO.deleteByRoleKey(Constants.CONVENIENT_MERCHANT_ROLE_KEY + convenientMerchantDTO.getAccount()); if (e.getMessage().contains("union_phone_type")) { return R.fail("手机号已经存在"); } else if (e.getMessage().contains("union_account_type")) { return R.fail("账户已经存在"); } } return R.fail("新增商户发生错误"); } @@ -2664,17 +2640,8 @@ if (isNull(sysUserDO)) { return R.fail("用户不存在"); } String oldAccount = sysUserDO.getAccount(); sysUserDO.setAccount(account); int result = userDao.updateById(sysUserDO); if (result > 0) { SysRoleDO sysRoleDO = roleDAO.selectOne(new QueryWrapper<SysRoleDO>() .lambda().eq(SysRoleDO::getRoleKey, Constants.CONVENIENT_MERCHANT_ROLE_KEY + oldAccount)); if (nonNull(sysRoleDO)) { sysRoleDO.setRoleKey(Constants.CONVENIENT_MERCHANT_ROLE_KEY + account); roleDAO.updateById(sysRoleDO); } } userDao.updateById(sysUserDO); return R.ok(); } springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/resources/mapper/SysRoleMenuDAO.xml
@@ -9,6 +9,11 @@ <sql id="columns"> `role_id`,`menu_id` </sql> <insert id="batchInsertWithRoleId"> INSERT INTO `sys_role_menu`(role_id,menu_id) VALUES <foreach collection="menuIds" item="item" index="index" separator="," > (#{roleId}, #{item}) </foreach> </insert> </mapper>