日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

springboot 打卡功能_实战:如果让你用SpringBoot实现签到奖励的功能,你会怎么做?...

發布時間:2025/4/16 javascript 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 springboot 打卡功能_实战:如果让你用SpringBoot实现签到奖励的功能,你会怎么做?... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

/** Copyright (c) 2020. zhanghan_java@163.com All Rights Reserved.* 項目名稱:Spring Boot實戰:簽到獎勵實現方案* 類名稱:SignInServiceImpl.java* 創建人:張晗* 聯系方式:zhanghan_java@163.com* 開源地址: https://github.com/dangnianchuntian/springboot* 博客地址: https://zhanghan.blog.csdn.net*/package com.zhanghan.zhsignin.service.impl;import cn.hutool.core.util.IdUtil;import com.zhanghan.zhsignin.config.SignInRewardMoneyListConfig;import com.zhanghan.zhsignin.constant.SignInConstant;import com.zhanghan.zhsignin.controller.request.ListSignInDetailRequest;import com.zhanghan.zhsignin.controller.request.PostSignInRequest;import com.zhanghan.zhsignin.controller.response.ListSignInDetailResponse;import com.zhanghan.zhsignin.mybatis.entity.XZhSignInEntity;import com.zhanghan.zhsignin.mybatis.entity.XZhSignInHistEntity;import com.zhanghan.zhsignin.mybatis.mapper.XZhSignInHistMapper;import com.zhanghan.zhsignin.mybatis.mapper.XZhSignInMapper;import com.zhanghan.zhsignin.service.SignInService;import com.zhanghan.zhsignin.util.DateUtils;import com.zhanghan.zhsignin.util.wrapper.WrapMapper;import org.springframework.beans.BeanUtils;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Service;import org.springframework.util.CollectionUtils;import java.util.Date;import java.util.List;import java.util.stream.Collectors;import static com.zhanghan.zhsignin.constant.SignInConstant.*;@Servicepublic class SignInServiceImpl implements SignInService{@Autowiredprivate XZhSignInMapper xZhSignInMapper;@Autowiredprivate XZhSignInHistMapper xZhSignInHistMapper;//校驗連續天數是否為7@Value("#{T(java.lang.Integer).parseInt('${zh.sign.in.continuite.day.threshold:7}')}")public Integer continuiteDayThreshold;//簽到獎勵金幣集合配置@Autowiredpublic SignInRewardMoneyListConfig signInRewardMoneyListConfig;/*** 查詢用戶簽到記錄*/@Overridepublic Object listSignInDetail(ListSignInDetailRequest listSignInDetailRequest){//若配置文件中未配置簽到獎勵則不展示簽到記錄List signInRewardMoneyListConfigList = signInRewardMoneyListConfig.getList();if (CollectionUtils.isEmpty(signInRewardMoneyListConfigList)) {return WrapMapper.ok(new ListSignInDetailResponse(false));}String customerId = listSignInDetailRequest.getCustomerId();XZhSignInEntity xZhSignInEntity = xZhSignInMapper.findByCustomerId(customerId);List signInDetailList = signInRewardMoneyListConfigList.stream().map(aa -> new ListSignInDetailResponse.SignInDetail(0, aa)).collect(Collectors.toList());//該用戶之前未簽到過if (null == xZhSignInEntity) {return WrapMapper.ok(new ListSignInDetailResponse(TODAY_NOT_SIGN_IN, SignInConstant.CONTINUITE_DAY_ZERO, signInDetailList));}long signInDateTime = xZhSignInEntity.getSignInDate().getTime();//最近一次簽到是否為昨日之前if (signInDateTime < DateUtils.getYesterdayDateTime()) {return WrapMapper.ok(new ListSignInDetailResponse(TODAY_NOT_SIGN_IN, SignInConstant.CONTINUITE_DAY_ZERO, signInDetailList));}//最近一次簽到是否為昨日Integer todaySignStatus = TODAY_YES_SIGN_IN;Integer continuiteDay = xZhSignInEntity.getContinuiteDay();if (signInDateTime < DateUtils.getTodayDateTime()) {//最近一次簽到是昨日且之前已連續簽到7日if (continuiteDay >= continuiteDayThreshold) {return WrapMapper.ok(new ListSignInDetailResponse(TODAY_NOT_SIGN_IN, SignInConstant.CONTINUITE_DAY_ZERO, signInDetailList));}//最近一次簽到是昨日且之前連續未超7日todaySignStatus = TODAY_NOT_SIGN_IN;}//查詢用戶簽到歷史記錄List xZhSignInHistEntitieList = xZhSignInHistMapper.listByCustomerIdAndLimit(customerId, continuiteDay);for (XZhSignInHistEntity xZhSignInHistEntity : xZhSignInHistEntitieList) {ListSignInDetailResponse.SignInDetail signInDetail = new ListSignInDetailResponse.SignInDetail(TODAY_YES_SIGN_IN, xZhSignInHistEntity.getRewardMoney());signInDetailList.remove(xZhSignInHistEntity.getContinuiteDay() - 1);signInDetailList.add(xZhSignInHistEntity.getContinuiteDay() - 1, signInDetail);}return WrapMapper.ok(new ListSignInDetailResponse(todaySignStatus, continuiteDay, signInDetailList));}/*** 進行簽到*/@Overridepublic Object postSignIn(PostSignInRequest postSignInRequest){//若配置文件中未配置簽到獎勵則不展示簽到記錄List signInRewardMoneyListConfigList = signInRewardMoneyListConfig.getList();if (CollectionUtils.isEmpty(signInRewardMoneyListConfigList)) {return WrapMapper.ok();}//獲取session用戶對象String customerId = postSignInRequest.getCustomerId();//根據customerId查詢用戶簽到記錄XZhSignInEntity xZhSignInEntityByCustomerId = xZhSignInMapper.findByCustomerId(customerId);//簽到記錄是否為空if (null == xZhSignInEntityByCustomerId) {XZhSignInEntity xZhSignInEntity = new XZhSignInEntity();xZhSignInEntity.setBuNo(IdUtil.simpleUUID());xZhSignInEntity.setCustomerId(customerId);xZhSignInEntity.setContinuiteDay(CONTINUITE_DAY_ONE);xZhSignInEntity.setRewardMoney(signInRewardMoneyListConfigList.get(0));xZhSignInEntity.setSignInDate(DateUtils.getTodayDate());insertSigninAndHist(xZhSignInEntity);return WrapMapper.ok();}long signInDateTime = xZhSignInEntityByCustomerId.getSignInDate().getTime();if (signInDateTime == DateUtils.getTodayDateTime()) {return WrapMapper.error("今天已經簽到");}//獲取連續簽到天數Integer continuiteDay = continuiteDay(xZhSignInEntityByCustomerId.getContinuiteDay(), signInDateTime);xZhSignInEntityByCustomerId.setSignInDate(DateUtils.getTodayDate());xZhSignInEntityByCustomerId.setContinuiteDay(continuiteDay);xZhSignInEntityByCustomerId.setRewardMoney(signInRewardMoneyListConfigList.get(continuiteDay - 1));xZhSignInEntityByCustomerId.setUpdateTime(new Date());xZhSignInEntityByCustomerId.setBuNo(IdUtil.simpleUUID());updateSignInAndInsertHist(xZhSignInEntityByCustomerId);return WrapMapper.ok();}private Integer continuiteDay(Integer continuiteDay, Long signInDateTime){if (signInDateTime < DateUtils.getYesterdayDateTime()) {return CONTINUITE_DAY_ONE;}if (continuiteDay >= continuiteDayThreshold) {return CONTINUITE_DAY_ONE;}return continuiteDay + 1;}private void insertSigninAndHist(XZhSignInEntity xZhSignInEntity){xZhSignInMapper.insertSelective(xZhSignInEntity);XZhSignInHistEntity xZhSignInHistEntity = new XZhSignInHistEntity();BeanUtils.copyProperties(xZhSignInEntity, xZhSignInHistEntity);xZhSignInHistEntity.setId(null);xZhSignInHistMapper.insertSelective(xZhSignInHistEntity);}private void updateSignInAndInsertHist(XZhSignInEntity xZhSignInEntity){xZhSignInMapper.updateByPrimaryKeySelective(xZhSignInEntity);XZhSignInHistEntity xZhSignInHistEntity = new XZhSignInHistEntity();BeanUtils.copyProperties(xZhSignInEntity, xZhSignInHistEntity);xZhSignInHistEntity.setId(null);xZhSignInHistMapper.insertSelective(xZhSignInHistEntity);}}

總結

以上是生活随笔為你收集整理的springboot 打卡功能_实战:如果让你用SpringBoot实现签到奖励的功能,你会怎么做?...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲图片一区 | 女王人厕视频2ⅴk | 日韩精选av | 成年男女免费视频网站 | 国产调教视频 | 人物动物互动39集免费观看 | 亚洲综合色站 | 人人爱人人搞 | 国产av无码专区亚洲a∨毛片 | 无码gogo大胆啪啪艺术 | 亚洲欲色 | 国产电影一区在线观看 | 在线看片你懂 | 欧美韩国日本在线 | 亚洲欧美激情在线 | 中文字幕精品久久久 | 五月激情视频 | 捆绑凌虐一区二区三区 | 极品尤物一区二区三区 | 夜色视频网站 | 丝袜人妻一区二区三区 | 国产麻豆一精品一男同 | 成年人免费看视频 | 一区二区三区在线观看视频 | 国产在线观看网站 | 亚洲v日韩v综合v精品v | av撸撸在线 | 求av网站 | 精品国产系列 | 国产一二三区在线视频 | 国产精品你懂的 | 在线三级av| 2017日日夜夜 | 日韩免费网址 | 亚洲成人激情视频 | 日本美女一区二区三区 | av超碰在线观看 | 伊人在线 | 成人免费视频观看视频 | 成人福利一区二区三区 | 亚洲一线av | 国产精品ⅴa有声小说 | 中文字幕一区二区不卡 | 69日影院 | 国产在线精品一区二区三区 | www av| 欧美在线性爱视频 | 精品人妻无码一区二区色欲产成人 | 一区二区精品在线观看 | 手机在线看片你懂的 | 亚洲一区在线电影 | 热久久久久久久 | 牛夜精品久久久久久久99黑人 | 日韩性网| 一区二区三区国产精品视频 | 操到喷水| 天天操夜夜骑 | 少妇一级淫片免费放播放 | 亚洲伦理在线观看 | 亚洲第四页 | 亚洲国产欧美一区二区三区深喉 | 国产精品1000部啪视频 | 国产小毛片 | 一区二区三区人妻 | 国产小视频一区 | 欧美一区二区三区爽爽爽 | 国产精品久久久久久 | 黄色网页入口 | 91tv在线观看 | 久久99热这里只有精品 | 色花堂在线 | 水蜜桃影库| 中国一级片黄色一级片黄 | 性感美女一区二区三区 | 日韩欧美中文字幕精品 | 91网站免费视频 | 国产成人精品免高潮在线观看 | 国产美女免费网站 | 黄色伊人网 | 第一页在线 | 成人爱爱| 51精产品一区一区三区 | 天天透天天操 | 国产日本一区二区三区 | 无码人妻丰满熟妇区五十路百度 | 蜜臀国产AV天堂久久无码蜜臀 | 免费一区二区三区视频在线 | 毛片天天看 | 秋霞国产午夜精品免费视频 | 懂色av中文一区二区三区天美 | 欧美在线观看一区 | 在线观看污网站 | 99久久婷婷国产综合精品青牛牛 | 超碰成人免费电影 | 日韩在线观看视频免费 | 中文字幕123 | 后进极品白嫩翘臀在线视频 | 色综合久久久 | 人成在线观看 |