Browse Source

添加限制 每个用户只能填一次 根据用户Id限制

dev
jianjun 4 years ago
parent
commit
79483b82dd
  1. 2
      tduck-account/src/main/java/com/tduck/cloud/account/service/UserService.java
  2. 4
      tduck-account/src/main/java/com/tduck/cloud/account/service/impl/UserServiceImpl.java
  3. 2
      tduck-api/src/main/java/com/tduck/cloud/api/web/controller/UserLoginController.java
  4. 4
      tduck-api/src/main/java/com/tduck/cloud/api/web/interceptor/AuthorizationInterceptor.java
  5. 5
      tduck-common/src/main/java/com/tduck/cloud/common/util/LoginUserUtil.java
  6. 2
      tduck-common/src/main/java/com/tduck/cloud/common/vo/LoginUserVO.java
  7. 5
      tduck-project/src/main/java/com/tduck/cloud/project/entity/UserProjectResultEntity.java
  8. 11
      tduck-project/src/main/java/com/tduck/cloud/project/entity/UserProjectSettingEntity.java
  9. 19
      tduck-project/src/main/java/com/tduck/cloud/project/service/impl/UserProjectSettingServiceImpl.java

2
tduck-account/src/main/java/com/tduck/cloud/account/service/UserService.java

@ -6,7 +6,7 @@ import com.tduck.cloud.account.entity.enums.AccountChannelEnum;
import com.tduck.cloud.account.request.AccountLoginRequest;
import com.tduck.cloud.account.request.QqLoginRequest;
import com.tduck.cloud.account.request.RegisterAccountRequest;
import com.tduck.cloud.account.vo.LoginUserVO;
import com.tduck.cloud.common.vo.LoginUserVO;
import com.tduck.cloud.common.util.Result;
/**

4
tduck-account/src/main/java/com/tduck/cloud/account/service/impl/UserServiceImpl.java

@ -20,8 +20,8 @@ import com.tduck.cloud.account.service.UserAuthorizeService;
import com.tduck.cloud.account.service.UserService;
import com.tduck.cloud.account.util.JwtUtils;
import com.tduck.cloud.account.util.NameUtils;
import com.tduck.cloud.account.util.LoginUserUtil;
import com.tduck.cloud.account.vo.LoginUserVO;
import com.tduck.cloud.common.util.LoginUserUtil;
import com.tduck.cloud.common.vo.LoginUserVO;
import com.tduck.cloud.common.util.RedisUtils;
import com.tduck.cloud.common.util.Result;
import lombok.RequiredArgsConstructor;

2
tduck-api/src/main/java/com/tduck/cloud/api/web/controller/UserLoginController.java

@ -16,7 +16,7 @@ import com.tduck.cloud.account.request.RetrievePasswordRequest;
import com.tduck.cloud.account.service.UserService;
import com.tduck.cloud.account.service.UserValidateService;
import com.tduck.cloud.account.util.QqAuthorizationUtils;
import com.tduck.cloud.account.vo.LoginUserVO;
import com.tduck.cloud.common.vo.LoginUserVO;
import com.tduck.cloud.api.util.HttpUtils;
import com.tduck.cloud.common.util.JsonUtils;
import com.tduck.cloud.common.util.RedisUtils;

4
tduck-api/src/main/java/com/tduck/cloud/api/web/interceptor/AuthorizationInterceptor.java

@ -3,8 +3,8 @@ package com.tduck.cloud.api.web.interceptor;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.tduck.cloud.account.util.JwtUtils;
import com.tduck.cloud.account.util.LoginUserUtil;
import com.tduck.cloud.account.vo.LoginUserVO;
import com.tduck.cloud.common.util.LoginUserUtil;
import com.tduck.cloud.common.vo.LoginUserVO;
import com.tduck.cloud.api.annotation.Login;
import com.tduck.cloud.api.exception.AuthorizationException;
import com.tduck.cloud.common.constant.CommonConstants;

5
tduck-account/src/main/java/com/tduck/cloud/account/util/LoginUserUtil.java → tduck-common/src/main/java/com/tduck/cloud/common/util/LoginUserUtil.java

@ -1,6 +1,7 @@
package com.tduck.cloud.account.util;
package com.tduck.cloud.common.util;
import com.tduck.cloud.account.vo.LoginUserVO;
import com.tduck.cloud.common.vo.LoginUserVO;
/**
* desc: 用户信息ThreadLocal 暂时只有用户Id和customerId

2
tduck-account/src/main/java/com/tduck/cloud/account/vo/LoginUserVO.java → tduck-common/src/main/java/com/tduck/cloud/common/vo/LoginUserVO.java

@ -1,4 +1,4 @@
package com.tduck.cloud.account.vo;
package com.tduck.cloud.common.vo;
import lombok.AllArgsConstructor;
import lombok.Data;

5
tduck-project/src/main/java/com/tduck/cloud/project/entity/UserProjectResultEntity.java

@ -87,6 +87,11 @@ public class UserProjectResultEntity extends BaseEntity<UserProjectResultEntity>
*/
private Long completeTime;
/**
* 用户Id
*/
private String userId;
/**
* 微信openID
*/

