Browse Source

居民端签到

feature/user_house_import
zhangyongzhangyong 4 years ago
parent
commit
b39ba8bf33
  1. 16
      epdc-cloud-api/src/main/java/com/elink/esua/epdc/controller/ApiAppUserController.java
  2. 44
      epdc-cloud-api/src/main/java/com/elink/esua/epdc/feign/UserFeignClient.java
  3. 26
      epdc-cloud-api/src/main/java/com/elink/esua/epdc/feign/fallback/UserFeignClientFallback.java
  4. 9
      epdc-cloud-api/src/main/java/com/elink/esua/epdc/service/AppUserService.java
  5. 61
      epdc-cloud-api/src/main/java/com/elink/esua/epdc/service/impl/AppUserServiceImpl.java

16
epdc-cloud-api/src/main/java/com/elink/esua/epdc/controller/ApiAppUserController.java

@ -389,4 +389,20 @@ public class ApiAppUserController {
public Result<EpdcAppIdentityDetailResultDTO> getDentityDetail(@LoginUser TokenDto userDetail){ public Result<EpdcAppIdentityDetailResultDTO> getDentityDetail(@LoginUser TokenDto userDetail){
return appUserService.getDentityDetail(userDetail); return appUserService.getDentityDetail(userDetail);
} }
/**
* 用户签到
*
* @param userDetail
* @return com.elink.esua.epdc.commons.tools.utils.Result
* @Author zhangyong
* @Date 10:26 2022-01-25
**/
@GetMapping("user/sign")
public Result userSign(@LoginUser TokenDto userDetail){
if(userDetail==null){
return new Result().error("用户未登录");
}
return appUserService.userSign(userDetail);
}
} }

44
epdc-cloud-api/src/main/java/com/elink/esua/epdc/feign/UserFeignClient.java

@ -3,11 +3,7 @@ package com.elink.esua.epdc.feign;
import com.elink.esua.epdc.common.token.dto.TokenDto; import com.elink.esua.epdc.common.token.dto.TokenDto;
import com.elink.esua.epdc.commons.tools.constant.ServiceConstant; import com.elink.esua.epdc.commons.tools.constant.ServiceConstant;
import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.CachingUserInfoDTO; import com.elink.esua.epdc.dto.*;
import com.elink.esua.epdc.dto.UserDTO;
import com.elink.esua.epdc.dto.UserGridInvitationCodeDTO;
import com.elink.esua.epdc.dto.UserGridRelationDTO;
import com.elink.esua.epdc.dto.UserWxFormIdDTO;
import com.elink.esua.epdc.dto.epdc.form.*; import com.elink.esua.epdc.dto.epdc.form.*;
import com.elink.esua.epdc.dto.epdc.result.*; import com.elink.esua.epdc.dto.epdc.result.*;
import com.elink.esua.epdc.feign.fallback.UserFeignClientFallback; import com.elink.esua.epdc.feign.fallback.UserFeignClientFallback;
@ -458,5 +454,43 @@ public interface UserFeignClient {
*/ */
@GetMapping(value = "app-user/partyMember/dentityDetail",consumes = MediaType.APPLICATION_JSON_VALUE) @GetMapping(value = "app-user/partyMember/dentityDetail",consumes = MediaType.APPLICATION_JSON_VALUE)
Result<EpdcAppIdentityDetailResultDTO> getDentityDetail(EpdcAppIdentityDetailFormDTO userDetail); Result<EpdcAppIdentityDetailResultDTO> getDentityDetail(EpdcAppIdentityDetailFormDTO userDetail);
/**
* @Description 根据用户ID获取用户签到信息
* @Author zy
* @Date 2020/7/21
* @Param [userId]
* @return com.elink.esua.epdc.commons.tools.utils.Result<com.elink.esua.epdc.dto.UserSignDTO>
**/
@GetMapping(value = "app-user/usersign/getUserSignInfoByUserId/{userId}", consumes = MediaType.APPLICATION_JSON_VALUE)
Result<UserSignDTO> getUserSignInfoByUserId(@PathVariable("userId") String userId);
/**
* @Description 更新或新增签到时间和连续签到次数
* @Author zy
* @Date 2020/7/21
* @Param [userSignDTO]
* @return com.elink.esua.epdc.commons.tools.utils.Result
**/
@GetMapping(value = "app-user/usersign/saveOrUpdateSignById", consumes = MediaType.APPLICATION_JSON_VALUE)
Result saveOrUpdateSignById(UserSignDTO userSignDTO);
/**
* @Description 签到加积分操作
* @Author zy
* @Date 2020/7/21
* @Param [userSignDTO]
**/
@GetMapping(value = "app-user/usersign/addSignPoints", consumes = MediaType.APPLICATION_JSON_VALUE)
Result addSignPoints(UserSignDTO userSignDTO);
/**
* @Description 连续签到加积分
* @Author zy
* @Date 2020/7/21
* @Param [userSignDTO]
**/
@GetMapping(value = "app-user/usersign/addConsequentSignPoints", consumes = MediaType.APPLICATION_JSON_VALUE)
Result addConsequentSignPoints(UserSignDTO userSignDTO);
} }

