Commit 1119dbe1 authored by 罗林杰's avatar 罗林杰

修改访问量

parent 8347b256
package org.rcisoft.app.appMemTraffic.controller;
/*固定导入*/
import io.swagger.v3.oas.annotations.Operation;
import org.rcisoft.business.memTraffic.entity.MemTraffic;
import org.rcisoft.business.memTraffic.service.MemTrafficService;
import org.rcisoft.core.anno.CyOpeLogAnno;
import org.rcisoft.core.constant.CyMessCons;
import org.rcisoft.core.controller.CyPaginationController;
import org.rcisoft.core.model.CyPersistModel;
import org.rcisoft.core.operlog.enums.CyLogTypeEnum;
import org.rcisoft.core.result.CyResult;
import org.rcisoft.core.util.CyResultGenUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* Created by cy on 2025年2月13日 上午10:00:53.
*/
@RestController
@RequestMapping("/app")
public class AppMemTrafficController extends CyPaginationController<MemTraffic> {
@Autowired
private MemTrafficService memTrafficServiceImpl;
//@PreAuthorize("@cyPerm.hasPerm('sys:traffic:add')")
@CyOpeLogAnno(title = "system-访问量表管理-新增访问量表", businessType = CyLogTypeEnum.INSERT)
@Operation(summary="添加访问量表", description="添加访问量表")
@PostMapping(value = "/memtraffic/add")
public CyResult add(@RequestBody MemTraffic memTraffic) {
CyPersistModel data = memTrafficServiceImpl.persist(memTraffic);
return CyResultGenUtil.builder(data,
CyMessCons.MESSAGE_ALERT_SUCCESS,
CyMessCons.MESSAGE_ALERT_ERROR,
memTraffic);
}
}
package org.rcisoft.business.memTraffic.bean;
/**
* Created with family.
* author: cy
* Date: 2024/5/25
* Time: 8:43 AM
* description:
*/
public class MemTrafficRedisBean {
//被访问的次数
public static final String USER_MEMTRAFFIC = "user:memTraffic:";
}
...@@ -25,5 +25,9 @@ public interface MemTrafficRepository extends CyBaseMapper<MemTraffic> { ...@@ -25,5 +25,9 @@ public interface MemTrafficRepository extends CyBaseMapper<MemTraffic> {
* *
*/ */
IPage<MemTraffic> queryMemTrafficsPaged(CyPageInfo cyPageInfo,@Param("entity") MemTraffic memTraffic); IPage<MemTraffic> queryMemTrafficsPaged(CyPageInfo cyPageInfo,@Param("entity") MemTraffic memTraffic);
void updateMemTraffic(@Param("entity") MemTraffic memTraffic);
void insertMemTraffic(@Param("entity") MemTraffic memTraffic);
} }
...@@ -82,5 +82,11 @@ public class MemTraffic extends CyIdNotDataEntity<MemTraffic> { ...@@ -82,5 +82,11 @@ public class MemTraffic extends CyIdNotDataEntity<MemTraffic> {
*/ */
@TableField(exist = false) @TableField(exist = false)
private BigInteger memCode; private BigInteger memCode;
/**
* 会员id
*/
@TableField(exist = false)
private BigInteger memberId;
} }
...@@ -5,6 +5,10 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; ...@@ -5,6 +5,10 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.rcisoft.business.memInfo.bean.MemberInfoRedisBean;
import org.rcisoft.business.memInfo.entity.MemLikeDTO;
import org.rcisoft.business.memTraffic.bean.MemTrafficRedisBean;
import org.rcisoft.core.service.CyRedisService;
import org.rcisoft.core.util.CyUserUtil; import org.rcisoft.core.util.CyUserUtil;
import org.rcisoft.core.aop.CyPageUtilAsp; import org.rcisoft.core.aop.CyPageUtilAsp;
import org.rcisoft.core.model.CyPersistModel; import org.rcisoft.core.model.CyPersistModel;
...@@ -15,13 +19,22 @@ import org.rcisoft.business.memTraffic.service.MemTrafficService; ...@@ -15,13 +19,22 @@ import org.rcisoft.business.memTraffic.service.MemTrafficService;
import org.rcisoft.core.service.CyBaseService; import org.rcisoft.core.service.CyBaseService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Isolation; import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.rcisoft.core.model.CyPageInfo; import org.rcisoft.core.model.CyPageInfo;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Set;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
/** /**
...@@ -33,6 +46,14 @@ import lombok.extern.slf4j.Slf4j; ...@@ -33,6 +46,14 @@ import lombok.extern.slf4j.Slf4j;
public class MemTrafficServiceImpl extends ServiceImpl<MemTrafficRepository,MemTraffic> implements MemTrafficService { public class MemTrafficServiceImpl extends ServiceImpl<MemTrafficRepository,MemTraffic> implements MemTrafficService {
@Autowired
private StringRedisTemplate redisTemplate;
@Autowired
private CyRedisService cyRedisService;
@Autowired
private CyRedisService cyRedisServiceImpl;
/** /**
* 保存 访问量表 * 保存 访问量表
* @param memTraffic * @param memTraffic
...@@ -41,13 +62,78 @@ public class MemTrafficServiceImpl extends ServiceImpl<MemTrafficRepository,MemT ...@@ -41,13 +62,78 @@ public class MemTrafficServiceImpl extends ServiceImpl<MemTrafficRepository,MemT
@Transactional(propagation = Propagation.REQUIRED,isolation = Isolation.DEFAULT) @Transactional(propagation = Propagation.REQUIRED,isolation = Isolation.DEFAULT)
@Override @Override
public CyPersistModel persist(MemTraffic memTraffic){ public CyPersistModel persist(MemTraffic memTraffic){
//增加操作
int line = baseMapper.insert(memTraffic); BigInteger memberId = memTraffic.getMemberId();
log.debug(CyUserUtil.getAuthenUsername()+"新增了ID为"+ Object isFirst = cyRedisServiceImpl.get(MemTrafficRedisBean.USER_MEMTRAFFIC + memberId);
memTraffic.getBusinessId()+"的访问量表信息");
return new CyPersistModel(line); this.redisTemplate.opsForValue().increment(MemTrafficRedisBean.USER_MEMTRAFFIC + memberId, 1L);
if (isFirst == null){
// 获取当前日期
LocalDate today = LocalDate.now();
// 定义日期时间格式
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
// 最大时间 和 最小时间
String createDate = today.format(formatter);
memTraffic.setMemTraffic(BigInteger.valueOf(0));
memTraffic.setBeginTime(createDate);
baseMapper.insertMemTraffic(memTraffic);
}
return new CyPersistModel(1);
} }
/**
* 用户访问量定时任务
*/
public void memTrafficSchedule() {
log.info("用户访问数据定时任务执行中...");
//获取当前时间
// 获取当前日期
LocalDate today = LocalDate.now();
// 获取今天的最小时间(00:00:00)
LocalDateTime startOfDay = today.atStartOfDay();
// 获取今天的最大时间(23:59:59)
LocalDateTime endOfDay = today.atTime(LocalTime.MAX);
// 定义日期时间格式
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
// 最大时间 和 最小时间
String beginTime = startOfDay.format(formatter);
String endTime = endOfDay.format(formatter);
//将redis中存储的点赞数同步到opm_user_like表中
Set<String> keys = redisTemplate.keys(MemTrafficRedisBean.USER_MEMTRAFFIC + "*");
if (keys != null && !keys.isEmpty()) {
for (String key : keys) {
// 提取 userId
int lastIndex = key.lastIndexOf(':');
BigInteger memberId;
memberId = BigInteger.valueOf(Long.parseLong(key.substring(lastIndex + 1)));
//获取访问量
String value = redisTemplate.opsForValue().get(key);
BigInteger count = null;
if (value != null) {
count = BigInteger.valueOf(Long.parseLong(value));
}
//将redis中存储的访问量同步到表中
MemTraffic memTraffic = new MemTraffic();
memTraffic.setMemberId(memberId);
memTraffic.setMemTraffic(count);
memTraffic.setBeginTime(beginTime);
memTraffic.setEndTime(endTime);
baseMapper.updateMemTraffic(memTraffic);
}
} else {
System.out.println("No keys found.");
}
log.info("用户访问数据定时任务结束---");
}
/** /**
* 删除 访问量表 * 删除 访问量表
* @param memTraffic * @param memTraffic
......
...@@ -9,6 +9,8 @@ import org.rcisoft.business.memInfo.entity.MemLikeDTO; ...@@ -9,6 +9,8 @@ import org.rcisoft.business.memInfo.entity.MemLikeDTO;
import org.rcisoft.business.memInfo.service.MemInfoService; import org.rcisoft.business.memInfo.service.MemInfoService;
import org.rcisoft.business.memInfo.service.impl.MemInfoServiceImpl; import org.rcisoft.business.memInfo.service.impl.MemInfoServiceImpl;
import org.rcisoft.business.memLeaveMessage.service.impl.MemLeaveMessageServiceImpl; import org.rcisoft.business.memLeaveMessage.service.impl.MemLeaveMessageServiceImpl;
import org.rcisoft.business.memTraffic.service.MemTrafficService;
import org.rcisoft.business.memTraffic.service.impl.MemTrafficServiceImpl;
import org.rcisoft.core.service.CyRedisService; import org.rcisoft.core.service.CyRedisService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.StringRedisTemplate;
...@@ -32,6 +34,9 @@ public class ScheduleTasks { ...@@ -32,6 +34,9 @@ public class ScheduleTasks {
private CmsOrderServiceImpl orderService; private CmsOrderServiceImpl orderService;
@Autowired @Autowired
private MemLeaveMessageServiceImpl memLeaveMessageService; private MemLeaveMessageServiceImpl memLeaveMessageService;
@Autowired
private MemTrafficServiceImpl memTrafficService;
/** /**
* 24点时 用户点赞数据定时任务 将点赞数据同步到对应的表中 * 24点时 用户点赞数据定时任务 将点赞数据同步到对应的表中
* 会员表 点赞表 * 会员表 点赞表
...@@ -99,6 +104,12 @@ public class ScheduleTasks { ...@@ -99,6 +104,12 @@ public class ScheduleTasks {
orderService.executeDeleteOrder(); orderService.executeDeleteOrder();
} }
/**
* 定时更新访问量表
*/
@Scheduled(cron = "0 * * * * ?")
public void memTrafficSchedule() {
memTrafficService.memTrafficSchedule();
}
} }
...@@ -54,4 +54,24 @@ ...@@ -54,4 +54,24 @@
ORDER BY ORDER BY
mt.user_id DESC mt.user_id DESC
</select> </select>
<update id="updateMemTraffic">
update mem_traffic mt
left join mem_info mi on mt.user_id = mi.user_id
<set>
<if test="entity.memTraffic !=null and entity.memTraffic != '' ">
mem_traffic = #{entity.memTraffic},
</if>
</set>
where mi.business_id = #{entity.memberId}
and mt.create_date >= #{entity.beginTime}
and mt.create_date &lt; #{entity.endTime}
</update>
<insert id="insertMemTraffic">
INSERT INTO mem_traffic (user_id, create_date, mem_traffic)
SELECT mi.user_id, #{entity.beginTime}, #{entity.memTraffic}
FROM mem_info mi
WHERE mi.business_id = #{entity.memberId}
</insert>
</mapper> </mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment