Pu Zhibing
2024-12-10 651aa82ffd4d44632545062ad6b87247655bfe24
增加用户在线记录时器
3个文件已修改
69 ■■■■■ 已修改文件
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/AppUserService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java
@@ -320,8 +320,16 @@
        AppUser superiorLeader = appUserService.getSuperiorLeader(id);
        return R.ok(superiorLeader);
    }
    @ResponseBody
    @PostMapping("/onlineRecord")
    @ApiOperation(value = "10分钟定时任务调用,记录用户在线时长", tags = {"小程序-个人中心首页"})
    public R onlineRecord(){
        appUserService.onlineRecord();
        return R.ok();
    }
}
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/AppUserService.java
@@ -73,4 +73,10 @@
     * 解绑推广人
     */
    void unbindThePromoter();
    /**
     * 在线记录操作,用于赠送积分
     */
    void onlineRecord();
}
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java
@@ -6,11 +6,13 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.account.api.model.AppUserShop;
import com.ruoyi.account.api.model.UserChangeLog;
import com.ruoyi.account.api.model.UserPoint;
import com.ruoyi.account.mapper.AppUserMapper;
import com.ruoyi.account.api.model.AppUser;
import com.ruoyi.account.service.AppUserService;
import com.ruoyi.account.service.AppUserShopService;
import com.ruoyi.account.service.UserChangeLogService;
import com.ruoyi.account.service.UserPointService;
import com.ruoyi.account.util.weChat.EnvVersion;
import com.ruoyi.account.util.weChat.WXCore;
import com.ruoyi.account.util.weChat.WeChatUtil;
@@ -19,8 +21,10 @@
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.redis.service.RedisService;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.other.api.domain.PointSetting;
import com.ruoyi.other.api.domain.Shop;
import com.ruoyi.other.api.domain.VipSetting;
import com.ruoyi.other.api.feignClient.PointSettingClient;
import com.ruoyi.other.api.feignClient.ShopClient;
import com.ruoyi.other.api.feignClient.VipSettingClient;
import com.ruoyi.system.api.domain.SysUser;
@@ -34,6 +38,7 @@
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import static com.sun.xml.internal.ws.api.model.wsdl.WSDLBoundOperation.ANONYMOUS.optional;
@@ -78,6 +83,12 @@
    
    @Value("${file.upload.accessPath}")
    private String accessPath;
    @Resource
    private PointSettingClient pointSettingClient;
    @Resource
    private UserPointService userPointService;
    
    
    
@@ -551,4 +562,44 @@
            this.updateById(appUser);
        }
    }
    /**
     * 在线记录操作,用于赠送积分
     */
    @Override
    public void onlineRecord() {
        Long userid = tokenService.getLoginUserApplet().getUserid();
        Object cacheObject = redisService.getCacheObject("ONLINE_" + userid);
        if(null == cacheObject){
            redisService.setCacheObject("ONLINE_" + userid, 0, 15L, TimeUnit.MINUTES);
        }else{
            Long duration = (Long) cacheObject;
            duration += 10;
            //满足一个小时,开始发放积分,计时归0
            if(60 >= duration){
                redisService.setCacheObject("ONLINE_" + userid, 0, 15L, TimeUnit.MINUTES);
                AppUser appUser = this.getById(userid);
                PointSetting pointSetting = pointSettingClient.getPointSetting(appUser.getVipId()).getData();
                if(null != pointSetting){
                    int hourPoint = pointSetting.getHourPoint().intValue();
                    Integer lavePoint = appUser.getLavePoint();
                    appUser.setTotalPoint(appUser.getTotalPoint() + hourPoint);
                    appUser.setLavePoint(appUser.getLavePoint() + hourPoint);
                    this.updateById(appUser);
                    //添加积分变动记录
                    UserPoint userPoint = new UserPoint();
                    userPoint.setType(9);
                    userPoint.setHistoricalPoint(lavePoint);
                    userPoint.setVariablePoint(hourPoint);
                    userPoint.setBalance(appUser.getLavePoint());
                    userPoint.setCreateTime(LocalDateTime.now());
                    userPoint.setAppUserId(appUser.getId());
                    userPointService.save(userPoint);
                }
            }else{
                redisService.setCacheObject("ONLINE_" + userid, duration, 15L, TimeUnit.MINUTES);
            }
        }
    }
}