26
epdc-cloud-api/src/main/java/com/elink/esua/epdc/feign/fallback/UserFeignClientFallback.java

@ -4,11 +4,7 @@ import com.elink.esua.epdc.common.token.dto.TokenDto;
import com.elink.esua.epdc.commons.tools.constant.ServiceConstant; import com.elink.esua.epdc.commons.tools.constant.ServiceConstant;
import com.elink.esua.epdc.commons.tools.utils.ModuleUtils; import com.elink.esua.epdc.commons.tools.utils.ModuleUtils;
import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.CachingUserInfoDTO; import com.elink.esua.epdc.dto.*;
import com.elink.esua.epdc.dto.UserDTO;
import com.elink.esua.epdc.dto.UserGridInvitationCodeDTO;
import com.elink.esua.epdc.dto.UserGridRelationDTO;
import com.elink.esua.epdc.dto.UserWxFormIdDTO;
import com.elink.esua.epdc.dto.epdc.form.*; import com.elink.esua.epdc.dto.epdc.form.*;
import com.elink.esua.epdc.dto.epdc.result.*; import com.elink.esua.epdc.dto.epdc.result.*;
import com.elink.esua.epdc.feign.UserFeignClient; import com.elink.esua.epdc.feign.UserFeignClient;
@ -223,4 +219,24 @@ public class UserFeignClientFallback implements UserFeignClient {
public Result<EpdcAppIdentityDetailResultDTO> getDentityDetail(EpdcAppIdentityDetailFormDTO userDetail) { public Result<EpdcAppIdentityDetailResultDTO> getDentityDetail(EpdcAppIdentityDetailFormDTO userDetail) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER,"getDentityDetail",userDetail); return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER,"getDentityDetail",userDetail);
} }
@Override
public Result<UserSignDTO> getUserSignInfoByUserId(String userId) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "getUserSignInfoByUserId", userId);
}
@Override
public Result saveOrUpdateSignById(UserSignDTO userSignDTO) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "updateSignById", userSignDTO);
}
@Override
public Result addSignPoints(UserSignDTO userSignDTO) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "addSignPoints", userSignDTO);
}
@Override
public Result addConsequentSignPoints(UserSignDTO userSignDTO) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "addConsequentSignPoints", userSignDTO);
}
} }

9
epdc-cloud-api/src/main/java/com/elink/esua/epdc/service/AppUserService.java

@ -322,4 +322,13 @@ public interface AppUserService {
*/ */
Result<EpdcAppIdentityDetailResultDTO> getDentityDetail(TokenDto userDetail); Result<EpdcAppIdentityDetailResultDTO> getDentityDetail(TokenDto userDetail);
/**
* 用户签到
*
* @param userDetail
* @return com.elink.esua.epdc.commons.tools.utils.Result
* @Author zhangyong
* @Date 10:27 2022-01-25
**/
Result userSign(TokenDto userDetail);
} }

61
epdc-cloud-api/src/main/java/com/elink/esua/epdc/service/impl/AppUserServiceImpl.java

