Преглед изворни кода

运营平台-服务站管理

suntianwu пре 3 година
родитељ
комит
3576bcd506
25 измењених фајлова са 980 додато и 26 уклоњено
  1. 1 1
      src/main/java/com/care/bms/controller/StationController.java
  2. 1 1
      src/main/java/com/care/bms/controller/SysUserController.java
  3. 13 0
      src/main/java/com/care/bms/service/BmsSysUserService.java
  4. 9 1
      src/main/java/com/care/bms/service/DeviceService.java
  5. 8 0
      src/main/java/com/care/client/service/AbstractPassportService.java
  6. 5 0
      src/main/java/com/care/client/service/PassportService.java
  7. 4 0
      src/main/java/com/care/common/entity/CareStation.java
  8. 10 0
      src/main/java/com/care/common/entity/CareSysUser.java
  9. 10 4
      src/main/java/com/care/common/enums/UserRoleEnum.java
  10. 38 0
      src/main/java/com/care/common/enums/ValidStatusEnum.java
  11. 3 1
      src/main/java/com/care/common/mapper/CareDeviceMapper.java
  12. 1 0
      src/main/java/com/care/common/service/CareDeviceService.java
  13. 13 0
      src/main/java/com/care/common/service/impl/CareDeviceServiceImpl.java
  14. 10 1
      src/main/java/com/care/common/util/DateUtils.java
  15. 67 0
      src/main/java/com/care/common/vo/station/CareStationVO.java
  16. 15 1
      src/main/java/com/care/common/vo/sysuser/CareSysUserVO.java
  17. 18 15
      src/main/java/com/care/installation/service/RoomService.java
  18. 131 0
      src/main/java/com/care/operate/controller/OpDeviceController.java
  19. 82 0
      src/main/java/com/care/operate/controller/OpMemberInfoController.java
  20. 142 0
      src/main/java/com/care/operate/controller/OpStationController.java
  21. 144 0
      src/main/java/com/care/operate/controller/OpSysUserController.java
  22. 64 0
      src/main/java/com/care/operate/service/OpStationService.java
  23. 171 0
      src/main/java/com/care/operate/service/OpSysUserService.java
  24. 1 1
      src/main/resources/application-dev.properties
  25. 19 0
      src/main/resources/mybatis/CareDeviceMapper.xml

+ 1 - 1
src/main/java/com/care/bms/controller/StationController.java

