Browse Source

用户身份判断接口/绑定工具箱接口

master
ma 4 years ago
parent
commit
b18525d2aa
  1. 45
      src/main/java/com/ccsens/yanyuan/api/ToolController.java
  2. 45
      src/main/java/com/ccsens/yanyuan/api/UserPowerController.java
  3. 18
      src/main/java/com/ccsens/yanyuan/bean/dto/ToolDto.java
  4. 17
      src/main/java/com/ccsens/yanyuan/bean/dto/UserPowerDto.java
  5. 40
      src/main/java/com/ccsens/yanyuan/bean/vo/ToolVo.java
  6. 21
      src/main/java/com/ccsens/yanyuan/bean/vo/UserPowerVo.java
  7. 20
      src/main/java/com/ccsens/yanyuan/persist/dao/ToolDao.java
  8. 18
      src/main/java/com/ccsens/yanyuan/persist/dao/UserPowerDao.java
  9. 28
      src/main/java/com/ccsens/yanyuan/persist/dao/UserRelationDao.java
  10. 15
      src/main/java/com/ccsens/yanyuan/service/IToolService.java
  11. 16
      src/main/java/com/ccsens/yanyuan/service/IUserPowerService.java
  12. 103
      src/main/java/com/ccsens/yanyuan/service/ToolService.java
  13. 32
      src/main/java/com/ccsens/yanyuan/service/UserPowerService.java
  14. 1
      src/main/java/com/ccsens/yanyuan/util/BasicsCodeError.java
  15. 19
      src/main/resources/mapper_dao/ToolDao.xml
  16. 16
      src/main/resources/mapper_dao/UserPowerDao.xml
  17. 42
      src/main/resources/mapper_dao/UserRelationDao.xml

45
src/main/java/com/ccsens/yanyuan/api/ToolController.java