@ -5,15 +5,13 @@ import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo; import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo;
import cn.binarywang.wx.miniapp.bean.WxMaUserInfo; import cn.binarywang.wx.miniapp.bean.WxMaUserInfo;
import cn.binarywang.wx.miniapp.util.crypt.WxMaCryptUtils; import cn.binarywang.wx.miniapp.util.crypt.WxMaCryptUtils;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.elink.esua.epdc.async.GroupTask; import com.elink.esua.epdc.async.GroupTask;
import com.elink.esua.epdc.common.token.dto.TokenDto; import com.elink.esua.epdc.common.token.dto.TokenDto;
import com.elink.esua.epdc.common.token.util.CpUserDetailRedis; import com.elink.esua.epdc.common.token.util.CpUserDetailRedis;
import com.elink.esua.epdc.commons.tools.constant.NumConstant; import com.elink.esua.epdc.commons.tools.constant.NumConstant;
import com.elink.esua.epdc.commons.tools.enums.UserAuthTypeEnum; import com.elink.esua.epdc.commons.tools.enums.*;
import com.elink.esua.epdc.commons.tools.enums.UserSexEnum;
import com.elink.esua.epdc.commons.tools.enums.UserTagEnum;
import com.elink.esua.epdc.commons.tools.enums.YesOrNoEnum;
import com.elink.esua.epdc.commons.tools.exception.RenException; import com.elink.esua.epdc.commons.tools.exception.RenException;
import com.elink.esua.epdc.commons.tools.redis.RedisUtils; import com.elink.esua.epdc.commons.tools.redis.RedisUtils;
import com.elink.esua.epdc.commons.tools.utils.*; import com.elink.esua.epdc.commons.tools.utils.*;
@ -38,6 +36,8 @@ import com.elink.esua.epdc.enums.AppUserStatesEnum;
import com.elink.esua.epdc.feign.*; import com.elink.esua.epdc.feign.*;
import com.elink.esua.epdc.jwt.JwtTokenProperties; import com.elink.esua.epdc.jwt.JwtTokenProperties;
import com.elink.esua.epdc.jwt.JwtTokenUtils; import com.elink.esua.epdc.jwt.JwtTokenUtils;
import com.elink.esua.epdc.modules.points.feign.PointsFeignClient;
import com.elink.esua.epdc.pointcommons.tools.dto.PointsRuleResultDTO;
import com.elink.esua.epdc.redis.AppUserRedis; import com.elink.esua.epdc.redis.AppUserRedis;
import com.elink.esua.epdc.service.AppUserService; import com.elink.esua.epdc.service.AppUserService;
import com.elink.esua.epdc.utils.UserTagUtils; import com.elink.esua.epdc.utils.UserTagUtils;
@ -106,6 +106,9 @@ public class AppUserServiceImpl implements AppUserService {
@Autowired @Autowired
private GroupFeignClient groupFeignClient; private GroupFeignClient groupFeignClient;
@Autowired
private PointsFeignClient pointsFeignClient;
@Autowired @Autowired
private AppVolunteerRankFeignClient appVolunteerRankFeignClient; private AppVolunteerRankFeignClient appVolunteerRankFeignClient;
@ -1427,4 +1430,54 @@ public class AppUserServiceImpl implements AppUserService {
return userFeignClient.getDentityDetail(identityDetailFormDTO); return userFeignClient.getDentityDetail(identityDetailFormDTO);
} }
@Override
public Result userSign(TokenDto userDetail) {
//获取用户签到信息
Result<UserSignDTO> userSignInfoResult = userFeignClient.getUserSignInfoByUserId(userDetail.getUserId());
if(!userSignInfoResult.success()){
return new Result().error("获取用户签到信息出错!");
}
UserSignDTO userSignDTO;
//不是空则进行签到信息校验
if(userSignInfoResult.getData() != null){
userSignDTO = userSignInfoResult.getData();
if(DateUtils.format(new Date()).equals(DateUtils.format(userSignDTO.getLastSignTime()))){
return new Result().error("用户今天已签到!");
}
userSignDTO.setConsequentSignDays(userSignDTO.getConsequentSignDays() + NumConstant.ONE);
//判断签到日期是否是前天或者更前 若是前天或者更前则连续签到天数修改为1
if(DateUtil.betweenDay(userSignDTO.getLastSignTime(), new Date(),true) >= NumConstant.TWO){
userSignDTO.setConsequentSignDays(NumConstant.ONE);
}
userSignDTO.setLastSignTime(new Date());
//更新签到信息
Result userSignDTOResult = userFeignClient.saveOrUpdateSignById(userSignDTO);
if(!userSignDTOResult.success()){
return new Result().error("更新签到信息出错!");
}
}else{
userSignDTO = new UserSignDTO();
userSignDTO.setUserId(userDetail.getUserId());
userSignDTO.setConsequentSignDays(NumConstant.ONE);
userSignDTO.setLastSignTime(new Date());
Result userSignDTOResult = userFeignClient.saveOrUpdateSignById(userSignDTO);
if(!userSignDTOResult.success() || userSignDTOResult.getData()==null){
return new Result().error("新增签到信息出错!");
}
userSignDTO.setId(userSignDTOResult.getData()+"");
}
//加积分操作
userFeignClient.addSignPoints(userSignDTO);
//连续签到加积分操作
Result<PointsRuleResultDTO> pointsRuleByBehaviorCode = pointsFeignClient.getPointsRuleByBehaviorCode(BehaviorEnum.USER_CONSEQUENT_SIGN.getValue());
if(!pointsRuleByBehaviorCode.success() || pointsRuleByBehaviorCode.getData()==null){
return new Result().error("获取连续签到规则信息出错!");
}
PointsRuleResultDTO pointsRuleResultDTO = pointsRuleByBehaviorCode.getData();
//当前连续签到天数如果等于附加值 则加连续签到积分
if(userSignDTO.getConsequentSignDays() % Integer.valueOf(pointsRuleResultDTO.getAddedVal()) == NumConstant.ZERO){
userFeignClient.addConsequentSignPoints(userSignDTO);
}
return new Result().ok("您已连续签到"+userSignDTO.getConsequentSignDays()+"天,继续努力吧");
}
} }

Loading…
Cancel
Save