Przeglądaj źródła

第二版,后台bug

suntianwu 3 lat temu
rodzic
commit
0695e1a38d

+ 1 - 1
src/main/java/com/care/bms/service/BmsEventOrderService.java

@@ -590,7 +590,7 @@ public class BmsEventOrderService {
         order.setStatus("0");
         order.setCreateTime(DateUtil.date());
         order.setModifyTime(DateUtil.date());
-        this.careEventOrderService.saveOrder(order);
+        this.careEventOrderService.saveOrder(order,null);
     }
 
 

+ 23 - 2
src/main/java/com/care/bms/service/MqttMsgService.java

@@ -3,6 +3,7 @@ package com.care.bms.service;
 import cn.hutool.core.date.DateUtil;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.care.bigscreen.service.BigScreenService;
 import com.care.common.entity.CareDevice;
 import com.care.common.entity.CareEventOrder;
 import com.care.common.entity.CareHouse;
@@ -14,6 +15,7 @@ import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.util.Date;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -33,10 +35,12 @@ public class MqttMsgService {
     private CareEventOrderService careEventOrderService;
     @Resource
     private CareOrganizationService careOrganizationService;
-
+    @Resource
+    private BigScreenService bigScreenService;
     @Resource
     private CareMqttMsgService careMqttMsgService;
 
+
     public void handleMessage(Map<String,Thread> threadMap,String topic, String mqttMessageStr) throws Exception {
         try {
             QueryWrapper<CareDevice> queryWrapper = new QueryWrapper<>();
@@ -136,7 +140,24 @@ public class MqttMsgService {
         order.setStatus(OrderStatusEnum.TODO.getValue());
         order.setCreateTime(date);
         order.setModifyTime(date);
-        careEventOrderService.saveOrder(order);
+
+        //判断房屋是否有未完成的告警事件
+        QueryWrapper<CareEventOrder> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(CareEventOrder::getHouseId,order.getHouseId()).and(
+                wrapper-> wrapper.eq(CareEventOrder::getStatus, OrderStatusEnum.TODO.getValue())
+                .or().eq(CareEventOrder::getStatus,OrderStatusEnum.DOING.getValue()));
+
+        CareEventOrder orderDb = careEventOrderService.getOne(queryWrapper);
+        careEventOrderService.saveOrder(order,orderDb);
+        if(orderDb != null){//有,不再生成新的告警工单,只作为子事件插入到当前工单的历史记录中。
+            //通知页面
+            this.bigScreenService.pushRtEventFlag(order.getStationId().toString(),order.getId().toString(),"orderUpdate");
+        } else {  //新增,生成新的告警事件工单
+            //通知页面
+            this.bigScreenService.pushRtEventFlag(order.getStationId().toString(),order.getId().toString(),"orderAdd");
+        }
+
+        this.bigScreenService.pushRtEventFlag(order.getStationId().toString(),order.getId().toString(),"orderStatusUpdate");
     }
 
     class MyThread extends Thread {

+ 1 - 1
src/main/java/com/care/client/controller/DevApiController.java

@@ -231,7 +231,7 @@ public class DevApiController {
      * 选择我的紧急人列表中某个保存绑定
      * @return
      */
-    @PostMapping("/my/bindOlder")
+    @PostMapping("/my/bindHouseContact")
     @ApiOperation(tags = {"我的设备"},value = "选择我的紧急人列表中某个保存绑定 --二期新增")
     public Result<Object> bindHouseContact(HttpServletRequest request, @RequestHeader("token") String token,
                                     @RequestParam("id") Long id,

+ 2 - 0
src/main/java/com/care/client/controller/MemberApiController.java

@@ -69,4 +69,6 @@ public class MemberApiController {
         return passportService.checkToken(token);
     }
 
+
+
 }

+ 65 - 4
src/main/java/com/care/client/controller/PassportController.java

@@ -2,24 +2,34 @@ package com.care.client.controller;
 
 import com.care.client.service.PassportService;
 import com.care.client.vo.MemberInitParams;
+import com.care.common.entity.CareMemberInfo;
+import com.care.common.service.CareMemberInfoService;
+import com.care.common.service.SmsSendService;
 import com.care.common.util.CheckUtils;
 import com.care.common.util.Result;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
+import com.google.common.cache.Cache;
+import com.google.common.cache.CacheBuilder;
+import io.swagger.annotations.*;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import java.util.Random;
+import java.util.concurrent.TimeUnit;
 
 @Api(tags = "登录")
 @RestController
 @RequestMapping("/pinanbao")
 public class PassportController {
 
-
     @Resource
     private PassportService passportService;
+    @Resource
+    private SmsSendService smsSendService;
+    @Resource
+    private CareMemberInfoService careMemberInfoService;
+
+    public final Cache<String, String> smsTimeoutCache = CacheBuilder.newBuilder().expireAfterWrite(5, TimeUnit.MINUTES).build();
 
     @ApiOperation(value = "小程序登录", notes = "小程序授权登录")
     @ApiParam(name = "params", value = "登录参数")
@@ -39,6 +49,57 @@ public class PassportController {
         return passportService.login(params);
     }
 
+    @ApiOperation(value = "新用户注册", notes = "新用户注册")
+    @GetMapping("registerPhone")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(paramType = "query", name = "phone", value = "电话号码"),
+            @ApiImplicitParam(paramType = "query", name = "vcode", value = "验证码"),
+            @ApiImplicitParam(paramType = "query", name = "password", value = "密码 "),
+    })
+    public Result<Object> registerPhone(@RequestHeader(value = "token") String token,
+                                        @RequestParam(value = "phone", required = true) String phone,
+                                        @RequestParam(value = "vcode", required = true) String vcode,
+                                        @RequestParam(value = "password", required = true) String password) {
+
+        if (StringUtils.isBlank(phone)) {
+            return Result.error("请输入手机号");
+        }
+        if (!StringUtils.equalsIgnoreCase(vcode, smsTimeoutCache.getIfPresent(phone))) {
+            return Result.error("请输入正确的验证码");
+        }
+        if (StringUtils.isBlank(password)) {
+            return Result.error("请输入密码");
+        }
+        if (StringUtils.isNotBlank(phone) && StringUtils.isNotBlank(password)) {
+            CareMemberInfo careMemberInfo = new CareMemberInfo();
+            careMemberInfo.setPhone(phone);
+            careMemberInfo.setPassword(password);
+            boolean flag = careMemberInfoService.save(careMemberInfo);
+            if (flag) {
+                return Result.success();
+            }
+        }
+        return Result.error("绑定手机号码失败");
+    }
+
+    @ApiOperation(value = "新用户注册-获取验证码", notes = "新用户注册-获取验证码")
+    @GetMapping("getVCode")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(paramType = "query", name = "phone", value = "电话号码"),
+    })
+    public Result<String> getVCode(@RequestParam(value = "phone", required = true) String phone) {
+
+        String vcode = String.format("%04d",new Random().nextInt(9999));
+        boolean flag = smsSendService.sendSmsCode4RegisterPhone(phone, vcode);
+        if (flag) {
+            smsTimeoutCache.put(phone, vcode);
+            return Result.success();
+        } else {
+            return Result.error("获取验证码失败");
+        }
+
+    }
+
 
     @ApiOperation(value = "小程序登出", notes = "小程序登出")
     @PostMapping("logout")

+ 1 - 1
src/main/java/com/care/common/service/CareEventOrderService.java

@@ -19,5 +19,5 @@ public interface CareEventOrderService extends IService<CareEventOrder> {
      */
     EventStaVO statOrder(Long orgId, Long stationId);
 
-    boolean saveOrder(CareEventOrder order);
+    boolean saveOrder(CareEventOrder order,CareEventOrder orderDb);
 }

+ 6 - 1
src/main/java/com/care/common/service/SmsSendService.java

@@ -1,6 +1,5 @@
 package com.care.common.service;
 
-import com.care.common.enums.OrderTypeEnum;
 
 /**
  * 编码类型表(SysDimType)表服务接口
@@ -9,6 +8,12 @@ import com.care.common.enums.OrderTypeEnum;
  * @since 2021-05-21 00:08:30
  */
 public interface SmsSendService  {
+    /**
+     * 注册手机号发送短信验证码
+     * @param phone
+     * @return
+     */
+    boolean sendSmsCode4RegisterPhone(String phone,String params);
 
     /**
      * 给紧急联系人发送短信

+ 9 - 19
src/main/java/com/care/common/service/impl/CareEventOrderServiceImpl.java

@@ -71,22 +71,14 @@ public class CareEventOrderServiceImpl extends ServiceImpl<CareEventOrderMapper,
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public boolean saveOrder(CareEventOrder order){
+    public boolean saveOrder(CareEventOrder order,CareEventOrder orderDb){
 
-        //判断房屋是否有未完成的告警事件
-        QueryWrapper<CareEventOrder> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(CareEventOrder::getHouseId,order.getHouseId()).eq(CareEventOrder::getStatus, OrderStatusEnum.TODO.getValue()).or(i->
-                i.eq(CareEventOrder::getStatus,OrderStatusEnum.DOING.getValue())
-        );
+        if(orderDb != null){//更新,不再生成新的告警工单,只作为子事件插入到当前工单的历史记录中
 
-        List<CareEventOrder> listCareEventOrderDb = this.list(queryWrapper);
+            orderDb.setOrderType(order.getOrderType());
+            this.updateById(orderDb);//更新
 
-        if(CollUtil.isNotEmpty(listCareEventOrderDb)){ //有,不再生成新的告警工单,只作为子事件插入到当前工单的历史记录中,并通知页面。
-            CareEventOrder careEventOrderDb = listCareEventOrderDb.get(0);
-            careEventOrderDb.setOrderType(order.getOrderType());
-            this.updateById(careEventOrderDb);//更新
-
-            order.setId(careEventOrderDb.getId());
+            order.setId(orderDb.getId());
 
             CareEventOrderHandleHis his = new CareEventOrderHandleHis();
             his.setOrgId(order.getOrgId());
@@ -100,7 +92,7 @@ public class CareEventOrderServiceImpl extends ServiceImpl<CareEventOrderMapper,
                 his.setLogObjectName(order.getOlderName());
                 his.setLogResult(OrderTypeEnum.getCodeToName(order.getOrderType()));
                 his.setRelationTypeDesc(RelationTypeEnum.OLDER.getName());
-            }else{
+            } else {
                 his.setLogType(LogTypeEnum.DEV_EVENT.getValue());
                 his.setLogObjectId(order.getDevId());
                 his.setLogObjectName(order.getDevName());
@@ -109,9 +101,8 @@ public class CareEventOrderServiceImpl extends ServiceImpl<CareEventOrderMapper,
             }
             his.setCreateTime(order.getCreateTime());
             this.careEventOrderHandleHisService.save(his);
-            //通知页面
-            this.bigScreenService.pushRtEventFlag(order.getStationId().toString(),order.getId().toString(),"orderUpdate");
-        } else { //无,生成新的告警事件工单
+
+        } else { //新增,生成新的告警事件工单
             this.baseMapper.insert(order);
             CareEventOrderHandleHis his = new CareEventOrderHandleHis();
             his.setOrgId(order.getOrgId());
@@ -162,9 +153,8 @@ public class CareEventOrderServiceImpl extends ServiceImpl<CareEventOrderMapper,
                 }
             }
             this.careEventOrderHandleHisService.save(his);
-            this.bigScreenService.pushRtEventFlag(order.getStationId().toString(),order.getId().toString(),"orderAdd");
+
         }
-        this.bigScreenService.pushRtEventFlag(order.getStationId().toString(),order.getId().toString(),"orderStatusUpdate");
         return true;
     }
 

+ 29 - 0
src/main/java/com/care/common/service/impl/SmsSendServiceImpl.java

@@ -7,6 +7,8 @@ import com.tencentcloudapi.sms.v20210111.models.SendStatus;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
+import java.util.Random;
+
 /**
  * @Author: lilt
  * @Date: 2021/6/5
@@ -29,6 +31,9 @@ public class SmsSendServiceImpl implements SmsSendService {
     @Value("${sms.notice.templateId:#{null}}")
     private String noticeTemplateId;
 
+    @Value("${sms.notice.templateid.register.phone:#{null}}")
+    private String noticeTemplateId4registerPhone;
+
     @Value("${sms.notice.templateid.jiuzhi:#{null}}")
     private String noticeTemplateId4jiuzhi;
 
@@ -36,6 +41,30 @@ public class SmsSendServiceImpl implements SmsSendService {
     private String noticeTemplateId4diedao;
 
 
+    /**
+     * 注册手机号发送短信验证码
+     * @param phone
+     * @return
+     */
+    @Override
+    public boolean sendSmsCode4RegisterPhone(String phone,String params) {
+
+        String[] _p = {params};
+        SendStatus sendStatus =  SmsUtil.sendSms(noticeEndpoint,
+                noticeRegion,
+                noticeSecretId,
+                noticeecretKey,
+                noticeSmsSdkAppId,
+                noticeSignName,
+                noticeTemplateId4registerPhone,
+                phone,_p);
+        if (sendStatus!=null && "Ok".equals(sendStatus.getCode())){
+            return true;
+        }else{
+            return  false;
+        }
+    }
+
     @Override
     public boolean sendSmsToLianxiren(String phone, String params) {
         String[] _p = {params};

+ 4 - 0
src/main/resources/application.properties

@@ -75,6 +75,10 @@ sms.notice.templateId=986791
 
 sms.notice.templateid.jiuzhi=1014148
 sms.notice.templateid.diedao=1014144
+sms.notice.templateid.modify.phone=1041851
+sms.notice.templateid.register.phone=1041847
+sms.notice.templateid.modify.password=1041838
+
 
 device.3d.url.host=https://www.ventropic.com/rt/dist/#/?topic=5JPD%2Fmonitor%2Ff1%2Fevent
 device.3d.url.path=/rt/dist/#/?topic=