@ -0,0 +1,45 @@
package com.ccsens.yanyuan.api;
import com.ccsens.cloudutil.annotation.MustLogin;
import com.ccsens.util.JsonResponse;
import com.ccsens.util.bean.dto.QueryDto;
import com.ccsens.yanyuan.bean.dto.ToolDto;
import com.ccsens.yanyuan.bean.po.Tool;
import com.ccsens.yanyuan.bean.vo.ToolVo;
import com.ccsens.yanyuan.bean.vo.UserPowerVo;
import com.ccsens.yanyuan.service.IToolService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* @author AUSU
*/
@Api(tags = "工具箱" , description = "工具箱相关接口 | ")
@Slf4j
@RestController
@RequestMapping(value = "/tool")
public class ToolController {
@Resource
private IToolService toolService;
@MustLogin
@ApiOperation(value = "绑定工具箱", notes = "绑定工具箱")
@RequestMapping(value = "/bind", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<ToolVo.BindTool> bindTool(@ApiParam @Validated @RequestBody QueryDto<ToolDto.BindTool> params) throws Exception{
log.info("绑定工具箱:{}",params);
ToolVo.BindTool bindTool = toolService.bindTool(params.getParam(),params.getUserId());
log.info("绑定工具箱结束{}",bindTool);
return JsonResponse.newInstance().ok(bindTool);
}
}

45
src/main/java/com/ccsens/yanyuan/api/UserPowerController.java

@ -0,0 +1,45 @@
package com.ccsens.yanyuan.api;
import com.ccsens.cloudutil.annotation.MustLogin;
import com.ccsens.common.bean.vo.CProjectVo;
import com.ccsens.util.JsonResponse;
import com.ccsens.util.bean.dto.QueryDto;
import com.ccsens.yanyuan.bean.dto.ProjectDto;
import com.ccsens.yanyuan.bean.vo.ProjectVo;
import com.ccsens.yanyuan.bean.vo.UserPowerVo;
import com.ccsens.yanyuan.service.IUserPowerService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* @author AUSU
*/
@Api(tags = "用户身份" , description = "UserPowerController | ")
@Slf4j
@RestController
@RequestMapping("/userPower")
public class UserPowerController {
@Resource
private IUserPowerService userPowerService;
@MustLogin
@ApiOperation(value = "用户身份判断", notes = "用户身份判断")
@RequestMapping(value = "/identity", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<UserPowerVo.UserType> findIdentity(@ApiParam @Validated @RequestBody QueryDto params) throws Exception{
log.info("用户身份判断{}",params);
UserPowerVo.UserType userType = userPowerService.findIdentity(params.getUserId());
log.info("用户身份判断结束{}",userType);
return JsonResponse.newInstance().ok(userType);
}
}

18
src/main/java/com/ccsens/yanyuan/bean/dto/ToolDto.java

@ -0,0 +1,18 @@
package com.ccsens.yanyuan.bean.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
public class ToolDto {
@Data
@ApiModel("绑定工具箱-入参")
public static class BindTool {
@NotBlank
@ApiModelProperty("工具箱code码")
private String toolCode;
}
}

17
src/main/java/com/ccsens/yanyuan/bean/dto/UserPowerDto.java

@ -0,0 +1,17 @@
package com.ccsens.yanyuan.bean.dto;
import com.ccsens.common.bean.dto.CTaskDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author AUSU
*/
@Data
public class UserPowerDto {
}

40
src/main/java/com/ccsens/yanyuan/bean/vo/ToolVo.java

@ -0,0 +1,40 @@
package com.ccsens.yanyuan.bean.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
public class ToolVo {
@Data
@ApiModel("绑定工具箱-返参")
public static class BindTool{
@ApiModelProperty("是否绑定")
private Byte isBind;
@ApiModelProperty("用户类型(0:普通用户 1:企业用户)")
private Byte isCompany;
@ApiModelProperty("绑定者是否自己")
private Byte isMine;
@ApiModelProperty("是否满员")
private Byte isMax;
@ApiModelProperty("是否有体验用户")
private Byte isUx;
@ApiModelProperty("体验用户信息")
private List<UxUserInfo> uxUserInfo;
}
@Data
@ApiModel("体验用户信息-返参")
public static class UxUserInfo{
@ApiModelProperty("体验者用户实际id")
private Long keyId;
@ApiModelProperty("用户类型(0:体验用户 1:正式用户')")
private Byte useLevel;
@ApiModelProperty("用户名称")
private String userName;
@ApiModelProperty("性别(0-未知,1-男,2-女)")
private Byte sex;
}
}

21
src/main/java/com/ccsens/yanyuan/bean/vo/UserPowerVo.java

@ -0,0 +1,21 @@
package com.ccsens.yanyuan.bean.vo;
import com.ccsens.common.bean.vo.CTaskVo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author AUSU
*/
@Data
public class UserPowerVo {
@Data
@ApiModel("任务信息")
public static class UserType{
@ApiModelProperty("用户类型(0:普通用户 1:企业用户)")
private Byte type;
}
}

20
src/main/java/com/ccsens/yanyuan/persist/dao/ToolDao.java

@ -0,0 +1,20 @@
package com.ccsens.yanyuan.persist.dao;
import com.ccsens.yanyuan.bean.po.Tool;
import com.ccsens.yanyuan.persist.mapper.ToolMapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
/**
* @author AUSU
*/
@Repository
public interface ToolDao extends ToolMapper {
/**
* 根据工具箱code查询工具箱信息
* @param toolCode 工具箱code
* @return 工具箱信息
*/
Tool queryByCode(@Param("toolCode") String toolCode);
}

18
src/main/java/com/ccsens/yanyuan/persist/dao/UserPowerDao.java

@ -0,0 +1,18 @@
package com.ccsens.yanyuan.persist.dao;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
/**
* @author AUSU
*/
@Repository
public interface UserPowerDao {
/**
* 查询用户身份
* @param userId 用户id
* @return 是否企业用户
*/
Integer findIdentity(@Param("userId") Long userId);
}

28
src/main/java/com/ccsens/yanyuan/persist/dao/UserRelationDao.java

@ -0,0 +1,28 @@
package com.ccsens.yanyuan.persist.dao;
import com.ccsens.yanyuan.bean.vo.ToolVo;
import com.ccsens.yanyuan.persist.mapper.UserRelationMapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @author AUSU
*/
@Repository
public interface UserRelationDao extends UserRelationMapper {
/**
* 查询是否满员
* @param userId 用户id
* @return 是否满员(0否,1是)
*/
Byte queryIsMax(@Param("userId") Long userId);
/**
* 查询绑定人下的体验用户
* @param userId 用户id
* @return 体验用户列表
*/
List<ToolVo.UxUserInfo> queryUxUser(@Param("userId") Long userId);
}

15
src/main/java/com/ccsens/yanyuan/service/IToolService.java

@ -0,0 +1,15 @@
package com.ccsens.yanyuan.service;
import com.ccsens.yanyuan.bean.dto.ToolDto;
import com.ccsens.yanyuan.bean.vo.ToolVo;
public interface IToolService {
/**
* 绑定工具箱
* @param param 工具箱code
* @param userId 用户id
* @return 工具箱绑定信息
*/
ToolVo.BindTool bindTool(ToolDto.BindTool param, Long userId);
}

16
src/main/java/com/ccsens/yanyuan/service/IUserPowerService.java

@ -0,0 +1,16 @@
package com.ccsens.yanyuan.service;
import com.ccsens.yanyuan.bean.vo.UserPowerVo;
/**
* @author AUSU
*/
public interface IUserPowerService {
/**
* 用户身份判断
* @param userId 用户id
* @return 是否企业用户
*/
UserPowerVo.UserType findIdentity(Long userId);
}

103
src/main/java/com/ccsens/yanyuan/service/ToolService.java

@ -0,0 +1,103 @@
package com.ccsens.yanyuan.service;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import com.ccsens.cloudutil.feign.Tall3FeignClient;
import com.ccsens.util.exception.BaseException;
import com.ccsens.yanyuan.bean.dto.ToolDto;
import com.ccsens.yanyuan.bean.po.Tool;
import com.ccsens.yanyuan.bean.vo.ToolVo;
import com.ccsens.yanyuan.bean.vo.UserPowerVo;
import com.ccsens.yanyuan.persist.dao.ToolDao;
import com.ccsens.yanyuan.persist.dao.UserRelationDao;
import com.ccsens.yanyuan.util.BasicsCodeError;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
@Slf4j
@Service
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public class ToolService implements IToolService {
@Resource
private ToolDao toolDao;
@Resource
private UserRelationDao userRelationDao;
@Resource
private IUserPowerService userPowerService;
@Resource
private Tall3FeignClient tall3FeignClient;
@Override
public ToolVo.BindTool bindTool(ToolDto.BindTool param, Long userId) {
ToolVo.BindTool bindTool = new ToolVo.BindTool();
//查询是否已经绑定
Tool tool = toolDao.queryByCode(param.getToolCode());
if (ObjectUtil.isNotNull(tool)) {
if (ObjectUtil.isNotNull(tool.getUserId())) {
//绑定人是否自己
if (tool.getUserId().equals(userId)) {
return setMyToolInfo(userId);
}else {
bindTool.setIsBind((byte) 1);
bindTool.setIsMine((byte) 0);
return bindTool;
}
}else {
//工具箱未绑定用户
Tool newTool = new Tool();
BeanUtil.copyProperties(tool,newTool);
newTool.setUserId(userId);
toolDao.updateByPrimaryKeySelective(newTool);
return setMyToolInfo(userId);
}
}else {
throw new BaseException(BasicsCodeError.TOOL_NOT_FOUND_ERROR);
}
}
private ToolVo.BindTool setMyToolInfo(Long userId) {
ToolVo.BindTool bindTool = new ToolVo.BindTool();
bindTool.setIsMine((byte) 1);
//是否公司用户
UserPowerVo.UserType identity = userPowerService.findIdentity(userId);
if (1 == identity.getType()) {
bindTool.setIsBind((byte) 1);
bindTool.setIsCompany((byte) 1);
return bindTool;
}
//普通用户
Byte isMax = userRelationDao.queryIsMax(userId);
//工具箱 == 老人数
if (1 == isMax) {
bindTool.setIsBind((byte) 1);
bindTool.setIsCompany((byte) 0);
bindTool.setIsMax(isMax);
return bindTool;
}
//查询体验用户
List<ToolVo.UxUserInfo> uxUserInfoList = userRelationDao.queryUxUser(userId);
if (CollectionUtil.isEmpty(uxUserInfoList)) {
bindTool.setIsBind((byte) 1);
bindTool.setIsCompany((byte) 0);
bindTool.setIsMax(isMax);
bindTool.setIsUx((byte) 0);
return bindTool;
}
bindTool.setIsBind((byte) 1);
bindTool.setIsCompany((byte) 0);
bindTool.setIsMax(isMax);
bindTool.setIsUx((byte) 1);
bindTool.setUxUserInfo(uxUserInfoList);
return bindTool;
}
}

32
src/main/java/com/ccsens/yanyuan/service/UserPowerService.java

@ -0,0 +1,32 @@
package com.ccsens.yanyuan.service;
import com.ccsens.yanyuan.bean.vo.UserPowerVo;
import com.ccsens.yanyuan.persist.dao.UserPowerDao;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
@Slf4j
@Service
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public class UserPowerService implements IUserPowerService{
@Resource
private UserPowerDao userPowerDao;
@Override
public UserPowerVo.UserType findIdentity(Long userId) {
UserPowerVo.UserType userType = new UserPowerVo.UserType();
Integer identity = userPowerDao.findIdentity(userId);
if (identity < 1) {
userType.setType((byte) 0);
}else {
userType.setType((byte) 1);
}
return userType;
}
}

1
src/main/java/com/ccsens/yanyuan/util/BasicsCodeError.java

@ -33,6 +33,7 @@ public class BasicsCodeError extends CodeError {
public static final Code NOT_PLAYER_APPLY = new Code(523,"未找到报名信息信息", true);
public static final Code ID_CODE_ERROR = new Code(524,"请输入正确的身份证", true);
public static final Code NOT_FILE = new Code(525,"找不到文件", true);
public static final Code TOOL_NOT_FOUND_ERROR = new Code(526,"工具箱信息错误,请联系运维人员", true);

19
src/main/resources/mapper_dao/ToolDao.xml

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ccsens.yanyuan.persist.dao.ToolDao">
<select id="queryByCode" resultType="com.ccsens.yanyuan.bean.po.Tool">
SELECT
id,
`code`,
`name`,
description,
user_id
FROM
t_tool
WHERE
rec_status = 0
AND `code` = #{toolCode}
</select>
</mapper>

16
src/main/resources/mapper_dao/UserPowerDao.xml

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ccsens.yanyuan.persist.dao.UserPowerDao">
<select id="findIdentity" resultType="java.lang.Integer">
SELECT
COUNT(id)
FROM
u_user_type
WHERE
rec_status = 0
AND type = 1
AND user_id = #{userId}
</select>
</mapper>

42
src/main/resources/mapper_dao/UserRelationDao.xml

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ccsens.yanyuan.persist.dao.UserRelationDao">
<select id="queryIsMax" resultType="java.lang.Byte">
SELECT
IF(toolnum.number > cre.number,0,1) AS isMax
FROM
(
SELECT
COUNT( ur.id ) AS number
FROM
u_user_relation AS ur
LEFT JOIN u_user AS u ON u.key_id = ur.key_user_id
WHERE
ur.rec_status = 0
AND u.STATUS = 1
AND ur.relation_type = 1
AND u.use_level = 1
AND ur.user_id = #{userId}
) AS cre,
( SELECT COUNT( id ) AS number FROM t_tool WHERE rec_status = 0 AND user_id = #{userId} ) AS toolnum
</select>
<select id="queryUxUser" resultType="com.ccsens.yanyuan.bean.vo.ToolVo$UxUserInfo">
SELECT
u.key_id AS keyId,
u.use_level,
u.user_name,
u.sex
FROM
u_user_relation AS ur
LEFT JOIN u_user AS u ON u.key_id = ur.key_user_id
WHERE
ur.rec_status = 0
AND u.STATUS = 1
AND ur.relation_type = 1
AND u.use_level = 0
AND ur.user_id = #{userId}
</select>
</mapper>
Loading…
Cancel
Save