package com.moral.controller; import static com.moral.common.util.WebUtils.getParametersStartingWith; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import org.apache.commons.lang3.StringUtils; import org.springframework.cglib.beans.BeanMap; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import com.moral.common.bean.AppData; import com.moral.common.bean.ResultBean; import com.moral.common.util.Crypto; import com.moral.common.util.WebUtils; import com.moral.entity.Account; import com.moral.entity.Device; import com.moral.entity.MonitorPoint; import com.moral.entity.OperateUser; import com.moral.entity.Organization; import com.moral.entity.Profession; import com.moral.entity.adapter.EquDeviceAdapter; import com.moral.service.AccountService; import com.moral.service.DeviceService; import com.moral.service.HistoryService; import com.moral.service.MonitorPointService; import com.moral.service.OperateUserService; import com.moral.service.OrganizationService; import com.moral.service.ProfessionService; import com.moral.util.MessageUtils; import com.taobao.api.ApiException; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; /** * The Class MobileController. */ @RestController @RequestMapping("mobile") @CrossOrigin(origins = "*", maxAge = 3600) @Api(tags = "Mobile", description = "APP接口") public class MobileController { /** The operate user service. */ @Resource private OperateUserService operateUserService; /** The device service. */ @Resource private DeviceService deviceService; /** The organization service. */ @Resource private OrganizationService organizationService; /** The monitor point service. */ @Resource private MonitorPointService monitorPointService; @Resource private ProfessionService professionService; @Resource private AccountService accountService; @Resource private HistoryService historyService; /** * Mobile login.登录 * * @param username the username * @param password the password * @return the result bean */ @RequestMapping("accountlogin") public AppData mobileLogin(String username, String password) { OperateUser operateUser = operateUserService.mobileLogin(username,password); return new AppData(operateUser); } /** * Update password.修改密码 * * @param uid the uid * @param password the password * @param newpassword the newpassword * @return the result bean */ @RequestMapping("upPassword") public AppData updatePassword(Integer uid, String password, String newpassword) { OperateUser operateUser = operateUserService.updatePassword(uid,password,newpassword); return new AppData(operateUser); } /** * 根据 设备id 来获取设备信息 */ @RequestMapping("deviceInfo") public AppData deviceInfo(Integer id){ Device device = deviceService.queryById(id); return new AppData(device); } /** * * @param equDeviceAdapter * @return */ @RequestMapping("reportDevice") public AppData installDevice(EquDeviceAdapter equDeviceAdapter) { //deviceService.addOrModify(equDeviceAdapter.toDevice()); deviceService.saveOrUpdate4Mobile(equDeviceAdapter.toDevice(), equDeviceAdapter.getDeviceProperty()); return new AppData(""); } /** * Gets the install devices by operate user.终端采集 * * @param uid the uid * @param pageIndex the page index * @param pageSize the page size * @return the install devices by operate user */ @RequestMapping("myRelease") public AppData> getInstallDevicesByOperateUser(@RequestParam(value="uid", required=true)Integer uid, @RequestParam(defaultValue="0")Integer pageIndex, @RequestParam(defaultValue="0")Integer pageSize) { List devices = deviceService.getInstallDevicesByOperateUser(uid, pageIndex, pageSize); return new AppData>(devices); } /** * Gets the device by mac. * * @param mac the mac * @return the device by mac */ @RequestMapping("getEquInfoByMac") public AppData getDeviceByMac(@RequestParam(value="mac", required=true)String mac) { Device device = deviceService.getDeviceByMac(mac,false);//不从缓存取 if(device!=null){ Map deviceMap = new HashMap<>(BeanMap.create(device)); deviceMap.put("monitorpointDetail",deviceMap.get("monitorPoint")); deviceMap.remove("monitorPoint"); return new AppData(deviceMap); }else{ return new AppData("mac地址不存在",AppData.FAIL); } } /** * Gets the monitor points by area name. * * @param request the area name * @return the monitor points by area name */ @RequestMapping("getMpointsByAreaName") public AppData> getMonitorPointsByAreaName(HttpServletRequest request) { Map parameters = getParametersStartingWith(request, null); List monitorPoints = monitorPointService.getMonitorPointsByAreaName(parameters); return new AppData>(monitorPoints); } /** * Gets the organizations by area name. * * @param request the area name * @return the organizations by area name */ @RequestMapping("getOrgsByAreaName") public AppData> getOrganizationsByAreaName(HttpServletRequest request) { Map parameters = getParametersStartingWith(request, null); List organizations = organizationService.getOrganizationsByAreaName(parameters); return new AppData>(organizations); } /** * Send SMS * * @param mobile * @return */ @RequestMapping("sendSms") public AppData sendSms(String mobile) { AppData apiData = new AppData(); if (StringUtils.isBlank(mobile)){ apiData.setErrno(1); apiData.setMessage("没有输入手机号码"); apiData.setData("{}"); return apiData; } OperateUser user = operateUserService.getOperateUserByMobile(mobile); if (user==null){ apiData.setErrno(1); apiData.setMessage("手机号没有关联用户"); apiData.setData("{}"); return apiData; } //生成验证码 int code = (int)((Math.random() * 9 + 1) * 100000); user.setCode(String.valueOf(code)); operateUserService.updateOperateUser(user); //发送到手机 try { int state = MessageUtils.sendMsg(mobile, String.valueOf(code)); if(state==0){ apiData.setErrno(0); apiData.setMessage("发送验证码成功"); apiData.setData("{}"); return apiData; } if(state==1){ apiData.setErrno(1); apiData.setMessage("发送验证码失败"); apiData.setData("{}"); return apiData; } } catch (ApiException e) { e.printStackTrace(); } return new AppData(""); } /** * * @param username * @param password * @param code * @return */ @RequestMapping("password") public AppData password(String username, String password, String code){ AppData apiData = new AppData(); if (StringUtils.isBlank(code)){ apiData.setErrno(1); apiData.setMessage("重置密码失败,没有输出验证码"); apiData.setData("{}"); return apiData; } OperateUser user = operateUserService.getOperateUserByMobile(username); if (user==null){ apiData.setErrno(1); apiData.setMessage("手机号没有关联用户"); apiData.setData("{}"); return apiData; } if (user.getCode().equals(code)){ user.setPassword(Crypto.md5(password)); int new_code = (int)((Math.random() * 9 + 1) * 100000); user.setCode(String.valueOf(new_code)); operateUserService.updateOperateUser(user); apiData.setErrno(0); apiData.setMessage("重置密码成功"); apiData.setData("{}"); return apiData; } else { apiData.setErrno(1); apiData.setMessage("输入验证码不正确"); apiData.setData("{}"); return apiData; } } @RequestMapping("profession") public AppData> profession(){ List professions = professionService.getProfessiontList(); return new AppData>(professions); } @GetMapping("login") @ApiOperation(value = "公司用户登录", notes = "公司用户登录") @ApiImplicitParams(value = { @ApiImplicitParam(name = "account", value = "账号", required = true, paramType = "query", dataType = "String"), @ApiImplicitParam(name = "password", value = "密码", required = true, paramType = "query", dataType = "String") }) public ResultBean companyLogin(HttpServletRequest request){ Map parameters = getParametersStartingWith(request, null); Account account = accountService.companyLogin(parameters); return new ResultBean(account); } @GetMapping("devices") @ApiOperation(value = "获取设备信息") @ApiImplicitParams(value = { @ApiImplicitParam(name = "organizationId", value = "组织Id", required = true, paramType = "query", dataType = "String"), }) public ResultBean> getDevicesByOrganizationId(HttpServletRequest request){ Map parameters = getParametersStartingWith(request, null); List devices = deviceService.getDevicesByOrganizationId(parameters); return new ResultBean>(devices); } @GetMapping("sensors") @ApiOperation(value = "获取设备传感器信息") @ApiImplicitParams(value = { @ApiImplicitParam(name = "deviceVersionId", value = "设备版本Id", required = true, paramType = "query", dataType = "int"), @ApiImplicitParam(name = "mac", value = "设备mac", required = true, paramType = "query", dataType = "String"), @ApiImplicitParam(name = "deviceId", value = "设备id", required = true, paramType = "query", dataType = "int"), }) public ResultBean>> getSensorsDataByDevice(HttpServletRequest request){ Map parameters = getParametersStartingWith(request, null); List> sensors = historyService.getSensorsDataByDevice(parameters); return new ResultBean>>(sensors); } @GetMapping("sensor") @ApiOperation(value = "获取单一传感器数据") @ApiImplicitParams(value = { @ApiImplicitParam(name = "mac", value = "设备mac", required = true, paramType = "query", dataType = "String"), @ApiImplicitParam(name = "sensorKey", value = "传感器key", required = true, paramType = "query", dataType = "String"), @ApiImplicitParam(name = "size", value = "获取数据条数", required = true, paramType = "query", dataType = "int"), }) public ResultBean>> getSensorDataBySensorKey(HttpServletRequest request){ Map parameters = getParametersStartingWith(request, null); List> sensors = historyService.getSensorDataBySensorKey(parameters); return new ResultBean>>(sensors); } @GetMapping("profession-provincecode") @ApiOperation(value = "根据省code返回行业数据", notes = "根据省code返回行业数据") @ApiImplicitParams(value = { @ApiImplicitParam(name = "provinceCode", value = "省code", required = true, paramType = "query", dataType = "String") }) public ResultBean> getProfessionByProvinceCode(HttpServletRequest request){ Map parameters = WebUtils.getParametersStartingWith(request, null); List professions = professionService.getProfessiontList(parameters); return new ResultBean>(professions); } @PostMapping("update-maintenance") @ApiOperation(value = "设备状态从离线更新为维保", notes = "设备状态从离线更新为维保") @ApiImplicitParams(value = { @ApiImplicitParam(name = "id", value = "设备ID", required = true, paramType = "query", dataType = "int") , @ApiImplicitParam(name = "old_state", value = "旧的设备状态", required = true, paramType = "query", dataType = "String"), @ApiImplicitParam(name = "new_state", value = "新的设备状态", required = true, paramType = "query", dataType = "String") }) public ResultBean offLinToMaintenance(HttpServletRequest request) { Map parameters = getParametersStartingWith(request, null); deviceService.offLinToMaintenance(parameters); ResultBean resultBean = new ResultBean(parameters); return resultBean; } @GetMapping("mointorPointRank") @ApiOperation(value = "获取站点排名", notes = "获取站点排名") @ApiImplicitParams(value = { @ApiImplicitParam(name = "accountId", value = "账号id", required = true, paramType = "query", dataType = "String") }) public ResultBean> getMointorPointRank(HttpServletRequest request){ Map parameters = WebUtils.getParametersStartingWith(request, null); String id = parameters.get("accountId").toString(); Map account = accountService.getOrganizationIdByAccountId(id); //通过组织id来获取站点和设备信息 System.out.println(account); historyService.getMointorPointRankByOrganizationId(account); return new ResultBean>(account); } }