From fe299b862a43577ad5bc403d26f069c08b28ba65 Mon Sep 17 00:00:00 2001 From: songyunpeng Date: Fri, 24 Jul 2020 09:08:58 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7=E7=AD=BE=E5=88=B0+=E5=BF=97?= =?UTF-8?q?=E6=84=BF=E8=80=85=E6=B3=A8=E5=86=8C+=E9=80=9A=E7=9F=A5?= =?UTF-8?q?=E6=B5=8F=E8=A7=88=E7=A7=AF=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../commons/tools/enums/BehaviorEnum.java | 20 ++- .../epdc/controller/ApiAppUserController.java | 15 ++ .../epdc/controller/ApiNewsController.java | 3 +- .../controller/v2/ApiAppUserV2Controller.java | 1 + .../esua/epdc/feign/PointsFeignClient.java | 12 ++ .../esua/epdc/feign/UserFeignClient.java | 40 +++++ .../fallback/PointsFeignClientFallback.java | 6 + .../fallback/UserFeignClientFallback.java | 20 +++ .../esua/epdc/service/AppUserService.java | 8 + .../epdc/service/impl/AppUserServiceImpl.java | 70 ++++++++- .../controller/EpdcAppPointsController.java | 17 +++ .../esua/epdc/mq/PointsModifyConsumer.java | 2 +- .../com/elink/esua/epdc/dto/UserSignDTO.java | 87 +++++++++++ .../epdc/result/EpdcUserInfoResultDTO.java | 7 + .../epdc/controller/UserSignController.java | 140 ++++++++++++++++++ .../com/elink/esua/epdc/dao/UserSignDao.java | 41 +++++ .../esua/epdc/entity/UserSignEntity.java | 56 +++++++ .../elink/esua/epdc/excel/UserSignExcel.java | 65 ++++++++ .../elink/esua/epdc/redis/UserSignRedis.java | 47 ++++++ .../esua/epdc/service/UserSignService.java | 112 ++++++++++++++ .../service/impl/UserSignServiceImpl.java | 122 +++++++++++++++ .../src/main/resources/mapper/UserDao.xml | 4 +- .../src/main/resources/mapper/UserSignDao.xml | 23 +++ 23 files changed, 907 insertions(+), 11 deletions(-) create mode 100644 esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/UserSignDTO.java create mode 100644 esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/UserSignController.java create mode 100644 esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/dao/UserSignDao.java create mode 100644 esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/entity/UserSignEntity.java create mode 100644 esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/excel/UserSignExcel.java create mode 100644 esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/redis/UserSignRedis.java create mode 100644 esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/UserSignService.java create mode 100644 esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/UserSignServiceImpl.java create mode 100644 esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/resources/mapper/UserSignDao.xml diff --git a/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/enums/BehaviorEnum.java b/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/enums/BehaviorEnum.java index d48d468b..754fa2fa 100644 --- a/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/enums/BehaviorEnum.java +++ b/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/enums/BehaviorEnum.java @@ -268,7 +268,25 @@ public enum BehaviorEnum { /** * 活动积分 */ - JOIN_ACT("join_act"); + JOIN_ACT("join_act"), + + /** + * 签到 + */ + USER_SIGN("user_sign"), + /** + * 连续签到 + */ + USER_CONSEQUENT_SIGN("user_consequent_sign"), + /** + * 通知浏览 + */ + NOTICE_BROWSE("notice_browse"), + /** + * 志愿者完善信息 + */ + VOLUNTEER_PERFECT_INFO("volunteer_perfect_info") + ; private String value; diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiAppUserController.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiAppUserController.java index 36b2c6ae..8e66a4e6 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiAppUserController.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiAppUserController.java @@ -369,4 +369,19 @@ public class ApiAppUserController { ValidatorUtils.validateEntity(formDTO); return appUserService.listUserGradesRanking(userDetail, formDTO); } + + /** + * @Description 用户签到 + * @Author songyunpeng + * @Date 2020/7/21 + * @Param [userDetail] + * @return com.elink.esua.epdc.commons.tools.utils.Result + **/ + @GetMapping("user/sign") + public Result userSign(@LoginUser TokenDto userDetail){ + if(userDetail==null){ + return new Result().error("用户未登录"); + } + return appUserService.userSign(userDetail); + } } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiNewsController.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiNewsController.java index ac6a32b1..beb352f1 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiNewsController.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiNewsController.java @@ -51,7 +51,8 @@ public class ApiNewsController { * @date 2019/9/6 14:58 */ @GetMapping("notice/detail/{noticeId}") - public Result getNoticeDetail(@PathVariable("noticeId") String noticeId) { + @RecordUserBehavior(behavior = BehaviorEnum.NOTICE_BROWSE,referenceId = "#{noticeId}",userId = "#{userDetail.getUserId}") + public Result getNoticeDetail(@LoginUser TokenDto userDetail,@PathVariable("noticeId") String noticeId) { return newsService.getNoticeDetail(noticeId); } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/v2/ApiAppUserV2Controller.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/v2/ApiAppUserV2Controller.java index dc4cce65..fdca5d7b 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/v2/ApiAppUserV2Controller.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/v2/ApiAppUserV2Controller.java @@ -102,6 +102,7 @@ public class ApiAppUserV2Controller { * @Date 09:49 2020-05-26 **/ @PostMapping("volunteer/" + Constant.VERSION_CONTROL + "/authenticate") + @RecordUserBehavior(behavior = BehaviorEnum.VOLUNTEER_PERFECT_INFO,referenceId = "#{tokenDto.getUserId}",userId = "#{tokenDto.getUserId}") public Result volunteerAuthenticate(@LoginUser TokenDto tokenDto, @RequestBody EpdcCompleteVolunteerInfoV2FormDTO formDto) { ValidatorUtils.validateEntity(formDto); return appUserService.volunteerV2Authenticate(tokenDto, formDto); diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/PointsFeignClient.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/PointsFeignClient.java index 9265e366..8d990cf2 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/PointsFeignClient.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/PointsFeignClient.java @@ -7,9 +7,11 @@ import com.elink.esua.epdc.dto.form.EpdcAppPointsRecordFormDTO; import com.elink.esua.epdc.dto.result.EpdcAppPointsRankingResultDTO; import com.elink.esua.epdc.dto.result.EpdcAppPointsRecordResultDTO; import com.elink.esua.epdc.feign.fallback.PointsFeignClientFallback; +import com.elink.esua.epdc.pointcommons.tools.dto.PointsRuleResultDTO; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; import java.util.List; @@ -48,4 +50,14 @@ public interface PointsFeignClient { */ @GetMapping(value = "points/epdc-app/points/pointsRanking/list", consumes = MediaType.APPLICATION_JSON_VALUE) Result listPointsRankingFeignClient(EpdcAppPointsRankingFormDTO formDto); + + /** + * @Description 根据动作编码获取积分规则 + * @Author songyunpeng + * @Date 2020/7/21 + * @Param [behaviorCode] + * @return com.elink.esua.epdc.commons.tools.utils.Result + **/ + @GetMapping(value = "points/epdc-app/points/getPointsRuleByBehaviorCode/{behaviorCode}", consumes = MediaType.APPLICATION_JSON_VALUE) + Result getPointsRuleByBehaviorCode (@PathVariable("behaviorCode") String behaviorCode); } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/UserFeignClient.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/UserFeignClient.java index a250467a..74556cc6 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/UserFeignClient.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/UserFeignClient.java @@ -442,4 +442,44 @@ public interface UserFeignClient { **/ @GetMapping(value = "app-user/epdc-app/user/gradeRanking/list", consumes = MediaType.APPLICATION_JSON_VALUE) Result selectListUserGradesRanking(EpdcAppUserGradeRankingFormDTO formDTO); + + + /** + * @Description 根据用户ID获取用户签到信息 + * @Author songyunpeng + * @Date 2020/7/21 + * @Param [userId] + * @return com.elink.esua.epdc.commons.tools.utils.Result + **/ + @GetMapping(value = "app-user/usersign/getUserSignInfoByUserId/{userId}", consumes = MediaType.APPLICATION_JSON_VALUE) + Result getUserSignInfoByUserId(@PathVariable("userId") String userId); + /** + * @Description 更新或新增签到时间和连续签到次数 + * @Author songyunpeng + * @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 songyunpeng + * @Date 2020/7/21 + * @Param [userSignDTO] + **/ + @GetMapping(value = "app-user/usersign/addSignPoints", consumes = MediaType.APPLICATION_JSON_VALUE) + Result addSignPoints(UserSignDTO userSignDTO); + + + /** + * @Description 连续签到加积分 + * @Author songyunpeng + * @Date 2020/7/21 + * @Param [userSignDTO] + **/ + @GetMapping(value = "app-user/usersign/addConsequentSignPoints", consumes = MediaType.APPLICATION_JSON_VALUE) + Result addConsequentSignPoints(UserSignDTO userSignDTO); + } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/PointsFeignClientFallback.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/PointsFeignClientFallback.java index d76807ed..db4c39eb 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/PointsFeignClientFallback.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/PointsFeignClientFallback.java @@ -8,6 +8,7 @@ import com.elink.esua.epdc.dto.form.EpdcAppPointsRecordFormDTO; import com.elink.esua.epdc.dto.result.EpdcAppPointsRankingResultDTO; import com.elink.esua.epdc.dto.result.EpdcAppPointsRecordResultDTO; import com.elink.esua.epdc.feign.PointsFeignClient; +import com.elink.esua.epdc.pointcommons.tools.dto.PointsRuleResultDTO; import org.springframework.stereotype.Component; import java.util.List; @@ -29,4 +30,9 @@ public class PointsFeignClientFallback implements PointsFeignClient { public Result listPointsRankingFeignClient(EpdcAppPointsRankingFormDTO formDto) { return ModuleUtils.feignConError(ServiceConstant.EPDC_POINTS_SERVER, "listPointsRankingFeignClient", formDto); } + + @Override + public Result getPointsRuleByBehaviorCode(String behaviorCode) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_POINTS_SERVER, "getPointsRuleByBehaviorCode", behaviorCode); + } } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/UserFeignClientFallback.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/UserFeignClientFallback.java index bc81a0ec..925d171c 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/UserFeignClientFallback.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/UserFeignClientFallback.java @@ -212,4 +212,24 @@ public class UserFeignClientFallback implements UserFeignClient { public Result selectListUserGradesRanking(EpdcAppUserGradeRankingFormDTO formDTO) { return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "selectListUserGradesRanking", "formDTO"); } + + @Override + public Result 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); + } } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AppUserService.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AppUserService.java index 88be1c36..9d46d8f5 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AppUserService.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AppUserService.java @@ -310,4 +310,12 @@ public interface AppUserService { * @Date 10:59 2020-06-24 **/ Result listUserGradesRanking(TokenDto userDetail, EpdcAppUserGradeRankingFormDTO formDTO); + /** + * @Description 用户签到 + * @Author songyunpeng + * @Date 2020/7/21 + * @Param [userDetail] + * @return com.elink.esua.epdc.commons.tools.utils.Result + **/ + Result userSign(TokenDto userDetail); } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AppUserServiceImpl.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AppUserServiceImpl.java index fe9d8dc0..e3badb91 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AppUserServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AppUserServiceImpl.java @@ -5,16 +5,15 @@ import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo; import cn.binarywang.wx.miniapp.bean.WxMaUserInfo; import cn.binarywang.wx.miniapp.util.crypt.WxMaCryptUtils; +import cn.hutool.core.date.DateUnit; +import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONObject; import com.elink.esua.epdc.async.GroupTask; import com.elink.esua.epdc.async.PartyGroupTask; import com.elink.esua.epdc.common.token.dto.TokenDto; 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.enums.UserAuthTypeEnum; -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.enums.*; 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.utils.*; @@ -22,7 +21,6 @@ import com.elink.esua.epdc.dto.*; import com.elink.esua.epdc.dto.enums.GroupUserStateEnum; import com.elink.esua.epdc.dto.epdc.EpdcCompleteAppUserDTO; import com.elink.esua.epdc.dto.epdc.EpdcGridLeaderRegisterDTO; -import com.elink.esua.epdc.dto.epdc.form.EpdcGridLeaderRegisterFormDTO; import com.elink.esua.epdc.dto.epdc.GridLeaderRegisterDTO; import com.elink.esua.epdc.dto.epdc.form.*; import com.elink.esua.epdc.dto.epdc.form.v2.EpdcCompleteVolunteerInfoV2FormDTO; @@ -31,13 +29,17 @@ import com.elink.esua.epdc.dto.form.*; import com.elink.esua.epdc.dto.form.v2.EpdcCompleteUserInfoFormV2DTO; import com.elink.esua.epdc.dto.group.form.GroupUserFormDTO; import com.elink.esua.epdc.dto.group.form.GroupUserPartyMemberFormDTO; -import com.elink.esua.epdc.dto.result.EpdcAppRegisterCallbackDTO; import com.elink.esua.epdc.dto.result.EpdcAppAuthorizationDTO; +import com.elink.esua.epdc.dto.result.EpdcAppRegisterCallbackDTO; import com.elink.esua.epdc.dto.result.EpdcCompleteUserInfoDTO; -import com.elink.esua.epdc.enums.*; +import com.elink.esua.epdc.enums.AppUserAuditStateEnum; +import com.elink.esua.epdc.enums.AppUserRegisterSourceEnum; +import com.elink.esua.epdc.enums.AppUserRegisterWayEnum; +import com.elink.esua.epdc.enums.AppUserStatesEnum; import com.elink.esua.epdc.feign.*; import com.elink.esua.epdc.jwt.JwtTokenProperties; import com.elink.esua.epdc.jwt.JwtTokenUtils; +import com.elink.esua.epdc.pointcommons.tools.dto.PointsRuleResultDTO; import com.elink.esua.epdc.redis.AppUserRedis; import com.elink.esua.epdc.service.AppUserService; import com.elink.esua.epdc.utils.UserTagUtils; @@ -114,6 +116,9 @@ public class AppUserServiceImpl implements AppUserService { @Autowired private PartyGroupFeignClient partyGroupFeignClient; + @Autowired + private PointsFeignClient pointsFeignClient; + //private static String USER_FACE = "https://epdc.elinkchina.com.cn/esua-epdc/static/default/default_user_face.png"; private static String USER_FACE = "https://epdc-shibei.elinkservice.cn/epdcFile/M00/00/00/CgUipV3wgl6Afm4cAAAa8QfEb00266_big.png"; @@ -1528,4 +1533,55 @@ public class AppUserServiceImpl implements AppUserService { return userFeignClient.selectListUserGradesRanking(formDTO); } + @Override + public Result userSign(TokenDto userDetail) { + //获取用户签到信息 + Result userSignInfoResult = userFeignClient.getUserSignInfoByUserId(userDetail.getUserId()); + if(!userSignInfoResult.success()){ + return new Result().error("获取用户签到信息出错!"); + } + UserSignDTO userSignDTO = new 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()+1); + //判断签到日期是否是前天或者更前 若是前天或者更前则连续签到天数修改为1 + if(DateUtil.between(userSignDTO.getLastSignTime(), new Date(), DateUnit.DAY) >= 2){ + userSignDTO.setConsequentSignDays(1); + } + 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(1); + 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 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()) == 0){ + userFeignClient.addConsequentSignPoints(userSignDTO); + } + return new Result().ok("您已连续签到"+userSignDTO.getConsequentSignDays()+"天"); + } + } diff --git a/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/controller/EpdcAppPointsController.java b/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/controller/EpdcAppPointsController.java index 0b06bc64..c83694d0 100644 --- a/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/controller/EpdcAppPointsController.java +++ b/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/controller/EpdcAppPointsController.java @@ -6,7 +6,9 @@ import com.elink.esua.epdc.dto.form.EpdcAppPointsRankingFormDTO; import com.elink.esua.epdc.dto.form.EpdcAppPointsRecordFormDTO; import com.elink.esua.epdc.dto.result.EpdcAppPointsRankingResultDTO; import com.elink.esua.epdc.dto.result.EpdcAppPointsRecordResultDTO; +import com.elink.esua.epdc.dto.result.PointsRuleResultDTO; import com.elink.esua.epdc.service.PointsLogsService; +import com.elink.esua.epdc.service.PointsRuleService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -24,6 +26,8 @@ public class EpdcAppPointsController { @Autowired private PointsLogsService pointsLogsService; + @Autowired + private PointsRuleService pointsRuleService; /** * @Description: 当前登录用户 积分记录接口 @@ -50,4 +54,17 @@ public class EpdcAppPointsController { EpdcAppPointsRankingResultDTO list = pointsLogsService.listPointsRanking(formDto); return new Result().ok(list); } + + /** + * @Description 根据动作编码获取积分规则 + * @Author songyunpeng + * @Date 2020/7/21 + * @Param [behaviorCode] + * @return com.elink.esua.epdc.commons.tools.utils.Result + **/ + @GetMapping("getPointsRuleByBehaviorCode/{behaviorCode}") + public Result getPointsRuleByBehaviorCode (@PathVariable("behaviorCode") String behaviorCode){ + PointsRuleResultDTO pointsRuleByBehaviorCode = pointsRuleService.getPointsRuleByBehaviorCode(behaviorCode); + return new Result().ok(pointsRuleByBehaviorCode); + } } diff --git a/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/mq/PointsModifyConsumer.java b/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/mq/PointsModifyConsumer.java index f0ad4233..11c1715e 100644 --- a/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/mq/PointsModifyConsumer.java +++ b/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/mq/PointsModifyConsumer.java @@ -110,7 +110,7 @@ public class PointsModifyConsumer implements RocketMQListener { pointsLogsFormDTO.setReferenceId(dto.getReferenceId()); PointsRuleResultDTO pointsRuleResultDTO = pointsRuleService.getPointsRuleByBehaviorCode(dto.getBehavior()); if (pointsRuleResultDTO == null) { - return "获取积分负责失败"; + return "获取积分规则失败"; } if(pointsRuleResultDTO.getUpperLimitVal() == 0){ return "积分限值为0,无法加分"; diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/UserSignDTO.java b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/UserSignDTO.java new file mode 100644 index 00000000..10f166ef --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/UserSignDTO.java @@ -0,0 +1,87 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.elink.esua.epdc.dto; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +/** + * 用户签到表 + * + * @author qu qu@elink-cn.com + * @since v1.0.0 2020-07-21 + */ +@Data +public class UserSignDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + private String id; + + /** + * 用户ID + */ + private String userId; + + /** + * 连续签到天数 + */ + private Integer consequentSignDays; + + /** + * 最近签到时间 + */ + private Date lastSignTime; + + /** + * 删除标记 + */ + private String delFlag; + + /** + * 乐观锁 + */ + private Integer revision; + + /** + * 创建人 + */ + private String createdBy; + + /** + * 创建时间 + */ + private Date createdTime; + + /** + * 更新人 + */ + private String updatedBy; + + /** + * 更新时间 + */ + private Date updatedTime; + +} \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/EpdcUserInfoResultDTO.java b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/EpdcUserInfoResultDTO.java index bb1f0937..fd4011bd 100644 --- a/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/EpdcUserInfoResultDTO.java +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/EpdcUserInfoResultDTO.java @@ -30,4 +30,11 @@ public class EpdcUserInfoResultDTO implements Serializable { * 用户积分等级 */ private Integer grade; + + /** + * 用户今天是否签到 + */ + private Integer isSignUp; + + } diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/UserSignController.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/UserSignController.java new file mode 100644 index 00000000..65dfafcd --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/UserSignController.java @@ -0,0 +1,140 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.elink.esua.epdc.controller; + +import com.elink.esua.epdc.commons.tools.enums.BehaviorEnum; +import com.elink.esua.epdc.commons.tools.page.PageData; +import com.elink.esua.epdc.commons.tools.utils.ExcelUtils; +import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.commons.tools.validator.AssertUtils; +import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils; +import com.elink.esua.epdc.commons.tools.validator.group.AddGroup; +import com.elink.esua.epdc.commons.tools.validator.group.DefaultGroup; +import com.elink.esua.epdc.commons.tools.validator.group.UpdateGroup; +import com.elink.esua.epdc.dto.UserSignDTO; +import com.elink.esua.epdc.excel.UserSignExcel; +import com.elink.esua.epdc.pointcommons.tools.annotation.RecordUserBehavior; +import com.elink.esua.epdc.service.UserSignService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; +import java.util.Map; + + +/** + * 用户签到表 + * + * @author qu qu@elink-cn.com + * @since v1.0.0 2020-07-21 + */ +@RestController +@RequestMapping("usersign") +public class UserSignController { + + @Autowired + private UserSignService userSignService; + + @GetMapping("page") + public Result> page(@RequestParam Map params){ + PageData page = userSignService.page(params); + return new Result>().ok(page); + } + + @GetMapping("{id}") + public Result get(@PathVariable("id") String id){ + UserSignDTO data = userSignService.get(id); + return new Result().ok(data); + } + + @PostMapping + public Result save(@RequestBody UserSignDTO dto){ + //效验数据 + ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class); + userSignService.save(dto); + return new Result(); + } + + @PutMapping + public Result update(@RequestBody UserSignDTO dto){ + //效验数据 + ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class); + userSignService.update(dto); + return new Result(); + } + + @DeleteMapping + public Result delete(@RequestBody String[] ids){ + //效验数据 + AssertUtils.isArrayEmpty(ids, "id"); + userSignService.delete(ids); + return new Result(); + } + + @GetMapping("export") + public void export(@RequestParam Map params, HttpServletResponse response) throws Exception { + List list = userSignService.list(params); + ExcelUtils.exportExcelToTarget(response, null, list, UserSignExcel.class); + } + /** + * @Description 根据用户ID获取用户签到信息 + * @Author songyunpeng + * @Date 2020/7/21 + * @Param [userId] + * @return com.elink.esua.epdc.commons.tools.utils.Result + **/ + @GetMapping("getUserSignInfoByUserId/{userId}") + public Result getUserSignInfoByUserId(@PathVariable("userId") String userId){ + return new Result().ok(userSignService.getUserSignInfoByUserId(userId)); + } + /** + * @Description 更新或新增签到时间和连续签到次数 + * @Author songyunpeng + * @Date 2020/7/21 + * @Param [userSignDTO] + * @return com.elink.esua.epdc.commons.tools.utils.Result + **/ + @GetMapping("saveOrUpdateSignById") + public Result saveOrUpdateSignById(@RequestBody UserSignDTO userSignDTO){ + return userSignService.saveOrUpdateSignById(userSignDTO); + } + + /** + * @Description 签到加积分操作 + * @Author songyunpeng + * @Date 2020/7/21 + * @Param [userSignDTO] + **/ + @GetMapping("addSignPoints") + @RecordUserBehavior(behavior = BehaviorEnum.USER_SIGN,referenceId = "#{userSignDTO.getId}",userId = "#{userSignDTO.getUserId}") + public Result addSignPoints(@RequestBody UserSignDTO userSignDTO){ + return new Result(); + } + /** + * @Description 连续签到加积分 + * @Author songyunpeng + * @Date 2020/7/21 + * @Param [userSignDTO] + **/ + @GetMapping("addConsequentSignPoints") + @RecordUserBehavior(behavior = BehaviorEnum.USER_CONSEQUENT_SIGN,referenceId = "#{userSignDTO.getId}",userId = "#{userSignDTO.getUserId}") + public Result addConsequentSignPoints(@RequestBody UserSignDTO userSignDTO){ + return new Result(); + } +} \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/dao/UserSignDao.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/dao/UserSignDao.java new file mode 100644 index 00000000..9a40d3b7 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/dao/UserSignDao.java @@ -0,0 +1,41 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.elink.esua.epdc.dao; + +import com.elink.esua.epdc.commons.mybatis.dao.BaseDao; +import com.elink.esua.epdc.dto.UserSignDTO; +import com.elink.esua.epdc.entity.UserSignEntity; +import org.apache.ibatis.annotations.Mapper; + +/** + * 用户签到表 + * + * @author qu qu@elink-cn.com + * @since v1.0.0 2020-07-21 + */ +@Mapper +public interface UserSignDao extends BaseDao { + /** + * @Description 根据用户ID获取用户签到信息 + * @Author songyunpeng + * @Date 2020/7/21 + * @Param [userId] + * @return com.elink.esua.epdc.dto.UserSignDTO + **/ + UserSignDTO selectUserSignInfoByUserId(String userId); +} \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/entity/UserSignEntity.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/entity/UserSignEntity.java new file mode 100644 index 00000000..9e5c57d1 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/entity/UserSignEntity.java @@ -0,0 +1,56 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.elink.esua.epdc.entity; + +import com.baomidou.mybatisplus.annotation.TableName; + +import com.elink.esua.epdc.commons.mybatis.entity.BaseEpdcEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * 用户签到表 + * + * @author qu qu@elink-cn.com + * @since v1.0.0 2020-07-21 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("epdc_user_sign") +public class UserSignEntity extends BaseEpdcEntity { + + private static final long serialVersionUID = 1L; + + /** + * 用户ID + */ + private String userId; + + /** + * 连续签到天数 + */ + private Integer consequentSignDays; + + /** + * 最近签到时间 + */ + private Date lastSignTime; + +} \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/excel/UserSignExcel.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/excel/UserSignExcel.java new file mode 100644 index 00000000..72d90d7b --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/excel/UserSignExcel.java @@ -0,0 +1,65 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.elink.esua.epdc.excel; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import lombok.Data; + +import java.util.Date; + +/** + * 用户签到表 + * + * @author qu qu@elink-cn.com + * @since v1.0.0 2020-07-21 + */ +@Data +public class UserSignExcel { + + @Excel(name = "主键") + private String id; + + @Excel(name = "用户ID") + private String userId; + + @Excel(name = "连续签到天数") + private Integer consequentSignDays; + + @Excel(name = "最近签到时间") + private Date lastSignTime; + + @Excel(name = "删除标记") + private String delFlag; + + @Excel(name = "乐观锁") + private Integer revision; + + @Excel(name = "创建人") + private String createdBy; + + @Excel(name = "创建时间") + private Date createdTime; + + @Excel(name = "更新人") + private String updatedBy; + + @Excel(name = "更新时间") + private Date updatedTime; + + +} \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/redis/UserSignRedis.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/redis/UserSignRedis.java new file mode 100644 index 00000000..afd3a8f0 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/redis/UserSignRedis.java @@ -0,0 +1,47 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.elink.esua.epdc.redis; + +import com.elink.esua.epdc.commons.tools.redis.RedisUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * 用户签到表 + * + * @author qu qu@elink-cn.com + * @since v1.0.0 2020-07-21 + */ +@Component +public class UserSignRedis { + @Autowired + private RedisUtils redisUtils; + + public void delete(Object[] ids) { + + } + + public void set(){ + + } + + public String get(String id){ + return null; + } + +} \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/UserSignService.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/UserSignService.java new file mode 100644 index 00000000..4104bfab --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/UserSignService.java @@ -0,0 +1,112 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.elink.esua.epdc.service; + +import com.elink.esua.epdc.commons.mybatis.service.BaseService; +import com.elink.esua.epdc.commons.tools.page.PageData; +import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.dto.UserSignDTO; +import com.elink.esua.epdc.entity.UserSignEntity; + +import java.util.List; +import java.util.Map; + +/** + * 用户签到表 + * + * @author qu qu@elink-cn.com + * @since v1.0.0 2020-07-21 + */ +public interface UserSignService extends BaseService { + + /** + * 默认分页 + * + * @param params + * @return PageData + * @author generator + * @date 2020-07-21 + */ + PageData page(Map params); + + /** + * 默认查询 + * + * @param params + * @return java.util.List + * @author generator + * @date 2020-07-21 + */ + List list(Map params); + + /** + * 单条查询 + * + * @param id + * @return UserSignDTO + * @author generator + * @date 2020-07-21 + */ + UserSignDTO get(String id); + + /** + * 默认保存 + * + * @param dto + * @return void + * @author generator + * @date 2020-07-21 + */ + void save(UserSignDTO dto); + + /** + * 默认更新 + * + * @param dto + * @return void + * @author generator + * @date 2020-07-21 + */ + void update(UserSignDTO dto); + + /** + * 批量删除 + * + * @param ids + * @return void + * @author generator + * @date 2020-07-21 + */ + void delete(String[] ids); + /** + * @Description 根据用户ID获取用户签到信息 + * @Author songyunpeng + * @Date 2020/7/21 + * @Param [userId] + * @return com.elink.esua.epdc.dto.UserSignDTO + **/ + UserSignDTO getUserSignInfoByUserId(String userId); + /** + * @Description 更新签到时间和连续签到次数 + * @Author songyunpeng + * @Date 2020/7/21 + * @Param [userSignDTO] + * @return void + **/ + Result saveOrUpdateSignById(UserSignDTO userSignDTO); +} \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/UserSignServiceImpl.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/UserSignServiceImpl.java new file mode 100644 index 00000000..04667f82 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/UserSignServiceImpl.java @@ -0,0 +1,122 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.elink.esua.epdc.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl; +import com.elink.esua.epdc.commons.tools.constant.FieldConstant; +import com.elink.esua.epdc.commons.tools.page.PageData; +import com.elink.esua.epdc.commons.tools.utils.ConvertUtils; +import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.dao.UserSignDao; +import com.elink.esua.epdc.dto.UserSignDTO; +import com.elink.esua.epdc.entity.UserSignEntity; +import com.elink.esua.epdc.redis.UserSignRedis; +import com.elink.esua.epdc.service.UserSignService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +/** + * 用户签到表 + * + * @author qu qu@elink-cn.com + * @since v1.0.0 2020-07-21 + */ +@Service +public class UserSignServiceImpl extends BaseServiceImpl implements UserSignService { + + @Autowired + private UserSignRedis userSignRedis; + + @Override + public PageData page(Map params) { + IPage page = baseDao.selectPage( + getPage(params, FieldConstant.CREATED_TIME, false), + getWrapper(params) + ); + return getPageData(page, UserSignDTO.class); + } + + @Override + public List list(Map params) { + List entityList = baseDao.selectList(getWrapper(params)); + + return ConvertUtils.sourceToTarget(entityList, UserSignDTO.class); + } + + private QueryWrapper getWrapper(Map params){ + String id = (String)params.get(FieldConstant.ID_HUMP); + + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); + + return wrapper; + } + + @Override + public UserSignDTO get(String id) { + UserSignEntity entity = baseDao.selectById(id); + return ConvertUtils.sourceToTarget(entity, UserSignDTO.class); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void save(UserSignDTO dto) { + UserSignEntity entity = ConvertUtils.sourceToTarget(dto, UserSignEntity.class); + insert(entity); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(UserSignDTO dto) { + UserSignEntity entity = ConvertUtils.sourceToTarget(dto, UserSignEntity.class); + updateById(entity); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delete(String[] ids) { + // 逻辑删除(@TableLogic 注解) + baseDao.deleteBatchIds(Arrays.asList(ids)); + } + + @Override + public UserSignDTO getUserSignInfoByUserId(String userId) { + return baseDao.selectUserSignInfoByUserId(userId); + } + + @Override + public Result saveOrUpdateSignById(UserSignDTO userSignDTO) { + UserSignEntity entity = ConvertUtils.sourceToTarget(userSignDTO, UserSignEntity.class); + if(StringUtils.isNotBlank(entity.getId())){ + updateById(entity); + return new Result(); + } else { + insert(entity); + return new Result().ok(entity.getId()); + } + } + +} \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/resources/mapper/UserDao.xml b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/resources/mapper/UserDao.xml index 9a3e14e5..3376dd0a 100644 --- a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/resources/mapper/UserDao.xml +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/resources/mapper/UserDao.xml @@ -28,13 +28,15 @@ WHEN IFNULL(eu.POINTS_TOTLE,0) <= 0 THEN 0 ELSE IFNULL(FLOOR(IFNULL(eu.POINTS_TOTLE,0) / IFNULL(g.POINTS,0) * IFNULL(g.GRADE,0)),0) - END grade + END grade, + date_format(eus.LAST_SIGN_TIME,'%y-%m-%d') = CURDATE() as isSignUp FROM epdc_user eu Left Join (select * from epdc_user_grid_relation where USER_ID = #{id} order by UPDATED_TIME desc limit 0,1) eugr on(eu.id=eugr.USER_ID) left join epdc_points_grade g ON 1=1 AND g.DEL_FLAG = 0 LEFT JOIN epdc_volunteer_info v ON eu.ID = v.USER_ID + left join epdc_user_sign eus on eus.USER_ID = eu.ID and eus.DEL_FLAG ='0' WHERE eu.ID = #{id} diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/resources/mapper/UserSignDao.xml b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/resources/mapper/UserSignDao.xml new file mode 100644 index 00000000..111c9669 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/resources/mapper/UserSignDao.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file