11
tduck-project/src/main/java/com/tduck/cloud/project/entity/UserProjectSettingEntity.java

@ -56,10 +56,15 @@ public class UserProjectSettingEntity extends BaseEntity<UserProjectSettingEntit
@TableField("is_wx_write_once")
private Boolean wxWriteOnce;
/**
* 每人只能填写一次
* 每人只能填写一次 ip 判断
*/
@TableField("is_everyone_write_once")
private Boolean everyoneWriteOnce;
@TableField("is_everyone_write_once_ip")
private Boolean everyoneWriteOnceByIp;
/**
* 每人只能填写一次 userId 判断
*/
@TableField("is_everyone_write_once_uid")
private Boolean everyoneWriteOnceByUId;
/**
* 每人每天只能填写一次
*/

19
tduck-project/src/main/java/com/tduck/cloud/project/service/impl/UserProjectSettingServiceImpl.java

@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.tduck.cloud.common.constant.CommonConstants;
import com.tduck.cloud.common.entity.BaseEntity;
import com.tduck.cloud.common.util.LoginUserUtil;
import com.tduck.cloud.common.util.Result;
import com.tduck.cloud.project.entity.UserProjectEntity;
import com.tduck.cloud.project.entity.UserProjectResultEntity;
@ -69,9 +70,10 @@ public class UserProjectSettingServiceImpl extends ServiceImpl<UserProjectSettin
}
}
//每个人只需填写一次 根据IP判断
Boolean everyoneWriteOnce = setting.getEveryoneWriteOnce();
Boolean everyoneWriteOnceByIp = setting.getEveryoneWriteOnceByIp();
Boolean everyoneWriteOnceByUid = setting.getEveryoneWriteOnceByUId();
Boolean everyoneDayWriteOnce = setting.getEveryoneDayWriteOnce();
if (everyoneWriteOnce || everyoneDayWriteOnce) {
if (everyoneWriteOnceByIp || everyoneDayWriteOnce) {
LambdaQueryWrapper<UserProjectResultEntity> wrapper = Wrappers.<UserProjectResultEntity>lambdaQuery()
.eq(UserProjectResultEntity::getProjectKey, projectKey)
.eq(UserProjectResultEntity::getSubmitRequestIp, requestIp);
@ -84,6 +86,19 @@ public class UserProjectSettingServiceImpl extends ServiceImpl<UserProjectSettin
return Result.success(null, setting.getWriteOncePromptText());
}
}
if (everyoneWriteOnceByUid) {
LambdaQueryWrapper<UserProjectResultEntity> wrapper = Wrappers.<UserProjectResultEntity>lambdaQuery()
.eq(UserProjectResultEntity::getProjectKey, projectKey)
.eq(UserProjectResultEntity::getUserId, LoginUserUtil.get().getUserId());
if (everyoneDayWriteOnce) {
wrapper.apply(StrUtil.format("date_format({},'%Y-%m-%d') = '{}'",
StrUtil.toUnderlineCase(BaseEntity.Fields.createTime), DateUtil.today()));
}
int writeCount = userProjectResultService.count(wrapper);
if (CommonConstants.ConstantNumber.ONE <= writeCount) {
return Result.success(null, setting.getWriteOncePromptText());
}
}
//每个微信仅填写一次
if (setting.getWxWriteOnce() && StrUtil.isNotEmpty(wxOpenId)) {
LambdaQueryWrapper<UserProjectResultEntity> wrapper = Wrappers.<UserProjectResultEntity>lambdaQuery()

Loading…
Cancel
Save