Commit 847fa5f2 authored by liwei's avatar liwei

修改了留言限制次数

parent e691ed50
package org.rcisoft.business.memLeaveMessage.bean;
/**
* Created with family.
* author: cy
* Date: 2024/5/25
* Time: 8:43 AM
* description:
*/
public class MemLeaveMessageRedisBean {
//留言次数
public static final String USER_LEAVE_MESSAGE = "user:leaveMessage:";
}
...@@ -81,5 +81,12 @@ public class MemLeaveMessage extends CyIdIncreNotDataEntity<MemLeaveMessage> { ...@@ -81,5 +81,12 @@ public class MemLeaveMessage extends CyIdIncreNotDataEntity<MemLeaveMessage> {
*/ */
@TableField(exist = false) @TableField(exist = false)
private String delStatus; private String delStatus;
/**
* 是否花费金币发送留言
* 1花费 0花费
*/
@TableField(exist = false)
private String isPay;
} }
...@@ -3,14 +3,22 @@ package org.rcisoft.business.memLeaveMessage.service.impl; ...@@ -3,14 +3,22 @@ package org.rcisoft.business.memLeaveMessage.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.rcisoft.business.memInfo.bean.MemberInfoRedisBean;
import org.rcisoft.business.memLeaveMessage.bean.MemLeaveMessageRedisBean;
import org.rcisoft.business.memLeaveMessage.dao.MemLeaveMessageRepository; import org.rcisoft.business.memLeaveMessage.dao.MemLeaveMessageRepository;
import org.rcisoft.business.memLeaveMessage.entity.*; import org.rcisoft.business.memLeaveMessage.entity.*;
import org.rcisoft.business.memLeaveMessage.service.MemLeaveMessageService; import org.rcisoft.business.memLeaveMessage.service.MemLeaveMessageService;
import org.rcisoft.core.exception.CyServiceException;
import org.rcisoft.core.model.CyPageInfo; import org.rcisoft.core.model.CyPageInfo;
import org.rcisoft.core.model.CyPersistModel; import org.rcisoft.core.model.CyPersistModel;
import org.rcisoft.core.service.CyRedisService;
import org.rcisoft.core.service.impl.CyRedisServiceImpl;
import org.rcisoft.core.util.CyIdGenUtil; import org.rcisoft.core.util.CyIdGenUtil;
import org.rcisoft.core.util.CyUserUtil; import org.rcisoft.core.util.CyUserUtil;
import org.rcisoft.sys.dictionary.entity.DictData;
import org.rcisoft.sys.dictionary.service.impl.DictionaryServiceImpl;
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;
...@@ -34,6 +42,15 @@ public class MemLeaveMessageServiceImpl extends ServiceImpl<MemLeaveMessageRepos ...@@ -34,6 +42,15 @@ public class MemLeaveMessageServiceImpl extends ServiceImpl<MemLeaveMessageRepos
@Autowired @Autowired
private MemLeaveMessageRepository memLeaveMessageRepository; private MemLeaveMessageRepository memLeaveMessageRepository;
@Autowired
private DictionaryServiceImpl dictionaryService;
@Autowired
private StringRedisTemplate redisTemplate;
@Autowired
private CyRedisServiceImpl cyRedisServiceImpl;
/** /**
* 留言 * 留言
* @param memLeaveMessage * @param memLeaveMessage
...@@ -42,39 +59,62 @@ public class MemLeaveMessageServiceImpl extends ServiceImpl<MemLeaveMessageRepos ...@@ -42,39 +59,62 @@ public class MemLeaveMessageServiceImpl extends ServiceImpl<MemLeaveMessageRepos
@Override @Override
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT) @Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT)
public CyPersistModel leaveMessage(MemLeaveMessage memLeaveMessage) { public CyPersistModel leaveMessage(MemLeaveMessage memLeaveMessage) {
//先插入到留言表 String userId = CyUserUtil.getAuthenBusinessId();
memLeaveMessage.setCreateBy(Integer.valueOf(CyUserUtil.getAuthenBusinessId())); //获取留言每天限制条数
memLeaveMessage.setUpdateBy(Integer.valueOf(CyUserUtil.getAuthenBusinessId())); List<DictData> articleConfig = dictionaryService.selectByTypes("leave_message_config");
memLeaveMessage.setCreateDate(new Date()); DictData dictData = articleConfig.stream().filter(item -> item.getDictLabel().equals("leave_message_limit_count")).findFirst().orElse(null);
memLeaveMessage.setUpdateDate(new Date()); Integer leaveMessageLimitCount = Integer.valueOf(dictData.getDictValue());
int line = memLeaveMessageRepository.insert(memLeaveMessage); //判断留言次数是否大于等于leaveMessageLimitCount
//修改对话表 Object redisLeaveMessageCount = cyRedisServiceImpl.hget(MemLeaveMessageRedisBean.USER_LEAVE_MESSAGE + userId, String.valueOf(memLeaveMessage.getTargetId()));
//查询是否已存在对话 if (redisLeaveMessageCount != null && Integer.parseInt(redisLeaveMessageCount.toString()) >= leaveMessageLimitCount){
MemLeaveMessage memUserTalks = memLeaveMessageRepository.queryUserTalk(Integer.valueOf(CyUserUtil.getAuthenBusinessId()),memLeaveMessage.getTargetId()); //超出留言次数
if (memUserTalks != null){ throw new CyServiceException("留言次数超出限制");
//如果已经存在该对话,则只更新信息
MemLeaveMessage memUserTalk = new MemLeaveMessage();
memUserTalk.setBusinessId(memUserTalks.getBusinessId());
memUserTalk.setCreateBy(Integer.valueOf(CyUserUtil.getAuthenBusinessId()));
memUserTalk.setUpdateBy(Integer.valueOf(CyUserUtil.getAuthenBusinessId()));
memUserTalk.setTargetId(memLeaveMessage.getTargetId());
memUserTalk.setContent(memLeaveMessage.getContent());
memUserTalk.setCreateDate(new Date());
memUserTalk.setUpdateDate(new Date());
memUserTalk.setDelStatus("0");
int line1 = memLeaveMessageRepository.updateUserTalk(memUserTalk);
} else { } else {
MemLeaveMessage memUserTalk = new MemLeaveMessage(); //未超出留言次数
memUserTalk.setCreateBy(Integer.valueOf(CyUserUtil.getAuthenBusinessId())); //先插入到留言表
memUserTalk.setUpdateBy(Integer.valueOf(CyUserUtil.getAuthenBusinessId())); memLeaveMessage.setCreateBy(Integer.valueOf(userId));
memUserTalk.setCreateDate(new Date()); memLeaveMessage.setUpdateBy(Integer.valueOf(userId));
memUserTalk.setUpdateDate(new Date()); memLeaveMessage.setCreateDate(new Date());
memUserTalk.setTargetId(memLeaveMessage.getTargetId()); memLeaveMessage.setUpdateDate(new Date());
memUserTalk.setContent(memLeaveMessage.getContent()); int line = memLeaveMessageRepository.insert(memLeaveMessage);
memUserTalk.setDelStatus("0"); //修改对话表
int line1 = memLeaveMessageRepository.insertUserTalk(memUserTalk); //查询是否已存在对话
MemLeaveMessage memUserTalks = memLeaveMessageRepository.queryUserTalk(Integer.valueOf(userId),memLeaveMessage.getTargetId());
if (memUserTalks != null){
//如果已经存在该对话,则只更新信息
MemLeaveMessage memUserTalk = new MemLeaveMessage();
memUserTalk.setBusinessId(memUserTalks.getBusinessId());
memUserTalk.setCreateBy(Integer.valueOf(userId));
memUserTalk.setUpdateBy(Integer.valueOf(userId));
memUserTalk.setTargetId(memLeaveMessage.getTargetId());
memUserTalk.setContent(memLeaveMessage.getContent());
memUserTalk.setCreateDate(new Date());
memUserTalk.setUpdateDate(new Date());
memUserTalk.setDelStatus("0");
int line1 = memLeaveMessageRepository.updateUserTalk(memUserTalk);
if (line1 > 0) {
//插入对话表成功,则更新redis
this.redisTemplate.opsForHash().increment(MemLeaveMessageRedisBean.USER_LEAVE_MESSAGE + userId, String.valueOf(memLeaveMessage.getTargetId()), (double) 1L);
//底下的暂时有bug 暂时无法解决
//cyRedisServiceImpl.hincr(MemLeaveMessageRedisBean.USER_LEAVE_MESSAGE + userId, String.valueOf(memLeaveMessage.getTargetId()), (double) 1L);
}
} else {
MemLeaveMessage memUserTalk = new MemLeaveMessage();
memUserTalk.setCreateBy(Integer.valueOf(userId));
memUserTalk.setUpdateBy(Integer.valueOf(userId));
memUserTalk.setCreateDate(new Date());
memUserTalk.setUpdateDate(new Date());
memUserTalk.setTargetId(memLeaveMessage.getTargetId());
memUserTalk.setContent(memLeaveMessage.getContent());
memUserTalk.setDelStatus("0");
int line1 = memLeaveMessageRepository.insertUserTalk(memUserTalk);
if (line1 > 0){
//插入对话表成功,则更新redis
cyRedisServiceImpl.hset(MemLeaveMessageRedisBean.USER_LEAVE_MESSAGE + userId, String.valueOf(memLeaveMessage.getTargetId()), 1L);
}
}
return new CyPersistModel(line);
} }
return new CyPersistModel(line);
} }
/** /**
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<mapper namespace="org.rcisoft.business.memLeaveMessage.dao.MemLeaveMessageRepository"> <mapper namespace="org.rcisoft.business.memLeaveMessage.dao.MemLeaveMessageRepository">
<insert id="insertUserTalk"> <insert id="insertUserTalk">
insert into mem_user_talk (target_id,create_by,create_date,update_by,update_date,content,del_status) insert into mem_user_talk (target_id,create_by,create_date,update_by,update_date,content,del_status)
values(#{targetId},#{createBy},#{createDate},#{createBy},#{updateDate},#{content}) values(#{targetId},#{createBy},#{createDate},#{createBy},#{updateDate},#{content},#{delStatus})
</insert> </insert>
<update id="updateUserTalk"> <update id="updateUserTalk">
update mem_user_talk update mem_user_talk
......
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