diff --git a/nxhs-service/src/main/java/cc/yunxi/controller/DeviceController.java b/nxhs-service/src/main/java/cc/yunxi/controller/DeviceController.java index b8dbd35..73c10e4 100644 --- a/nxhs-service/src/main/java/cc/yunxi/controller/DeviceController.java +++ b/nxhs-service/src/main/java/cc/yunxi/controller/DeviceController.java @@ -8,6 +8,7 @@ import cc.yunxi.domain.po.*; import cc.yunxi.domain.vo.device.*; import cc.yunxi.domain.vo.file.FileUploadRespVO; import cc.yunxi.service.*; +import cc.yunxi.service.impl.CommonService; import cc.yunxi.utils.DeviceStatusManager; import cc.yunxi.utils.UserContext; import cn.hutool.core.util.StrUtil; @@ -56,6 +57,13 @@ public class DeviceController { private IRecycleCleanOrderService cleanOrderService; @Resource private IRecycleDeliveryOrderService deliveryOrderService; + @Resource + private IRecyclerService recyclerService; + @Resource + private IClientService clientService; + @Resource + private ICommonService commonService; + @Resource private IFileService fileService; @@ -213,15 +221,61 @@ public class DeviceController { } //手机号登录 - @PostMapping("/login") - @ApiModelProperty("手机号登录") - public CommonResult login(@RequestBody LoginReqVO loginReqVO) { + @PostMapping("/customerLogin") + @ApiModelProperty("投递员手机号登录") + public CommonResult customerLogin(@RequestBody LoginReqVO loginReqVO) { CommonResult result = new CommonResult<>(); - //todo - + Client client = clientService.getLastestClientByPhone(loginReqVO.getPhone()); + if (client == null) { + throw new BizIllegalException("登录失败:您还未注册,请先扫码注册!"); + } + RecycleDevice device = deviceService.getByDeviceCode(loginReqVO.getDeviceCode()); + if (device == null) { + throw new BizIllegalException("登录失败:未查询到对应设备信息!"); + } + UserDTO userDTO = commonService.loginDeviceByClient(client); + LoginRespVO respVO = new LoginRespVO(); + respVO.setUserId(client.getId()); + respVO.setOpenId(client.getWxOpenid()); + respVO.setUserName(client.getNickName()); + respVO.setStatus(client.getEnabledMark()); + respVO.setToken(userDTO.getToken()); + respVO.setTimeExpire(userDTO.getTimeExpire()); + respVO.setRole(1); return result; } + @PostMapping("/customerLogin") + @ApiModelProperty("清运员手机号登录") + public CommonResult cleanerLogin(@RequestBody LoginReqVO loginReqVO) { + + Recycler recycler = recyclerService.getRecyclerByPhoneNumber(loginReqVO.getPhone()); + if (recycler == null) { + throw new BizIllegalException("登录失败:你还不是清运员,请先注册!"); + } + RecycleDevice device = deviceService.getByDeviceCode(loginReqVO.getDeviceCode()); + if (device == null) { + throw new BizIllegalException("登录失败:未查询到对应设备信息!"); + } + String recyclerPhone = device.getBeLongRecyclerPhone(); + if (StrUtil.isEmpty(recyclerPhone) || !recyclerPhone.equals(loginReqVO.getPhone())) { + throw new BizIllegalException("登录失败:你不是当前设备的清运员或当前设备未分配清运员!"); + } + + //登录成功 + UserDTO userDTO = commonService.loginDeviceByRecycler(recycler); + LoginRespVO respVO = new LoginRespVO(); + respVO.setUserId(recycler.getId()); + respVO.setOpenId(recycler.getOpenid()); + respVO.setUserName(recycler.getStaffsName()); + respVO.setStatus(recycler.getStatus()); + respVO.setToken(userDTO.getToken()); + respVO.setTimeExpire(userDTO.getTimeExpire()); + respVO.setRole(1); + return CommonResult.success(respVO); + } + + //投递重量上传 @PostMapping("/delivery") @ApiModelProperty("投递订单上传") @@ -411,8 +465,7 @@ public class DeviceController { @ApiModelProperty("获取设备状态") @PostMapping("/status") - public CommonResult command(@RequestBody DeviceVO deviceVO) - { + public CommonResult command(@RequestBody DeviceVO deviceVO) { String deviceCode = deviceVO.getDeviceCode(); CommandVO cmd = new CommandVO(); cmd.setCmd(CMDEnum.status); diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/po/RecycleDevice.java b/nxhs-service/src/main/java/cc/yunxi/domain/po/RecycleDevice.java index 14a5b07..f334e73 100644 --- a/nxhs-service/src/main/java/cc/yunxi/domain/po/RecycleDevice.java +++ b/nxhs-service/src/main/java/cc/yunxi/domain/po/RecycleDevice.java @@ -50,6 +50,10 @@ public class RecycleDevice { @TableField(value = "BE_LONG_COMPANY_ID") @ApiModelProperty("所属商户") private String beLongCompanyId; + + @TableField(value = "BE_LONG_RECYCLER_PHONE") + @ApiModelProperty("回收员手机号") + private String beLongRecyclerPhone; @TableField(value = "LATITUDE") @ApiModelProperty("纬度") private String latitude; diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/po/Recycler.java b/nxhs-service/src/main/java/cc/yunxi/domain/po/Recycler.java index f473cc7..1e34a1b 100644 --- a/nxhs-service/src/main/java/cc/yunxi/domain/po/Recycler.java +++ b/nxhs-service/src/main/java/cc/yunxi/domain/po/Recycler.java @@ -65,6 +65,10 @@ public class Recycler { @TableField(value = "auto_enabled") private Integer autoEnabled; + @ApiModelProperty("管理设备") + @TableField("manage_device") + private String manageDevice; + @ApiModelProperty("状态 (0-禁用,1-启用)") @TableField("enabled_mark") private Integer status; diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/LoginReqVO.java b/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/LoginReqVO.java index 7e7f1c2..9076619 100644 --- a/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/LoginReqVO.java +++ b/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/LoginReqVO.java @@ -19,5 +19,4 @@ public class LoginReqVO { @ApiModelProperty(value = "手机号", required = true, example = "13800138000") @NotBlank(message = "手机号不能为空") private String phone; - } diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/LoginRespVO.java b/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/LoginRespVO.java index 807f63c..766ca88 100644 --- a/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/LoginRespVO.java +++ b/nxhs-service/src/main/java/cc/yunxi/domain/vo/device/LoginRespVO.java @@ -4,21 +4,31 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; import java.util.List; //设备手机号登录成功 @Data @ApiModel("设备手机号登录成功") public class LoginRespVO { - @ApiModelProperty("用户id") + @ApiModelProperty(value = "用户id", required = true, example = "1") + @NotBlank(message = "用户id不能为空") private String userId;//用户id + @ApiModelProperty(value = "wx_openid") + private String openId; @ApiModelProperty("用户名") private String userName;//用户名 - @ApiModelProperty("用户状态") - private String status;//用户状态 - private String phone;//手机号 - private String token;//手机号 + @ApiModelProperty(value = "用户状态", required = true) + @NotNull(message = "用户状态不能为空") + private Integer status; + @ApiModelProperty(value = "用户状态", required = true) + @NotBlank(message = "令牌不能为空") + private String token; + @ApiModelProperty(value = "令牌过期时间", required = true) + @NotNull(message = "令牌过期时间不能为空") private Long timeExpire; - private String deviceCode;//设备编码 - private List roles;//用户角色 + @ApiModelProperty(value = "用户角色", required = true) + @NotNull(message = "用户角色不能为空") + private Integer role; } diff --git a/nxhs-service/src/main/java/cc/yunxi/service/ICommonService.java b/nxhs-service/src/main/java/cc/yunxi/service/ICommonService.java index 28267c7..2cba16d 100644 --- a/nxhs-service/src/main/java/cc/yunxi/service/ICommonService.java +++ b/nxhs-service/src/main/java/cc/yunxi/service/ICommonService.java @@ -3,6 +3,8 @@ package cc.yunxi.service; import cc.yunxi.domain.dto.UserDTO; import cc.yunxi.domain.dto.WxLoginDTO; +import cc.yunxi.domain.po.Client; +import cc.yunxi.domain.po.Recycler; import javax.validation.Valid; @@ -40,4 +42,20 @@ public interface ICommonService { * @param token */ UserDTO checkStation(String token); + + /** + * 回收员登录设备 + * @param recycler + * @return UserDTO + * @return + */ + UserDTO loginDeviceByRecycler(Recycler recycler); + + + /** + * 散户登录设备 + * @param client + * @return UserDTO + */ + UserDTO loginDeviceByClient(Client client); } diff --git a/nxhs-service/src/main/java/cc/yunxi/service/impl/CommonService.java b/nxhs-service/src/main/java/cc/yunxi/service/impl/CommonService.java index de0f8d4..7f75599 100644 --- a/nxhs-service/src/main/java/cc/yunxi/service/impl/CommonService.java +++ b/nxhs-service/src/main/java/cc/yunxi/service/impl/CommonService.java @@ -197,6 +197,28 @@ public class CommonService implements ICommonService { return userDTO; } + @Override + public UserDTO loginDeviceByRecycler(Recycler recycler) { + UserDTO userDTO = new UserDTO(); + userDTO.setUserType(UserTypeEnum.RECYCLER); + userDTO.setId(recycler.getId()); + userDTO.setUsername(recycler.getStaffsName()); + userDTO.setCompanyId(recycler.getCompanyId()); + userDTO.setStationId(recycler.getStationId()); + userDTO.setToken(this.createToken(userDTO)); + return userDTO; + } + + @Override + public UserDTO loginDeviceByClient(Client client) { + UserDTO userDTO = new UserDTO(); + userDTO.setId(client.getId()); + userDTO.setUserType(UserTypeEnum.CLIENT); + userDTO.setUsername(client.getNickName()); + userDTO.setToken(this.createToken(userDTO)); + return userDTO; + } + /** * 创建token diff --git a/nxhs-service/src/main/resources/mapper/ClientMapper.xml b/nxhs-service/src/main/resources/mapper/ClientMapper.xml index 5e1cc82..78f4527 100644 --- a/nxhs-service/src/main/resources/mapper/ClientMapper.xml +++ b/nxhs-service/src/main/resources/mapper/ClientMapper.xml @@ -4,7 +4,7 @@