puzhibing
2023-07-30 d02ea504ec952cdc920be3f7ddb6b79dccd24f56
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverServiceImpl.java
@@ -42,6 +42,7 @@
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.math.RoundingMode;
import java.net.InetAddress;
import java.text.SimpleDateFormat;
@@ -108,6 +109,9 @@
    @Autowired
    private WeChatUtil weChatUtil;
    @Autowired
    private IDriverOnlineTimeService driverOnlineTimeService;
    @Value("${callbackPath}")
    private String callbackPath;
@@ -555,20 +559,6 @@
     */
    public void addDurationCredits(Integer driverId) throws Exception {
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
        String value = redisUtil.getValue("ONLINE" + driverId);
        if(ToolUtil.isEmpty(value)){
            redisUtil.setStrValue("ONLINE" + driverId, "0_" + sdf1.format(new Date()) + "_0", 25 * 60 * 60);
            return;
        }
        String today = sdf1.format(new Date());
        String[] s = value.split("_");
        if(!today.equals(s[1])){
            redisUtil.setStrValue("ONLINE" + driverId, "0_" + sdf1.format(new Date()) + "_0", 25 * 60 * 60);
            return;
        }
        Integer second = Integer.valueOf(s[0]) + 5;
        Integer time = Integer.valueOf(s[2]);
        SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 4));
        if(null == systemConfig){
            return;
@@ -582,9 +572,37 @@
        long end = sdf.parse(sdf1.format(new Date()) + " " + num2 + ":00").getTime();
        long l = System.currentTimeMillis();
        if(start <= l && end > l){
            Driver driver = this.selectById(driverId);
            String value = redisUtil.getValue("ONLINE" + driverId);
            if(ToolUtil.isEmpty(value)){
                redisUtil.setStrValue("ONLINE" + driverId, "0_" + sdf1.format(new Date()) + "_0", 25 * 60 * 60);
                return;
            }
            String today = sdf1.format(new Date());
            String[] s = value.split("_");
            if(!today.equals(s[1])){
                //修改在线时长记录
                DriverOnlineTime driverOnlineTime = driverOnlineTimeService.selectOne(new EntityWrapper<DriverOnlineTime>().eq("driverId", driverId).eq("DATE_FORMAT(`day`, '%Y-%m-%d')", s[1]));
                if(null != driverOnlineTime){
                    driverOnlineTime.setOnlineTime(new BigInteger(s[0]));
                    driverOnlineTimeService.updateById(driverOnlineTime);
                }else{
                    driverOnlineTime = new DriverOnlineTime();
                    driverOnlineTime.setDriverId(driverId);
                    driverOnlineTime.setDay(sdf1.parse(s[1]));
                    driverOnlineTime.setOnlineTime(new BigInteger(s[0]));
                    driverOnlineTimeService.insert(driverOnlineTime);
                }
                driver.setOnlineTime(new BigInteger(s[0]));
                this.updateById(driver);
                redisUtil.setStrValue("ONLINE" + driverId, "0_" + sdf1.format(new Date()) + "_0", 25 * 60 * 60);
                return;
            }
            Integer second = Integer.valueOf(s[0]) + 5;
            Integer time = Integer.valueOf(s[2]);
            int h = Double.valueOf(second / 3600).intValue();
            if(h > 0 && h > time){
                Driver driver = this.selectById(driverId);
                AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                accountChangeDetail.setUserType(2);
@@ -595,13 +613,28 @@
                accountChangeDetail.setNewData(driver.getIntegral().doubleValue());
                accountChangeDetail.setExplain("在线时长奖励");
                accountChangeDetailService.saveData(accountChangeDetail);
                driver.setOnlineTime(new BigInteger(s[0]));
                this.updateById(driver);
                time++;
                //修改在线时长记录
                DriverOnlineTime driverOnlineTime = driverOnlineTimeService.selectOne(new EntityWrapper<DriverOnlineTime>().eq("driverId", driverId).eq("DATE_FORMAT(`day`, '%Y-%m-%d')", s[1]));
                if(null != driverOnlineTime){
                    driverOnlineTime.setOnlineTime(new BigInteger(s[0]));
                    driverOnlineTimeService.updateById(driverOnlineTime);
                }else{
                    driverOnlineTime = new DriverOnlineTime();
                    driverOnlineTime.setDriverId(driverId);
                    driverOnlineTime.setDay(sdf1.parse(s[1]));
                    driverOnlineTime.setOnlineTime(new BigInteger(s[0]));
                    driverOnlineTimeService.insert(driverOnlineTime);
            }
        }
        redisUtil.setStrValue("ONLINE" + driverId, second + "_" + s[1] + "_" + time);
    }
    }
    /**
     * 获取司机个人信息