diff --git a/src/main/java/com/glxp/api/controller/purchase/userPersonController.java b/src/main/java/com/glxp/api/controller/purchase/userPersonController.java index 35073bd..bd6a412 100644 --- a/src/main/java/com/glxp/api/controller/purchase/userPersonController.java +++ b/src/main/java/com/glxp/api/controller/purchase/userPersonController.java @@ -1,41 +1,23 @@ package com.glxp.api.controller.purchase; -import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; -import cn.hutool.crypto.SmUtil; -import cn.hutool.crypto.asymmetric.KeyType; -import cn.hutool.crypto.asymmetric.SM2; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.pagehelper.PageInfo; import com.glxp.api.common.enums.ResultEnum; import com.glxp.api.common.res.BaseResponse; import com.glxp.api.common.util.ResultVOUtils; -import com.glxp.api.entity.sup.UserCertEntity; -import com.glxp.api.entity.sup.UserCertSetEntity; import com.glxp.api.entity.sup.UserPersonEntity; import com.glxp.api.req.auth.UserPersonFilterRequest; -import com.glxp.api.req.purchase.FilterImageRequest; -import com.glxp.api.req.purchase.certRequest; -import com.glxp.api.req.system.DeleteCompanyFileRequest; import com.glxp.api.res.PageSimpleResponse; -import com.glxp.api.service.sup.UserCertService; -import com.glxp.api.service.sup.UserCertSetService; -import com.glxp.api.service.sup.UserPersonService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Value; import org.springframework.validation.BindingResult; -import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; -import java.io.File; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Date; import java.util.List; /** diff --git a/src/main/java/com/glxp/api/controller/sup/CompanyLoginController.java b/src/main/java/com/glxp/api/controller/sup/CompanyLoginController.java new file mode 100644 index 0000000..7202618 --- /dev/null +++ b/src/main/java/com/glxp/api/controller/sup/CompanyLoginController.java @@ -0,0 +1,83 @@ +package com.glxp.api.controller.sup; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.glxp.api.common.enums.ResultEnum; +import com.glxp.api.common.res.BaseResponse; +import com.glxp.api.common.util.ResultVOUtils; +import com.glxp.api.constant.Constant; +import com.glxp.api.entity.auth.AuthAdmin; +import com.glxp.api.entity.sup.UserPersonEntity; +import com.glxp.api.entity.system.SysPdaKeyEntity; +import com.glxp.api.exception.JsonException; +import com.glxp.api.req.auth.LoginRequest; +import com.glxp.api.res.auth.LoginResponse; +import com.glxp.api.res.sup.PcLoginResponse; +import com.glxp.api.service.sup.UserPersonService; +import com.glxp.api.util.DateUtil; +import com.glxp.api.util.IpUtils; +import com.glxp.api.util.JwtUtils; +import com.glxp.api.util.PasswordUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.validation.Valid; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +@Slf4j +@Api(tags = "注册企业用户登录接口") +@RestController +public class CompanyLoginController { + + @Resource + private UserPersonService userPersonService; + + /** + * 用户登录 + * + * @return + */ + @ApiOperation(value = "企业用户登录", response = LoginResponse.class) + @PostMapping(value = "/company/login") + public BaseResponse index(@RequestBody @Valid LoginRequest loginRequest, + BindingResult bindingResult, + HttpServletRequest request) { + if (bindingResult.hasErrors()) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); + } + + UserPersonEntity userPersonEntity = userPersonService.getOne(new QueryWrapper().eq("userName", loginRequest.getUsername())); + if (userPersonEntity == null) { + throw new JsonException(ResultEnum.DATA_NOT, "用户不存在"); + } + + if (!PasswordUtils.authAdminPwd(loginRequest.getPassword()).equals(userPersonEntity.getPassword())) { + throw new JsonException(ResultEnum.DATA_NOT, "用户名或密码错误"); + } + + // 更新登录状态 + userPersonEntity.setLastLoginTime(new Date()); + userPersonEntity.setLastLoginIp(IpUtils.getIpAddr(request)); + userPersonService.update(userPersonEntity); + + Map claims = new HashMap<>(); + claims.put("pc_user_id", userPersonEntity.getId()); + String token = JwtUtils.createToken(claims, 3 * 86400L); // 三天后过期 + PcLoginResponse pcLoginResponse = new PcLoginResponse(); + pcLoginResponse.setUserId(userPersonEntity.getId()); + pcLoginResponse.setToken(token); + pcLoginResponse.setCompanyId(userPersonEntity.getCompanyId()); + return ResultVOUtils.success(pcLoginResponse); + } + + +} diff --git a/src/main/java/com/glxp/api/entity/sup/UserPersonEntity.java b/src/main/java/com/glxp/api/entity/sup/UserPersonEntity.java index fa40424..a3baaa5 100644 --- a/src/main/java/com/glxp/api/entity/sup/UserPersonEntity.java +++ b/src/main/java/com/glxp/api/entity/sup/UserPersonEntity.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; + import java.io.Serializable; import java.util.Date; @@ -12,8 +13,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** - * 企业负责人 - */ + * 企业负责人 + */ @ApiModel("企业负责人实体") @Data @TableName(value = "user_person") @@ -97,5 +98,13 @@ public class UserPersonEntity implements Serializable { @TableField(value = "createTime") private Date createTime; + @ApiModelProperty(value = "最后登录ip") + @TableField("lastLoginIp") + private String lastLoginIp; + // 最后登录时间 + @ApiModelProperty(value = "最后登录时间") + @TableField("lastLoginTime") + private Date lastLoginTime; + private static final long serialVersionUID = 1L; } diff --git a/src/main/java/com/glxp/api/res/auth/LoginResponse.java b/src/main/java/com/glxp/api/res/auth/LoginResponse.java index cfaeb53..2e9e25d 100644 --- a/src/main/java/com/glxp/api/res/auth/LoginResponse.java +++ b/src/main/java/com/glxp/api/res/auth/LoginResponse.java @@ -5,7 +5,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data -@ApiModel("登入响应类") +@ApiModel("系统用户登录响应类") public class LoginResponse { @ApiModelProperty(value = "id") diff --git a/src/main/java/com/glxp/api/res/sup/PcLoginResponse.java b/src/main/java/com/glxp/api/res/sup/PcLoginResponse.java new file mode 100644 index 0000000..ef61967 --- /dev/null +++ b/src/main/java/com/glxp/api/res/sup/PcLoginResponse.java @@ -0,0 +1,21 @@ +package com.glxp.api.res.sup; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +@Data +@ApiModel("系统用户登录响应类") +public class PcLoginResponse { + + @ApiModelProperty(value = "用户ID") + private Long userId; + + @ApiModelProperty(value = "令牌") + private String token; + + @ApiModelProperty(value = "企业ID") + private Long companyId; + +} diff --git a/src/main/java/com/glxp/api/service/sup/UserPersonService.java b/src/main/java/com/glxp/api/service/sup/UserPersonService.java index f0da848..01c2ff3 100644 --- a/src/main/java/com/glxp/api/service/sup/UserPersonService.java +++ b/src/main/java/com/glxp/api/service/sup/UserPersonService.java @@ -1,13 +1,27 @@ package com.glxp.api.service.sup; -import com.glxp.api.entity.sup.UserCompanyEntity; +import org.springframework.stereotype.Service; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.glxp.api.entity.sup.UserPersonEntity; -import com.baomidou.mybatisplus.extension.service.IService; -public interface UserPersonService extends IService{ - int insert(UserPersonEntity userPerson); +import com.glxp.api.dao.sup.UserPersonMapper; - boolean update(UserPersonEntity userPerson); +import javax.annotation.Resource; - boolean delete(UserPersonEntity userPerson); +@Service +public class UserPersonService extends ServiceImpl { + @Resource + UserPersonMapper userPersonMapper; + + public int insert(UserPersonEntity userPerson) { + return userPersonMapper.insert(userPerson); + } + + public boolean update(UserPersonEntity userPerson) { + return userPersonMapper.updateById(userPerson) > 0; + } + + public boolean delete(UserPersonEntity userPerson) { + return userPersonMapper.deleteById(userPerson) > 0; + } } diff --git a/src/main/java/com/glxp/api/service/sup/impl/UserPersonServiceImpl.java b/src/main/java/com/glxp/api/service/sup/impl/UserPersonServiceImpl.java deleted file mode 100644 index d1c6880..0000000 --- a/src/main/java/com/glxp/api/service/sup/impl/UserPersonServiceImpl.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.glxp.api.service.sup.impl; - -import com.glxp.api.service.sup.UserPersonService; -import org.springframework.stereotype.Service; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.glxp.api.entity.sup.UserPersonEntity; -import com.glxp.api.dao.sup.UserPersonMapper; - -import javax.annotation.Resource; - -@Service -public class UserPersonServiceImpl extends ServiceImpl implements UserPersonService { - - @Resource - UserPersonMapper userPersonMapper; - - @Override - public int insert(UserPersonEntity userPerson) { - return userPersonMapper.insert(userPerson); - } - - @Override - public boolean update(UserPersonEntity userPerson) { - return userPersonMapper.updateById(userPerson)>0; - } - - @Override - public boolean delete(UserPersonEntity userPerson) { - return userPersonMapper.deleteById(userPerson)>0; - } -}