@@ -39,7 +39,7 @@ public class StationController {
      */
     @GetMapping("/list4Select")
     @ApiOperation(tags = {"房屋管理","设备管理"},value = "服务站下拉列表")
-    public Result<List<StationVO>> listNotHandle(HttpServletRequest request, @RequestHeader(value = "token") String token){
+    public Result<List<StationVO>> list4Select(HttpServletRequest request, @RequestHeader(value = "token") String token){
         try {
             UserLogindConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
             List<StationVO> datas = this.stationService.queryStationsForSelect(loginUser);

+ 1 - 1
src/main/java/com/care/bms/controller/SysUserController.java

@@ -114,7 +114,7 @@ public class SysUserController {
             } else if (flag == 0) {
                 return  Result.success("新增成功!");
             } else {
-                return  Result.success("新增失败!");
+                return  Result.error("新增失败!");
             }
 
         }catch (BDException e) {

+ 13 - 0
src/main/java/com/care/bms/service/BmsSysUserService.java

@@ -11,8 +11,10 @@ import com.care.common.entity.*;
 import com.care.common.enums.DeviceActiveStatusEnum;
 import com.care.common.enums.OlderLiveTypeEnum;
 import com.care.common.enums.UserRoleEnum;
+import com.care.common.enums.ValidStatusEnum;
 import com.care.common.exception.BDException;
 import com.care.common.service.*;
+import com.care.common.util.DateUtils;
 import com.care.common.util.MyBeanUtils;
 import com.care.common.vo.PageReqVO;
 import com.care.common.vo.UserLogindConvertVO;
@@ -76,6 +78,17 @@ public class BmsSysUserService{
             if (!md5Password.equalsIgnoreCase(user.getPassword())) {
                 throw new BDException("用户名或密码错误");
             }
+            if (ValidStatusEnum.INVALID.getValue().equals(user.getValidStatus())) {
+                throw new BDException("用户已经禁用");
+            }
+            Date servStartDate = user.getServStartDate();
+            Date servEndDate = user.getServEndDate();
+            Date now = DateUtils.strToDate(DateUtils.getCurrYyyy_MM_ddDate(),"yyyy-MM-dd");
+            if(servStartDate != null || servEndDate != null) {
+                if ( now.before(servStartDate) || now.after(servEndDate)) {
+                    throw new BDException("用户没在有效期");
+                }
+            }
         }
         return userLogindConvertVO;
     }

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

@@ -362,5 +362,13 @@ public class DeviceService {
     public IPage<DeviceVO> listDevice(Long stationId, String  devCode, String activeStatus, String chambName,String status,String houseAddr,Long chambId,Long memberId,UserLogindConvertVO loginUser, PageReqVO pageReqVo) {
         return this.careDeviceService.queryList(pageReqVo,stationId,devCode,activeStatus,chambName,status,houseAddr,chambId,memberId,loginUser);
     }
-
+    /**
+     * 列表查询没有站点的
+     * @param loginUser
+     * @param pageReqVo
+     * @return
+     */
+    public IPage<DeviceVO> listDeviceNonStation(UserLogindConvertVO loginUser, PageReqVO pageReqVo) {
+        return this.careDeviceService.listDeviceNonStation(pageReqVo,loginUser);
+    }
 }

+ 8 - 0
src/main/java/com/care/client/service/AbstractPassportService.java

@@ -11,6 +11,7 @@ import com.care.client.vo.MemberInitParams;
 import com.care.common.cache.RedisKeyConstant;
 import com.care.common.cache.RedisUtil;
 import com.care.common.entity.CareMemberInfo;
+import com.care.common.enums.ValidStatusEnum;
 import com.care.common.service.CareMemberInfoService;
 import com.care.common.util.Result;
 import com.google.common.collect.Maps;
@@ -45,14 +46,21 @@ public class AbstractPassportService {
                     return Result.error("账号不存在!");
                 }
             }
+            if (ValidStatusEnum.INVALID.getValue().equals(member.getStatus())){
+                return Result.error("用户已经禁用");
+            }
         } else if ("pwd".equalsIgnoreCase(params.getLoginType())) {
             member = careMemberInfoService.detailByPhone(params.getPhone());
             if (member == null) {
                 return Result.error("账号不存在");
             }
+            if (ValidStatusEnum.INVALID.getValue().equals(member.getStatus())){
+                return Result.error("用户已经禁用");
+            }
             if (!StrUtil.equalsIgnoreCase(SecureUtil.md5(params.getPassword()), member.getPassword())) {
                 return Result.error("账号密码不匹配");
             }
+
         }
         if (StringUtils.isBlank(member.getOpenId()) && StringUtils.isNotBlank(params.getOpenid())) {
             UpdateWrapper<CareMemberInfo> careMemberInfoUpdateWrapper = new UpdateWrapper<>();

+ 5 - 0
src/main/java/com/care/client/service/PassportService.java

@@ -6,6 +6,7 @@ import com.care.client.vo.MemberInitParams;
 import com.care.common.cache.RedisKeyConstant;
 import com.care.common.cache.RedisUtil;
 import com.care.common.entity.CareMemberInfo;
+import com.care.common.enums.ValidStatusEnum;
 import com.care.common.exception.BDException;
 import com.care.common.service.CareMemberInfoService;
 import com.care.common.util.CheckUtils;
@@ -37,7 +38,11 @@ public class PassportService extends AbstractPassportService {
         if ("wx".equalsIgnoreCase(params.getLoginType())) {
             CheckUtils.valueIsNull(params, "code");
             CareMemberInfo  careMemberInfo = wxPassportService.login(params);
+
             if(careMemberInfo != null){
+                if (ValidStatusEnum.INVALID.getValue().equals(careMemberInfo.getStatus())){
+                    return Result.error("用户已经禁用");
+                }
                 params.setPhone(careMemberInfo.getPhone());
                 params.setOpenid(careMemberInfo.getOpenId());
                 return cache(params);

+ 4 - 0
src/main/java/com/care/common/entity/CareStation.java

@@ -42,6 +42,10 @@ public class CareStation implements Serializable {
     private String name;
 
 
+    @ApiModelProperty("服务站编码")
+    @TableField("CODE")
+    private String code;
+
     @ApiModelProperty("服务站简称")
     @TableField("SHORT_NAME")
     private String shortName;

+ 10 - 0
src/main/java/com/care/common/entity/CareSysUser.java

@@ -66,6 +66,9 @@ public class CareSysUser implements Serializable {
     @TableField("STATUS")
     private String status;
 
+    @ApiModelProperty("启用状态:启用状态:0启用,1禁用")
+    @TableField("VALID_STATUS")
+    private String validStatus;
 
     @ApiModelProperty("经度")
     @TableField("LONGITUDE")
@@ -76,6 +79,13 @@ public class CareSysUser implements Serializable {
     @TableField("LATITUDE")
     private Double latitude;
 
+    @ApiModelProperty("服务有效期开始日期")
+    @TableField("SERV_START_DATE")
+    private Date servStartDate;
+
+    @ApiModelProperty("服务有效期结束日期")
+    @TableField("SERV_END_DATE")
+    private Date servEndDate;
 
     @ApiModelProperty("createTime")
     @TableField("CREATE_TIME")

+ 10 - 4
src/main/java/com/care/common/enums/UserRoleEnum.java

@@ -11,11 +11,13 @@ public enum UserRoleEnum {
     /**
      *
      */
+    SUPER("super","超级管理员"),
+    ADMIN("admin","机构账号"),
+    STATION("station","服务站账号"),
     CHANMB("chanmb","管家"),
     SEAT("seat","坐席"),
     OLDER("older","老人"),
     CONTACT("contact","紧急联系人"),
-    ADMIN("admin","管理员"),
     SYSTEM("system","系统");
     private String value;
     private String name;
@@ -31,7 +33,13 @@ public enum UserRoleEnum {
         if (StrUtil.isEmpty(code)){
             return null;
         }
-        if (CHANMB.getValue().equals(code)){
+        if (SUPER.getValue().equals(code)){
+            return  SUPER.name;
+        } else if (ADMIN.getValue().equals(code)){
+            return ADMIN.name;
+        } else if (STATION.getValue().equals(code)){
+            return STATION.name;
+        } else if (CHANMB.getValue().equals(code)){
             return  CHANMB.name;
         }else if (SEAT.getValue().equals(code)){
             return  SEAT.name;
@@ -39,8 +47,6 @@ public enum UserRoleEnum {
             return  OLDER.name;
         }else if (CONTACT.getValue().equals(code)){
             return CONTACT.name;
-        }else if (ADMIN.getValue().equals(code)){
-            return ADMIN.name;
         }else if (SYSTEM.getValue().equals(code)){
             return SYSTEM.name;
         }

+ 38 - 0
src/main/java/com/care/common/enums/ValidStatusEnum.java

@@ -0,0 +1,38 @@
+package com.care.common.enums;
+
+
+import cn.hutool.core.util.StrUtil;
+
+/**
+ * @Author:java
+ * @Date: 2021/05/27
+ */
+public enum ValidStatusEnum {
+    /**
+     * 启用禁用
+     */
+    VALID("0","启用"),
+    INVALID("1","禁用");
+    private String value;
+    private String name;
+    ValidStatusEnum(String value, String name) {
+        this.value = value;
+        this.name = name;
+    }
+    public String getValue() {
+        return value;
+    }
+
+    public static String getCodeToName(String code){
+        if (StrUtil.isEmpty(code)){
+            return null;
+        }
+        if (VALID.getValue().equals(code)){
+            return  VALID.name;
+        }else if (INVALID.getValue().equals(code)){
+            return  INVALID.name;
+        }
+
+        return null;
+    }
+}

+ 3 - 1
src/main/java/com/care/common/mapper/CareDeviceMapper.java

@@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.care.common.entity.CareDevice;
 import com.care.common.vo.device.DeviceVO;
-import com.care.common.vo.order.ChambEventOrderVO;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -32,5 +31,8 @@ public interface CareDeviceMapper extends BaseMapper<CareDevice> {
                               @Param("userStationId") Long userStationId
                               );
 
+    IPage<DeviceVO> listDeviceNonStation(IPage<DeviceVO> page,
+                              @Param("userOrgId") Long userOrgId
+    );
     void updateDevChamb(@Param("id") Long id);
 }

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

@@ -26,6 +26,7 @@ public interface CareDeviceService extends IService<CareDevice> {
     List<DeviceVO> queryListByMemberId(Long memberId);
 
     IPage<DeviceVO> queryList(PageReqVO pageReqVo, Long stationId, String devCode, String activeStatus,String chambName, String status,String houseAddr, Long chambId,Long memberId,UserLogindConvertVO loginUser);
+    IPage<DeviceVO> listDeviceNonStation(PageReqVO pageReqVo,UserLogindConvertVO loginUser);
     Map<String,String> get3dUrl(Long deviceId);
 
     void updateDevChamb(Long id);

+ 13 - 0
src/main/java/com/care/common/service/impl/CareDeviceServiceImpl.java

@@ -88,6 +88,19 @@ public class CareDeviceServiceImpl extends ServiceImpl<CareDeviceMapper, CareDev
         return pageRes;
     }
 
+    @Override
+    public IPage<DeviceVO> listDeviceNonStation(PageReqVO pageReqVo, UserLogindConvertVO loginUser) {
+        IPage<DeviceVO> page = new Page<>(pageReqVo.getCurrent(), pageReqVo.getPageSize());
+        IPage<DeviceVO> pageRes = this.baseMapper.listDeviceNonStation(page,loginUser.getOrgId());
+        if(CollUtil.isNotEmpty(pageRes.getRecords())){
+            pageRes.getRecords().forEach(item -> {
+                item.setStatusName(DeviceStatusEnum.getCodeToName(item.getStatus()));
+                item.setActiveStatusName(DeviceActiveStatusEnum.getCodeToName(item.getActiveStatus()));
+            });
+        }
+        return pageRes;
+    }
+
     @Override
     public void updateDevChamb(Long id) {
         this.baseMapper.updateDevChamb(id);

+ 10 - 1
src/main/java/com/care/common/util/DateUtils.java

@@ -142,10 +142,19 @@ public class DateUtils {
      * @return 返回yyyyMMddHHmmss格式的时间字符串
      * @throws Exception
      */
-    public static String getCurrYyyyMMddHHmmssDate() throws Exception {
+    public static String getCurrYyyyMMddHHmmssDate() {
         return yyyyMMddHHmmss.format(new Date());
     }
 
+    /**
+     * 获取当时间并格式化为:yyyyMMdd格式
+     *
+     * @return 返回yyyyMMddHHmmss格式的时间字符串
+     * @throws Exception
+     */
+    public static String getCurrYyyy_MM_ddDate() {
+        return yyyy_MM_dd.format(new Date());
+    }
     /**
             * 计算时间格式为:yyyy-MM-dd HH:mm:ss的时间差值
      *

+ 67 - 0
src/main/java/com/care/common/vo/station/CareStationVO.java

@@ -0,0 +1,67 @@
+package com.care.common.vo.station;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@ApiModel(value = "服务站信息", description = "")
+public class CareStationVO implements Serializable {
+    private static final long serialVersionUID = 278407010051454823L;
+
+    @TableId(value = "ID", type = IdType.AUTO)
+    private Long id;
+
+
+    @ApiModelProperty("机构ID")
+    private Long orgId;
+
+
+    @ApiModelProperty("服务站名称")
+    private String name;
+
+
+    @ApiModelProperty("服务站简称")
+    private String shortName;
+
+    @ApiModelProperty("服务站编码")
+    private String code;
+
+    @ApiModelProperty("负责人")
+    private String director;
+
+
+    @ApiModelProperty("联系电话")
+    private String phone;
+
+
+    @ApiModelProperty("地址")
+    private String addr;
+
+
+    @ApiModelProperty("经度")
+    private Double longitude;
+
+
+    @ApiModelProperty("纬度")
+    private Double latitude;
+
+    @ApiModelProperty("简介")
+    private String introduction;
+
+    @ApiModelProperty("服务设备数量")
+    private Integer devCount;
+
+    @ApiModelProperty("createTime")
+    private Date createTime;
+
+
+    @ApiModelProperty("modifyTime")
+    private Date modifyTime;
+
+}

+ 15 - 1
src/main/java/com/care/common/vo/sysuser/CareSysUserVO.java

@@ -55,6 +55,11 @@ public class CareSysUserVO implements Serializable {
     @ApiModelProperty("状态:1正常;2:休假")
     private String status;
 
+    @ApiModelProperty("启用状态:启用状态:0启用,1禁用")
+    private String validStatus;
+
+    @ApiModelProperty("启用状态名:启用状态:0启用,1禁用")
+    private String validStatusName;
 
     @ApiModelProperty("经度")
     private Double longitude;
@@ -72,13 +77,19 @@ public class CareSysUserVO implements Serializable {
     private Date modifyTime;
 
 
-    @ApiModelProperty("1:坐席 2:管家")
+    @ApiModelProperty("seat:坐席chanmb:管家 admin管理员")
     private String role;
 
     @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
     @ApiModelProperty("服务入职时间")
     private Date hiredate;
 
+    @ApiModelProperty("服务有效期开始日期")
+    private Date servStartDate;
+
+    @ApiModelProperty("服务有效期结束日期")
+    private Date servEndDate;
+
     @ApiModelProperty("服务设备数量")
     private Integer devCount;
 
@@ -90,4 +101,7 @@ public class CareSysUserVO implements Serializable {
 
     @ApiModelProperty("空闲设备列表")
     private List<DeviceVO> freeDeviceVOList;
+
+    @ApiModelProperty("所属服务站的设备列表")
+    private List<DeviceVO> stationDeviceVOList;
 }

+ 18 - 15
src/main/java/com/care/installation/service/RoomService.java

@@ -429,23 +429,26 @@ public class RoomService {
              return InstallDevStatusEnum.DOING.getValue();
         }  else { //成功
              if(!isRepeat) {
-                 //激活
-                 careDevice.setActiveStatus(DeviceActiveStatusEnum.ACTIVE.getValue());
-                 //启动通道
-                 mqttConnectorPoolService.addOne(careDevice);
-                 //上线
-                 careDevice.setStatus(DeviceStatusEnum.ONLINE.getValue());
-                 careDevice.setActiveTime(DateUtil.date());
-                 UpdateWrapper<CareDevice> updateWrapper = new UpdateWrapper<>();
-                 updateWrapper.lambda().eq(CareDevice::getId,careDevice.getId())
-                         .set(CareDevice::getStatus,careDevice.getStatus())
-                         .set(CareDevice::getActiveStatus,careDevice.getActiveStatus())
-                 .set(CareDevice::getActiveTime, careDevice.getActiveTime());
-                 careDeviceService.update(updateWrapper);
-                 //careDeviceService.updateById(careDevice);
-
+                 //若是没激活进行激活,防止重复激活
+                 if(!DeviceActiveStatusEnum.ACTIVE.getValue().equals(careDevice.getActiveStatus())){
+                     //激活
+                     careDevice.setActiveStatus(DeviceActiveStatusEnum.ACTIVE.getValue());
+                     //启动通道
+                     mqttConnectorPoolService.addOne(careDevice);
+                     //上线
+                     careDevice.setStatus(DeviceStatusEnum.ONLINE.getValue());
+                     careDevice.setActiveTime(DateUtil.date());
+                     UpdateWrapper<CareDevice> updateWrapper = new UpdateWrapper<>();
+                     updateWrapper.lambda().eq(CareDevice::getId,careDevice.getId())
+                             .set(CareDevice::getStatus,careDevice.getStatus())
+                             .set(CareDevice::getActiveStatus,careDevice.getActiveStatus())
+                             .set(CareDevice::getActiveTime, careDevice.getActiveTime());
+                     careDeviceService.update(updateWrapper);
+                     //careDeviceService.updateById(careDevice);
+                 }
                  //去除publish的客户端监听
                  mqttConnectorInstallPoolService.removeInstallOne(careDevice);
+
              }
             return InstallDevStatusEnum.SUCCESS.getValue();
 

+ 131 - 0
src/main/java/com/care/operate/controller/OpDeviceController.java

@@ -0,0 +1,131 @@
+package com.care.operate.controller;
+
+
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.care.bms.service.DeviceService;
+import com.care.common.annotation.Permission;
+import com.care.common.entity.CareDevice;
+import com.care.common.exception.BDException;
+import com.care.common.service.CareDeviceService;
+import com.care.common.util.PageResult;
+import com.care.common.util.Result;
+import com.care.common.util.WebPageUtils;
+import com.care.common.vo.PageReqVO;
+import com.care.common.vo.UserLogindConvertVO;
+import com.care.common.vo.device.DeviceVO;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.ArrayList;
+import java.util.List;
+
+
+/**
+ * @Author: stw
+ * @Date: 2021/5/26
+ * @Desc:
+ */
+@RestController
+@Api(value = "OpDeviceController", tags = { "运营平台-设备管理" })
+@Slf4j
+@RequestMapping("/operate/device")
+@Permission
+public class OpDeviceController {
+
+    @Autowired
+    private DeviceService deviceService;
+    @Autowired
+    private CareDeviceService careDeviceService;
+
+    @GetMapping("/list")
+    @ApiOperation(value = "设备列表分页--四期期新增(和管理后台一样)")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(paramType = "query", name = "stationId", value = "服务站ID"),
+            @ApiImplicitParam(paramType = "query", name = "devCode", value = "设备编码"),
+            @ApiImplicitParam(paramType = "query", name = "activeStatus", value = "激活状态"),
+            @ApiImplicitParam(paramType = "query", name = "chambName", value = "关联管家"),
+            @ApiImplicitParam(paramType = "query", name = "status", value = "状态"),
+            @ApiImplicitParam(paramType = "query", name = "houseAddr", value = "地址"),
+            @ApiImplicitParam(paramType = "query", name = "chambId", value = "管家ID"),
+            @ApiImplicitParam(paramType = "query", name = "memberId", value = "用户ID"),
+    })
+    public PageResult<List<DeviceVO>> listDevice(HttpServletRequest request, @RequestHeader(value = "token") String token,
+                                                 @RequestParam(value = "stationId", required = false) Long stationId,
+                                                 @RequestParam(value = "devCode", required = false) String devCode,
+                                                 @RequestParam(value = "activeStatus", required = false) String activeStatus,
+                                                 @RequestParam(value = "chambName", required = false) String chambName,
+                                                 @RequestParam(value = "status", required = false) String status,
+                                                 @RequestParam(value = "houseAddr", required = false) String houseAddr,
+                                                 @RequestParam(value = "chambId", required = false) Long chambId,
+                                                 @RequestParam(value = "memberId", required = false) Long memberId,
+                                                 PageReqVO pageReqVo){
+        try {
+            UserLogindConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
+            IPage<DeviceVO> pageResponse = this.deviceService.listDevice(stationId,devCode,activeStatus,chambName,status,houseAddr,chambId,memberId,loginUser ,pageReqVo);
+            return PageResult.success(pageResponse.getRecords(),pageResponse.getCurrent(),pageResponse.getSize(),pageResponse.getTotal());
+        }catch (BDException e) {
+            log.error("设备列表查询-分页列表出现异常",e);
+            return  PageResult.error(e.getMessage());
+        } catch (Exception e) {
+            log.error("设备管理: 设备列表查询出现异常",e);
+            return PageResult.error( "获取列表失败");
+        }
+    }
+
+    @GetMapping("/listDeviceNonStation")
+    @ApiOperation(value = "查询站点为空的设备列表分页--四期期新增")
+    public PageResult<List<DeviceVO>> listDeviceNonStation(HttpServletRequest request, @RequestHeader(value = "token") String token,
+                                                 PageReqVO pageReqVo){
+        try {
+            UserLogindConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
+            IPage<DeviceVO> pageResponse = this.deviceService.listDeviceNonStation(loginUser ,pageReqVo);
+            return PageResult.success(pageResponse.getRecords(),pageResponse.getCurrent(),pageResponse.getSize(),pageResponse.getTotal());
+        }catch (BDException e) {
+            log.error("设备列表查询-分页列表出现异常",e);
+            return  PageResult.error(e.getMessage());
+        } catch (Exception e) {
+            log.error("设备管理: 设备列表查询出现异常",e);
+            return PageResult.error( "获取列表失败");
+        }
+    }
+
+    @PostMapping("/distributeDevice")
+    @ApiOperation(value = "分配设备(对象list中只设置stationId和设备的id) --四期新增 ")
+    public Result<Object> distributeDevice( @RequestHeader("token") String token,
+                                        @RequestBody List<DeviceVO> vos){
+        try {
+
+            if(CollUtil.isEmpty(vos)){
+                return  Result.error("分配设备列表不能为空!");
+            }
+            List<CareDevice> careDevices = new ArrayList<>();
+            for (DeviceVO vo : vos){
+                CareDevice careDevice = new CareDevice();
+                BeanUtil.copyProperties(vo,careDevice);
+                careDevices.add(careDevice);
+            }
+
+            this.careDeviceService.updateBatchById(careDevices);
+
+            return  Result.success("分配设备成功!");
+        }catch (BDException e) {
+            log.error("分配设备-出现异常",e);
+            return Result.error(e.getMessage());
+        } catch (Exception e) {
+            log.error("设备管理: 分配设备出现异常",e);
+            return Result.error("分配设备失败!");
+        }
+    }
+
+
+}

+ 82 - 0
src/main/java/com/care/operate/controller/OpMemberInfoController.java

@@ -0,0 +1,82 @@
+package com.care.operate.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.care.bms.service.BmsMemberInfoService;
+import com.care.common.annotation.Permission;
+import com.care.common.exception.BDException;
+import com.care.common.util.PageResult;
+import com.care.common.util.Result;
+import com.care.common.util.WebPageUtils;
+import com.care.common.vo.PageReqVO;
+import com.care.common.vo.UserLogindConvertVO;
+import com.care.common.vo.memberinfo.MemberInfoVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+
+/**
+ * @Author: stw
+ * @Date: 2021/8/26
+ * @Desc:
+ */
+@RestController
+@Api(value = "OpMemberInfoController", tags = { "运营平台-后台用户管理" })
+@Slf4j
+@RequestMapping("/operate/memberinfo")
+@Permission
+public class OpMemberInfoController {
+
+    @Autowired
+    private BmsMemberInfoService bmsMemberInfoService;
+
+
+    @GetMapping("/listMemberInfo")
+    @ApiOperation(value = "用户列表分页--四期新增(和管理后台一样)")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(paramType = "query", name = "name", value = "用户名"),
+            @ApiImplicitParam(paramType = "query", name = "phone", value = "电话"),
+    })
+    public PageResult<List<MemberInfoVO>> listMemberInfo(HttpServletRequest request, @RequestHeader(value = "token") String token,
+                                                         @RequestParam(value = "name", required = false) String name,
+                                                         @RequestParam(value = "phone", required = false) String phone,
+                                                         PageReqVO pageReqVo){
+        try {
+            UserLogindConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
+            IPage<MemberInfoVO> pageResponse = this.bmsMemberInfoService.listCareMemberInfo(loginUser, name,phone,pageReqVo);
+            if(pageResponse != null){
+                return PageResult.success(pageResponse.getRecords(),pageResponse.getCurrent(),pageResponse.getSize(),pageResponse.getTotal());
+            } else {
+                return null;
+            }
+
+        }catch (BDException e) {
+            log.error("用户列表查询-分页列表出现异常",e);
+            return  PageResult.error(e.getMessage());
+        } catch (Exception e) {
+            log.error("用户管理: 用户列表查询出现异常",e);
+            return PageResult.error( "获取列表失败");
+        }
+    }
+
+
+    @PostMapping("/updateMemberInfoStatus/{memberId}/{status}")
+    @ApiOperation(value = "修改用户状态,状态:0可用,1禁用   --四期新增(和管理后台一样)")
+    public Result<Object> updateMemberInfoStatus(@RequestHeader("token") String token,
+                                                 @PathVariable("memberId") Long memberId,
+                                                 @PathVariable("status") String status) {
+        if (this.bmsMemberInfoService.updateCareMemberInfoStatus(memberId, status)) {
+            return Result.success("更新成功!");
+        } else {
+            return Result.error("更新失败!");
+        }
+    }
+
+
+}

+ 142 - 0
src/main/java/com/care/operate/controller/OpStationController.java

@@ -0,0 +1,142 @@
+package com.care.operate.controller;
+
+
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.care.common.annotation.Permission;
+import com.care.common.entity.CareStation;
+import com.care.common.exception.BDException;
+import com.care.common.service.CareStationService;
+import com.care.common.util.PageResult;
+import com.care.common.util.RandomCodeUtil;
+import com.care.common.util.Result;
+
+import com.care.common.util.WebPageUtils;
+import com.care.common.vo.PageReqVO;
+import com.care.common.vo.UserLogindConvertVO;
+import com.care.common.vo.station.CareStationVO;
+import com.care.operate.service.OpStationService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+
+
+/**
+ * @Author: stw
+ * @Date: 2021/5/26
+ * @Desc:
+ */
+@RestController
+@Api(value = "OpStationController", tags = { "运营平台-服务站管理" })
+@Slf4j
+@RequestMapping("/operate/station")
+@Permission
+public class OpStationController {
+
+    @Resource
+    private CareStationService careStationService;
+    @Resource
+    private OpStationService opStationService;
+
+    @PostMapping("/addStation")
+    @ApiOperation(value = "新增服务站 -- 四期新增")
+    public Result<Object> addStation(HttpServletRequest request,@RequestHeader("token") String token,
+                                    @RequestBody CareStationVO vo){
+        try {
+            QueryWrapper<CareStation> queryWrapper = new QueryWrapper<>();
+            queryWrapper.lambda().eq(CareStation::getName,vo.getName());
+            CareStation careStationDb = this.careStationService.getOne(queryWrapper);
+            if(careStationDb != null ){
+                return  Result.error("名称已经存在已存在!");
+            }
+
+            UserLogindConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
+            CareStation careStation = new CareStation();
+            BeanUtil.copyProperties(vo,careStation);
+            careStation.setOrgId(loginUser.getOrgId());
+            careStation.setCode(getCode());
+            boolean flag = this.careStationService.save(careStation);
+            if (flag) {
+                return  Result.success("新增成功!");
+            }  else {
+                return  Result.error("新增失败!");
+            }
+
+        }catch (BDException e) {
+            log.error("新增服务站-出现异常",e);
+            return Result.error(e.getMessage());
+        } catch (Exception e) {
+            log.error("新增服务站: 新增服务站出现异常",e);
+            return Result.error("新增失败!");
+        }
+    }
+
+    private String getCode(){
+        String code = RandomCodeUtil.radomNumberCode(10);
+        QueryWrapper<CareStation> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(CareStation::getCode,code);
+        CareStation careStationDb1 = this.careStationService.getOne(queryWrapper);
+        if(careStationDb1 == null) {
+            return code;
+        } else {
+            return getCode();
+        }
+    }
+
+    @PostMapping("/updateStation")
+    @ApiOperation(value = "修改服务站 --四期新增")
+    public Result<Object> updateStation(@RequestHeader("token") String token,
+                                       @RequestBody CareStationVO vo){
+        try {
+            CareStation careStation = new CareStation();
+            BeanUtil.copyProperties(vo,careStation);
+            this.careStationService.updateById(careStation);
+            return  Result.success("修改成功!");
+        }catch (BDException e) {
+            log.error("修改服务站-出现异常",e);
+            return Result.error(e.getMessage());
+        } catch (Exception e) {
+            log.error("服务站管理: 修改服务站出现异常",e);
+            return Result.error("修改失败!");
+        }
+    }
+
+    @GetMapping("/getStationInfo/{stationId}")
+    @ApiOperation(value = "服务站详情  --四期新增")
+    public Result<CareStationVO> getStationInfo(@RequestHeader("token") String token,@PathVariable("stationId") Long stationId){
+        CareStationVO vo = new CareStationVO();
+        CareStation stationInfo = this.careStationService.getById(stationId);
+        BeanUtil.copyProperties(stationInfo,vo);
+        return  Result.success("查询成功!",vo);
+    }
+
+    @GetMapping("/listStation")
+    @ApiOperation(value = "服务站列表分页  --四期新增")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(paramType = "query", name = "name", value = "服务站名称")
+    })
+    public PageResult<List<CareStationVO>> listStation(HttpServletRequest request, @RequestHeader(value = "token") String token,
+                                                      @RequestParam(value = "name", required = false) String name,
+                                                      PageReqVO pageReqVo){
+        try {
+            UserLogindConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
+            IPage<CareStationVO> pageResponse = this.opStationService.listCareStation(name,loginUser ,pageReqVo);
+            return PageResult.success(pageResponse.getRecords(),pageResponse.getCurrent(),pageResponse.getSize(),pageResponse.getTotal());
+        }catch (BDException e) {
+            log.error("服务站列表查询-分页列表出现异常",e);
+            return  PageResult.error(e.getMessage());
+        } catch (Exception e) {
+            log.error("服务站管理: 服务站列表查询出现异常",e);
+            return PageResult.error( "获取列表失败");
+        }
+    }
+}

+ 144 - 0
src/main/java/com/care/operate/controller/OpSysUserController.java

@@ -0,0 +1,144 @@
+package com.care.operate.controller;
+
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.care.common.annotation.Permission;
+import com.care.common.entity.CareSysUser;
+import com.care.common.exception.BDException;
+import com.care.common.service.CareSysUserService;
+import com.care.common.util.PageResult;
+import com.care.common.util.Result;
+import com.care.common.util.WebPageUtils;
+import com.care.common.vo.PageReqVO;
+import com.care.common.vo.UserLogindConvertVO;
+import com.care.common.vo.sysuser.CareSysUserVO;
+import com.care.operate.service.OpSysUserService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.codec.digest.DigestUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Author: lilt
+ * @Date: 2021/5/26
+ * @Desc:
+ */
+@RestController
+@Api(value = "OpSysUserController", tags = { "运营平台-服务站账号管理" })
+@Slf4j
+@RequestMapping("/operate/sysuser")
+@Permission
+public class OpSysUserController {
+
+    @Autowired
+    private OpSysUserService opSysUserService;
+
+    @Autowired
+    private CareSysUserService careSysUserService;
+
+    @GetMapping("/listStationAccount")
+    @ApiOperation(value = "服务站账号列表分页  --四期新增")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(paramType = "query", name = "stationName", value = "服务站名称")
+    })
+    public PageResult<List<CareSysUserVO>> listStationAccount(HttpServletRequest request, @RequestHeader(value = "token") String token,
+                                               @RequestParam(value = "stationName", required = false) String stationName,
+                                               PageReqVO pageReqVo){
+        try {
+            UserLogindConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
+            IPage<CareSysUserVO> pageResponse = this.opSysUserService.listStationAccount(stationName,loginUser ,pageReqVo);
+            return PageResult.success(pageResponse.getRecords(),pageResponse.getCurrent(),pageResponse.getSize(),pageResponse.getTotal());
+        }catch (BDException e) {
+            log.error("服务站账号列表查询-分页列表出现异常",e);
+            return  PageResult.error(e.getMessage());
+        } catch (Exception e) {
+            log.error("服务站账号管理: 服务站账号列表查询出现异常",e);
+            return PageResult.error( "获取列表失败");
+        }
+    }
+
+
+    @PostMapping("/addStationAccount")
+    @ApiOperation(value = "新增服务站账号 --四期新增")
+    public Result<Object> addStationAccount(HttpServletRequest request,@RequestHeader("token") String token,
+                                   @RequestBody CareSysUserVO vo){
+        try {
+
+            UserLogindConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
+            String md5Password = DigestUtils.md5Hex("123456");
+            vo.setPassword(md5Password);
+            int flag = this.opSysUserService.createCareSysUser(vo,loginUser);
+            if (flag == 1) {
+                return  Result.error("电话已存在!");
+            } else if (flag == 0) {
+                return  Result.success("新增成功!");
+            } else {
+                return  Result.error("新增失败!");
+            }
+
+        }catch (BDException e) {
+            log.error("新增服务站账号-出现异常",e);
+            return Result.error(e.getMessage());
+        } catch (Exception e) {
+            log.error("服务站账号管理: 新增服务站账号出现异常",e);
+            return Result.error("新增失败!");
+        }
+    }
+
+    @PostMapping("/updateStationAccount")
+    @ApiOperation(value = "修改服务站账号 (启用禁用也用这个接口,设置id和validStatus(0启用,1禁用)) --四期新增")
+    public Result<Object> updateStationAccount(HttpServletRequest request,@RequestHeader("token") String token,
+                                 @RequestBody CareSysUserVO vo){
+        try {
+            this.opSysUserService.updateCareSysUser(vo);
+            return  Result.success("修改成功!");
+        }catch (BDException e) {
+            log.error("修改服务站账号-出现异常",e);
+            return Result.error(e.getMessage());
+        } catch (Exception e) {
+            log.error("服务站账号管理: 修改服务站账号出现异常",e);
+            return Result.error("修改失败!");
+        }
+    }
+
+
+    @PostMapping("/resetStationAccountPassword/{stationAccountId}")
+    @ApiOperation(value = "重置密码 --四期新增")
+    public Result<Object> resetStationAccountPassword(@RequestHeader("token") String token,
+            @PathVariable("stationAccountId") Long stationAccountId){
+        try {
+            UpdateWrapper<CareSysUser> updateWrapper = new UpdateWrapper<>();
+            updateWrapper.lambda().eq(CareSysUser::getId,stationAccountId)
+                    .set(CareSysUser::getPassword, DigestUtils.md5Hex("123456"))
+                    .set(CareSysUser::getModifyTime, new Date());
+            if (careSysUserService.update(updateWrapper)){
+                return  Result.success("重置成功!");
+            } else {
+                return  Result.error("重置失败!");
+            }
+
+        }catch (BDException e) {
+            log.error("重置密码-出现异常",e);
+            return Result.error(e.getMessage());
+        } catch (Exception e) {
+            log.error("服务站账号管理: 重置密码出现异常",e);
+            return Result.error("重置密码失败!");
+        }
+    }
+
+    @GetMapping("/getStationAccountInfo/{stationAccountId}")
+    @ApiOperation(value = "服务站账号详情  --四期新增")
+    public Result<CareSysUserVO> getStationAccountInfo(@RequestHeader("token") String token,@PathVariable("stationAccountId") Long stationAccountId){
+        CareSysUserVO orderInfo = this.opSysUserService.getCareSysUserById(stationAccountId);
+        return  Result.success("查询成功!",orderInfo);
+    }
+
+}

+ 64 - 0
src/main/java/com/care/operate/service/OpStationService.java

@@ -0,0 +1,64 @@
+package com.care.operate.service;
+
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.care.common.entity.CareDevice;
+import com.care.common.entity.CareStation;
+import com.care.common.service.CareDeviceService;
+import com.care.common.service.CareStationService;
+import com.care.common.vo.PageReqVO;
+import com.care.common.vo.UserLogindConvertVO;
+
+import com.care.common.vo.station.CareStationVO;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Author: lilt
+ * @Date: 2021/7/14
+ * @Desc:
+ */
+@Service
+public class OpStationService {
+    @Resource
+    private CareStationService careStationService;
+    @Resource
+    private CareDeviceService careDeviceService;
+    /**
+     * 查询服务站列表
+     * @return
+     */
+    public IPage<CareStationVO> listCareStation(String name, UserLogindConvertVO loginUser, PageReqVO pageReqVo) {
+        IPage<CareStation> page = new Page<>(pageReqVo.getCurrent(), pageReqVo.getPageSize());
+        QueryWrapper<CareStation> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().like(StrUtil.isNotEmpty(name),CareStation::getName,name)
+                .eq(CareStation::getOrgId,loginUser.getOrgId())
+                .orderByAsc(CareStation::getName);
+
+        IPage<CareStation> pageRes = this.careStationService.page(page, queryWrapper);
+        IPage<CareStationVO> results = new Page<>(pageRes.getCurrent(),pageRes.getSize(),pageRes.getTotal());
+        if(CollUtil.isNotEmpty(pageRes.getRecords())){
+            List<CareStationVO> list = new ArrayList<>();
+            pageRes.getRecords().forEach(item -> {
+                CareStationVO  resVO = new CareStationVO();
+                BeanUtils.copyProperties(item,resVO);
+                //服务设备数量
+                QueryWrapper<CareDevice> queryWrapper1 = new QueryWrapper<>();
+                queryWrapper1.lambda().eq(CareDevice::getOrgId,loginUser.getOrgId());
+                resVO.setDevCount(this.careDeviceService.count(queryWrapper1));
+                list.add(resVO);
+            });
+            results.setRecords(list);
+        }
+        return results;
+    }
+
+}

+ 171 - 0
src/main/java/com/care/operate/service/OpSysUserService.java

@@ -0,0 +1,171 @@
+package com.care.operate.service;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.care.common.entity.*;
+import com.care.common.enums.DeviceActiveStatusEnum;
+import com.care.common.enums.UserRoleEnum;
+import com.care.common.enums.ValidStatusEnum;
+import com.care.common.exception.BDException;
+import com.care.common.service.*;
+import com.care.common.util.MyBeanUtils;
+import com.care.common.vo.PageReqVO;
+import com.care.common.vo.UserLogindConvertVO;
+import com.care.common.vo.device.DeviceVO;
+import com.care.common.vo.sysuser.CareSysUserVO;
+import org.apache.commons.codec.digest.DigestUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * (CareSysUser)表服务实现类
+ *
+ * @author makejava
+ * @since 2021-05-21 00:08:38
+ */
+@Service
+public class OpSysUserService {
+
+    @Resource
+    private CareOrganizationService careOrganizationService;
+    @Resource
+    private CareStationService careStationService;
+    @Resource
+    private CareSysUserService careSysUserService;
+    @Resource
+    private CareDeviceService careDeviceService;
+    @Resource
+    private CareEventOrderChambService careEventOrderChambService;
+    @Resource
+    private CareHouseService careHouseService;
+
+
+    /**
+     * 服务站账号列表分页
+     * @param stationName
+     * @return
+             */
+    public IPage<CareSysUserVO> listStationAccount(String stationName,UserLogindConvertVO loginUser, PageReqVO pageReqVo) {
+        Long stationId = null;
+
+        QueryWrapper<CareStation> queryWrapper0 = new QueryWrapper<>();
+        queryWrapper0.lambda().like(StrUtil.isNotEmpty(stationName),CareStation::getName,stationName);
+        CareStation careStation = careStationService.getOne(queryWrapper0);
+        if (careStation != null){
+            stationId = careStation.getId();
+        }
+        IPage<CareSysUser> page = new Page<>(pageReqVo.getCurrent(), pageReqVo.getPageSize());
+        QueryWrapper<CareSysUser> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda() .eq(stationId != null,CareSysUser::getStationId,stationId)
+                .eq(CareSysUser::getOrgId,loginUser.getOrgId())
+                .eq(CareSysUser::getRole,UserRoleEnum.STATION.getValue())
+                .orderByAsc(CareSysUser::getName);
+
+        IPage<CareSysUser> pageRes = this.careSysUserService.page(page, queryWrapper);
+        IPage<CareSysUserVO> results = new Page<>(pageRes.getCurrent(),pageRes.getSize(),pageRes.getTotal());
+        if(CollUtil.isNotEmpty(pageRes.getRecords())){
+            List<CareSysUserVO> list = new ArrayList<>();
+            pageRes.getRecords().forEach(item -> {
+                CareSysUserVO  resVO = new CareSysUserVO();
+                BeanUtils.copyProperties(item,resVO);
+                //服务设备数量
+                QueryWrapper<CareDevice> queryWrapper1 = new QueryWrapper<>();
+                queryWrapper1.lambda().eq(CareDevice::getStationId,resVO.getStationId());
+                resVO.setDevCount(this.careDeviceService.count(queryWrapper1));
+
+                resVO.setValidStatusName(ValidStatusEnum.getCodeToName(resVO.getValidStatus()));
+                list.add(resVO);
+            });
+            results.setRecords(list);
+        }
+        return results;
+    }
+
+
+    /**
+     * 详情
+     * @param id
+     * @return
+     */
+    public CareSysUserVO getCareSysUserById(Long id){
+        CareSysUser careSysUser = this.careSysUserService.getById(id);
+        if (careSysUser!=null){
+            CareSysUserVO resVO = new CareSysUserVO();
+            BeanUtil.copyProperties(careSysUser,resVO);
+
+            //服务设备列表
+            QueryWrapper<CareDevice> queryWrapper1 = new QueryWrapper<>();
+            queryWrapper1.lambda().eq(CareDevice::getStationId,resVO.getStationId());
+            List<CareDevice> stationDeviceList = this.careDeviceService.list(queryWrapper1);
+
+            if(CollUtil.isNotEmpty(stationDeviceList)){
+                List<DeviceVO> stationDeviceVOList = new ArrayList<>();
+                stationDeviceList.forEach(item ->{
+                    DeviceVO deviceVO = new DeviceVO();
+                    BeanUtil.copyProperties(item,deviceVO);
+                    if(deviceVO.getHouseId() != null) {
+                        CareHouse careHouse = careHouseService.getById(deviceVO.getHouseId());
+                        if(careHouse != null) {
+                            deviceVO.setHouseAddr(careHouse.getAddr());
+                        }
+                    }
+                    deviceVO.setActiveStatusName(DeviceActiveStatusEnum.getCodeToName(deviceVO.getActiveStatus()));
+
+                    stationDeviceVOList.add(deviceVO);
+                });
+                resVO.setStationDeviceVOList(stationDeviceVOList);
+
+            }
+
+            return resVO;
+        }
+        return null;
+    }
+
+    /**
+     * 保存服务站账号
+     * @param vo
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public int createCareSysUser(CareSysUserVO vo,UserLogindConvertVO loginUser){
+        QueryWrapper<CareSysUser> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(CareSysUser::getPhone,vo.getPhone());
+        if(careSysUserService.count(queryWrapper) > 0){
+            return 1;
+        }
+        //保存服务站账号
+        CareSysUser careSysUser = new CareSysUser();
+        BeanUtil.copyProperties(vo,careSysUser);
+        careSysUser.setCreateTime(new Date());
+        careSysUser.setRole(UserRoleEnum.STATION.getValue());
+        careSysUser.setOrgId(loginUser.getOrgId());
+
+        this.careSysUserService.save(careSysUser);
+
+        return 0;
+    }
+
+    /**
+     * 修改服务站账号
+     * @param vo
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void updateCareSysUser(CareSysUserVO vo){
+        //保存服务站账号
+        CareSysUser careSysUser = this.careSysUserService.getById(vo.getId());
+        BeanUtil.copyProperties(vo,careSysUser);
+        careSysUser.setModifyTime(new Date());
+        this.careSysUserService.updateById(careSysUser);
+     }
+
+}

+ 1 - 1
src/main/resources/application-dev.properties

@@ -42,7 +42,7 @@ mqtt.username=shangxingkeji
 mqtt.password=sxkj@1234
 
 #是否开启mqtt消息接受服务,开启:1,不开启:0
-mqtt.on=1
+mqtt.on=0
 #设备激活返回消息超时(秒)
 mqtt.dev.jihuo.timeout=30
 

+ 19 - 0
src/main/resources/mybatis/CareDeviceMapper.xml

@@ -54,6 +54,25 @@
             </if>
         </where>
         order by ceoc.dev_code asc
+    </select>
+    <select id="listDeviceNonStation" resultType="com.care.common.vo.device.DeviceVO">
+        select
+        ceoc.*,
+        ceo.addr as houseAddr,
+        cs.name as stationName,
+        csu.phone as chambPhone,
+        csu.name as chambName
+        from care_device ceoc
+        left join care_house ceo on ceo.id = ceoc.house_id
+        left join care_station cs on cs.id = ceoc.station_id
+        left join care_sys_user csu on ceoc.chamb_id = csu.id
+        <where>
+            ceoc.org_id is null
+            <if test="userOrgId != null">
+                AND ceoc.org_id = #{userOrgId}
+            </if>
+        </where>
+        order by ceoc.dev_code asc
     </select>
      <update id="updateDevChamb">
         update care_device set chamb_id=null where id=#{id}