fengxiang
2018-05-08 606c896c1b7c9d986cfb13d8464f3482160a1389
src/main/java/com/moral/controller/MobileController.java
@@ -2,17 +2,19 @@
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.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
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.util.Crypto;
import com.moral.util.MessageUtils;
import com.taobao.api.ApiException;
import org.apache.commons.lang3.StringUtils;
import org.springframework.cglib.beans.BeanMap;
import org.springframework.web.bind.annotation.*;
import com.moral.common.bean.AppData;
import com.moral.entity.Device;
@@ -55,7 +57,7 @@
    * @param password the password
    * @return the result bean
    */
   @GetMapping("accountlogin")
   @PostMapping("accountlogin")
   public AppData<OperateUser> mobileLogin(String username, String password) {
      OperateUser operateUser = operateUserService.mobileLogin(username,password);
      return new AppData<OperateUser>(operateUser); 
@@ -69,20 +71,44 @@
    * @param newpassword the newpassword
    * @return the result bean
    */
   @GetMapping("upPassword")
   @PostMapping("upPassword")
   public AppData<OperateUser> updatePassword(Integer uid, String password, String newpassword) {
      OperateUser operateUser = operateUserService.updatePassword(uid,password,newpassword);
      return new AppData<OperateUser>(operateUser); 
   }
   /**
    * Install device.终端采集
    *
    * @param device the device
    * @return the result bean
    */
   @GetMapping("reportDevice")
   public AppData<String> installDevice(Device device) {
    /**
     *
     * @param request
     * @param uid
     * @param deviceName
     * @param address
     * @param longitude
     * @param latitude
     * @param mac
     * @param monitorpoint
     * @return
     */
   @PostMapping("reportDevice")
   public AppData<String> installDevice(
            HttpServletRequest request ,
            @RequestParam(value ="uid") Integer uid,
            @RequestParam(value ="device_name")  String deviceName,
            @RequestParam(value ="address")  String address,
            @RequestParam(value ="longitude")  double longitude,
            @RequestParam(value ="latitude")  double latitude,
            @RequestParam(value ="mac")  String mac,
            @RequestParam(value ="monitorpoint")  Integer monitorpoint
    ) {
       // device 适配
       Device device = new Device();
       device.setOperateUserId(uid);
       device.setName(deviceName);
       device.setAddress(address);
       device.setLongitude(longitude);
       device.setLatitude(latitude);
       device.setMac(mac);
       device.setMonitorPointId(monitorpoint);
      deviceService.saveOrUpdateDevice(device);
      return new AppData<String>("");
   }
@@ -95,7 +121,7 @@
    * @param pageSize the page size
    * @return the install devices by operate user
    */
   @GetMapping("myRelease")
   @PostMapping("myRelease")
   public AppData<List<Device>> getInstallDevicesByOperateUser(@RequestParam(value="uid", required=true)Integer uid, 
         @RequestParam(defaultValue="0")Integer pageIndex, @RequestParam(defaultValue="0")Integer pageSize) {
      List<Device> devices = deviceService.getInstallDevicesByOperateUser(uid, pageIndex, pageSize);
@@ -109,9 +135,12 @@
    * @return the device by mac
    */
   @GetMapping("getEquInfoByMac")
   public AppData<Device> getDeviceByMac(@RequestParam(value="mac", required=true)String mac) {
      Device device = deviceService.getDeviceByMac(mac);
      return new AppData<Device>(device);
   public AppData<Map> getDeviceByMac(@RequestParam(value="mac", required=true)String mac) {
      Device device = deviceService.getDeviceByMac(mac,false);//不从缓存取
      Map<String,Object> deviceMap = new HashMap<>(BeanMap.create(device));
      deviceMap.put("monitorpointDetail",deviceMap.get("monitorPoint"));
      deviceMap.remove("monitorPoint");
      return new AppData<Map>(deviceMap);
   }
   /**
@@ -139,4 +168,95 @@
      List<Organization> organizations = organizationService.getOrganizationsByAreaName(parameters);
      return new AppData<List<Organization>>(organizations);
   }
   /**
    * Send SMS
    *
    * @param mobile
    * @return
    */
   @PostMapping("sendSms")
   public AppData<String> 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<String>("");
   }
   /**
    *
    * @param username
    * @param password
    * @param code
    * @return
    */
   @PostMapping("password")
   public AppData<String> 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;
      }
   }
}