博客变为论坛,修改编辑器为正常编辑器
This commit is contained in:
@@ -3,6 +3,10 @@ package com.quinn.common;
|
||||
public interface QuinnConstant {
|
||||
|
||||
String LINK_SUFFIX = ".";
|
||||
/**
|
||||
* REDIS PATTEN
|
||||
*/
|
||||
String REDIS_PATTEN = "*";
|
||||
|
||||
String GUN = "The emperor's new clothes";
|
||||
|
||||
|
||||
@@ -113,7 +113,7 @@ public class SourceController {
|
||||
*/
|
||||
@GetMapping("/source/view/{sid}")
|
||||
public String read(@PathVariable("sid") String sid, Model model){
|
||||
Source source = sourceService.getOne(new QueryWrapper<Source>().eq("id", sid));
|
||||
Source source = sourceService.hotResource(sid);
|
||||
if(source != null){
|
||||
source.setSourceLink(QuinnConstant.GUN);
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@ public class UserController {
|
||||
public String userIndex(@PathVariable String uid, Model model){
|
||||
// 用户信息回填
|
||||
userInfoCallBack(uid,model);
|
||||
// 用户的博客列表
|
||||
// 用户的论坛列表
|
||||
Page<Blog> pageParam = new Page<>(1, 10);
|
||||
blogService.page(pageParam,new QueryWrapper<Blog>().eq("author_id", uid)
|
||||
.orderByDesc("gmt_create"));
|
||||
@@ -66,7 +66,7 @@ public class UserController {
|
||||
Model model){
|
||||
// 用户信息回填
|
||||
userInfoCallBack(uid,model);
|
||||
// 用户的博客列表
|
||||
// 用户的论坛列表
|
||||
if (page < 1){
|
||||
page = 1;
|
||||
}
|
||||
@@ -137,7 +137,7 @@ public class UserController {
|
||||
String[] hobbys = userInfo.getHobby().split(",");
|
||||
model.addAttribute("infoHobbys",hobbys);
|
||||
}
|
||||
// 获取用户的问题,博客,回复数
|
||||
// 获取用户的问题,论坛,回复数
|
||||
int blogCount = blogService.count(new QueryWrapper<Blog>().eq("author_id", uid));
|
||||
int questionCount = questionService.count(new QueryWrapper<Question>().eq("author_id", uid));
|
||||
int commentCount = commentService.count(new QueryWrapper<Comment>().eq("user_id", uid));
|
||||
|
||||
@@ -58,7 +58,7 @@ public class UserInfoController {
|
||||
String[] hobbys = userInfo.getHobby().split(",");
|
||||
model.addAttribute("infoHobbys",hobbys);
|
||||
}
|
||||
// 获取用户的问题,博客,回复数
|
||||
// 获取用户的问题,论坛,回复数
|
||||
int blogCount = blogService.count(new QueryWrapper<Blog>().eq("author_id", uid));
|
||||
int questionCount = questionService.count(new QueryWrapper<Question>().eq("author_id", uid));
|
||||
int commentCount = commentService.count(new QueryWrapper<Comment>().eq("user_id", uid));
|
||||
|
||||
@@ -32,13 +32,13 @@ public class Blog implements Serializable {
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Integer id;
|
||||
|
||||
@ApiModelProperty(value = "博客id")
|
||||
@ApiModelProperty(value = "论坛id")
|
||||
private String bid;
|
||||
|
||||
@ApiModelProperty(value = "博客标题")
|
||||
@ApiModelProperty(value = "论坛标题")
|
||||
private String title;
|
||||
|
||||
@ApiModelProperty(value = "博客内容")
|
||||
@ApiModelProperty(value = "论坛内容")
|
||||
private String content;
|
||||
|
||||
@ApiModelProperty(value = "排序 0 普通 1 置顶")
|
||||
|
||||
@@ -31,7 +31,7 @@ public class BlogCategory implements Serializable {
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Integer id;
|
||||
|
||||
@ApiModelProperty(value = "博客分类")
|
||||
@ApiModelProperty(value = "论坛分类")
|
||||
private String category;
|
||||
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ public class Comment implements Serializable {
|
||||
@ApiModelProperty(value = "评论唯一id")
|
||||
private String commentId;
|
||||
|
||||
@ApiModelProperty(value = "1博客 2问答")
|
||||
@ApiModelProperty(value = "1论坛 2问答")
|
||||
private Integer topicCategory;
|
||||
|
||||
@ApiModelProperty(value = "评论主题id")
|
||||
|
||||
@@ -12,7 +12,7 @@ import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
*
|
||||
*
|
||||
* </p>
|
||||
*
|
||||
* @author limqsh
|
||||
@@ -31,7 +31,7 @@ public class SourceCategory implements Serializable {
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Integer id;
|
||||
|
||||
@ApiModelProperty(value = "博客分类")
|
||||
@ApiModelProperty(value = "论坛分类")
|
||||
private String category;
|
||||
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
*
|
||||
*
|
||||
* </p>
|
||||
*
|
||||
* @author limqsh
|
||||
@@ -35,7 +35,7 @@ public class SourceComment implements Serializable {
|
||||
@ApiModelProperty(value = "评论唯一id")
|
||||
private String commentId;
|
||||
|
||||
@ApiModelProperty(value = "1博客 2问答")
|
||||
@ApiModelProperty(value = "1论坛 2问答")
|
||||
private Integer topicCategory;
|
||||
|
||||
@ApiModelProperty(value = "评论主题id")
|
||||
|
||||
@@ -17,6 +17,19 @@ import java.io.OutputStream;
|
||||
*/
|
||||
public interface SourceService extends IService<Source> {
|
||||
|
||||
/**
|
||||
* 下载对应的资源
|
||||
* @param outputStream
|
||||
* @param source
|
||||
* @throws IOException
|
||||
*/
|
||||
void downloadSource(ServletOutputStream outputStream, Source source) throws IOException;
|
||||
|
||||
/**
|
||||
* 点击对应的资源
|
||||
* @throws IOException
|
||||
* @return
|
||||
*/
|
||||
Source hotResource(String sid);
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package com.quinn.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.quinn.common.QuinnConstant;
|
||||
import com.quinn.pojo.Source;
|
||||
import com.quinn.mapper.SourceMapper;
|
||||
import com.quinn.service.SourceService;
|
||||
@@ -7,6 +9,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.quinn.utils.OSSClientUtil;
|
||||
import com.quinn.utils.RedisUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.ServletOutputStream;
|
||||
@@ -51,19 +54,26 @@ public class SourceServiceImpl extends ServiceImpl<SourceMapper, Source> impleme
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Source hotResource(String sid) {
|
||||
Source source = getOne(new QueryWrapper<Source>().eq("id", sid));
|
||||
addDownLoadRecord(source);
|
||||
return source;
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新页码
|
||||
* @param source
|
||||
*/
|
||||
private void addDownLoadRecord(Source source) {
|
||||
// Integer downLoadTime = (Integer) redisUtils.get(QuinnConstant.SOURCE_KEY + source.getId());
|
||||
// int downTimes = 0;
|
||||
// if (StringUtils.isEmpty(downLoadTime)){
|
||||
// downTimes = source.getDownRecord() + 1;
|
||||
// }else {
|
||||
// downTimes = downLoadTime + 1;
|
||||
// }
|
||||
// redisUtils.set(QuinnConstant.SOURCE_KEY + source.getId(),downTimes);
|
||||
String downLoadTime = redisUtils.get(QuinnConstant.SOURCE_KEY + source.getId());
|
||||
int downTimes = 0;
|
||||
if (StringUtils.isEmpty(downLoadTime)){
|
||||
downTimes = source.getDownRecord() + 1;
|
||||
}else {
|
||||
downTimes = Integer.parseInt(downLoadTime) + 1;
|
||||
}
|
||||
redisUtils.set(QuinnConstant.SOURCE_KEY + source.getId(),downTimes + "");
|
||||
source.setDownRecord(source.getDownRecord() + 1);
|
||||
updateById(source);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.quinn.task;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.quinn.common.QuinnConstant;
|
||||
import com.quinn.pojo.Source;
|
||||
import com.quinn.service.SourceService;
|
||||
@@ -16,7 +17,7 @@ import java.util.List;
|
||||
*
|
||||
* @author limqsh
|
||||
*/
|
||||
//@Component
|
||||
@Component
|
||||
public class UpdateViewTask {
|
||||
|
||||
@Resource
|
||||
@@ -28,18 +29,24 @@ public class UpdateViewTask {
|
||||
/**
|
||||
* 每小时执行一次
|
||||
*/
|
||||
// @Scheduled(cron = "0 0 */1 * * ?")
|
||||
@Scheduled(cron = "0 0 */1 * * ?")
|
||||
public void execute(){
|
||||
List<Source> list = sourceService.list(null);
|
||||
if (!CollectionUtils.isEmpty(list)){
|
||||
list.forEach(x->{
|
||||
String downTimes = (String) redisUtils.get(QuinnConstant.SOURCE_KEY + x.getId());
|
||||
if (!StringUtils.isEmpty(downTimes)){
|
||||
x.setDownRecord(Integer.parseInt(downTimes));
|
||||
sourceService.updateById(x);
|
||||
List<String> keys = redisUtils.scan(QuinnConstant.SOURCE_KEY);
|
||||
// List<Source> list = sourceService.list(null);
|
||||
if (!CollectionUtils.isEmpty(keys)){
|
||||
keys.forEach(x->{
|
||||
Source source = sourceService.getById(getIdFromKey(x,QuinnConstant.SOURCE_KEY));
|
||||
if (source != null && !StringUtils.isEmpty(source.getSourceName())){
|
||||
source.setDownRecord(Integer.parseInt(redisUtils.get(x)));
|
||||
sourceService.updateById(source);
|
||||
redisUtils.del(x);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private String getIdFromKey(String key,String keyType){
|
||||
return key.substring(keyType.length());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -19,7 +19,6 @@ import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Sets;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.data.redis.connection.RedisConnection;
|
||||
import org.springframework.data.redis.connection.RedisConnectionFactory;
|
||||
import org.springframework.data.redis.core.*;
|
||||
@@ -34,9 +33,9 @@ import java.util.concurrent.TimeUnit;
|
||||
@Component
|
||||
public class RedisUtils {
|
||||
private static final Logger log = LoggerFactory.getLogger(RedisUtils.class);
|
||||
private RedisTemplate<Object, Object> redisTemplate;
|
||||
private StringRedisTemplate redisTemplate;
|
||||
|
||||
public RedisUtils(RedisTemplate<Object, Object> redisTemplate) {
|
||||
public RedisUtils(StringRedisTemplate redisTemplate) {
|
||||
this.redisTemplate = redisTemplate;
|
||||
}
|
||||
|
||||
@@ -83,7 +82,7 @@ public class RedisUtils {
|
||||
* @param key 键 不能为null
|
||||
* @return 时间(秒) 返回0代表为永久有效
|
||||
*/
|
||||
public long getExpire(Object key) {
|
||||
public long getExpire(String key) {
|
||||
return redisTemplate.getExpire(key, TimeUnit.SECONDS);
|
||||
}
|
||||
|
||||
@@ -96,7 +95,7 @@ public class RedisUtils {
|
||||
public List<String> scan(String pattern) {
|
||||
ScanOptions options = ScanOptions.scanOptions().match(pattern).build();
|
||||
RedisConnectionFactory factory = redisTemplate.getConnectionFactory();
|
||||
RedisConnection rc = Objects.requireNonNull(factory).getConnection();
|
||||
RedisConnection rc = factory.getConnection();
|
||||
Cursor<byte[]> cursor = rc.scan(options);
|
||||
List<String> result = new ArrayList<>();
|
||||
while (cursor.hasNext()) {
|
||||
@@ -121,7 +120,7 @@ public class RedisUtils {
|
||||
public List<String> findKeysForPage(String patternKey, int page, int size) {
|
||||
ScanOptions options = ScanOptions.scanOptions().match(patternKey).build();
|
||||
RedisConnectionFactory factory = redisTemplate.getConnectionFactory();
|
||||
RedisConnection rc = Objects.requireNonNull(factory).getConnection();
|
||||
RedisConnection rc = factory.getConnection();
|
||||
Cursor<byte[]> cursor = rc.scan(options);
|
||||
List<String> result = new ArrayList<>(size);
|
||||
int tmpIndex = 0;
|
||||
@@ -176,7 +175,7 @@ public class RedisUtils {
|
||||
log.debug(new StringBuilder("删除缓存:").append(keys[0]).append(",结果:").append(result).toString());
|
||||
log.debug("--------------------------------------------");
|
||||
} else {
|
||||
Set<Object> keySet = new HashSet<>();
|
||||
Set<String> keySet = new HashSet<>();
|
||||
for (String key : keys) {
|
||||
keySet.addAll(redisTemplate.keys(key));
|
||||
}
|
||||
@@ -197,7 +196,7 @@ public class RedisUtils {
|
||||
* @param key 键
|
||||
* @return 值
|
||||
*/
|
||||
public Object get(String key) {
|
||||
public String get(String key) {
|
||||
return key == null ? null : redisTemplate.opsForValue().get(key);
|
||||
}
|
||||
|
||||
@@ -207,7 +206,7 @@ public class RedisUtils {
|
||||
* @param keys
|
||||
* @return
|
||||
*/
|
||||
public List<Object> multiGet(List<String> keys) {
|
||||
public List<String> multiGet(List<String> keys) {
|
||||
List list = redisTemplate.opsForValue().multiGet(Sets.newHashSet(keys));
|
||||
List resultList = Lists.newArrayList();
|
||||
Optional.ofNullable(list).ifPresent(e-> list.forEach(ele-> Optional.ofNullable(ele).ifPresent(resultList::add)));
|
||||
@@ -221,7 +220,7 @@ public class RedisUtils {
|
||||
* @param value 值
|
||||
* @return true成功 false失败
|
||||
*/
|
||||
public boolean set(String key, Object value) {
|
||||
public boolean set(String key, String value) {
|
||||
try {
|
||||
redisTemplate.opsForValue().set(key, value);
|
||||
return true;
|
||||
@@ -239,7 +238,7 @@ public class RedisUtils {
|
||||
* @param time 时间(秒) time要大于0 如果time小于等于0 将设置无限期
|
||||
* @return true成功 false 失败
|
||||
*/
|
||||
public boolean set(String key, Object value, long time) {
|
||||
public boolean set(String key, String value, long time) {
|
||||
try {
|
||||
if (time > 0) {
|
||||
redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);
|
||||
@@ -262,7 +261,7 @@ public class RedisUtils {
|
||||
* @param timeUnit 类型
|
||||
* @return true成功 false 失败
|
||||
*/
|
||||
public boolean set(String key, Object value, long time, TimeUnit timeUnit) {
|
||||
public boolean set(String key, String value, long time, TimeUnit timeUnit) {
|
||||
try {
|
||||
if (time > 0) {
|
||||
redisTemplate.opsForValue().set(key, value, time, timeUnit);
|
||||
@@ -307,7 +306,7 @@ public class RedisUtils {
|
||||
* @param map 对应多个键值
|
||||
* @return true 成功 false 失败
|
||||
*/
|
||||
public boolean hmset(String key, Map<String, Object> map) {
|
||||
public boolean hmset(String key, Map<String, String> map) {
|
||||
try {
|
||||
redisTemplate.opsForHash().putAll(key, map);
|
||||
return true;
|
||||
@@ -325,7 +324,7 @@ public class RedisUtils {
|
||||
* @param time 时间(秒)
|
||||
* @return true成功 false失败
|
||||
*/
|
||||
public boolean hmset(String key, Map<String, Object> map, long time) {
|
||||
public boolean hmset(String key, Map<String, String> map, long time) {
|
||||
try {
|
||||
redisTemplate.opsForHash().putAll(key, map);
|
||||
if (time > 0) {
|
||||
@@ -346,7 +345,7 @@ public class RedisUtils {
|
||||
* @param value 值
|
||||
* @return true 成功 false失败
|
||||
*/
|
||||
public boolean hset(String key, String item, Object value) {
|
||||
public boolean hset(String key, String item, String value) {
|
||||
try {
|
||||
redisTemplate.opsForHash().put(key, item, value);
|
||||
return true;
|
||||
@@ -365,7 +364,7 @@ public class RedisUtils {
|
||||
* @param time 时间(秒) 注意:如果已存在的hash表有时间,这里将会替换原有的时间
|
||||
* @return true 成功 false失败
|
||||
*/
|
||||
public boolean hset(String key, String item, Object value, long time) {
|
||||
public boolean hset(String key, String item, String value, long time) {
|
||||
try {
|
||||
redisTemplate.opsForHash().put(key, item, value);
|
||||
if (time > 0) {
|
||||
@@ -384,7 +383,7 @@ public class RedisUtils {
|
||||
* @param key 键 不能为null
|
||||
* @param item 项 可以使多个 不能为null
|
||||
*/
|
||||
public void hdel(String key, Object... item) {
|
||||
public void hdel(String key, String... item) {
|
||||
redisTemplate.opsForHash().delete(key, item);
|
||||
}
|
||||
|
||||
@@ -431,7 +430,7 @@ public class RedisUtils {
|
||||
* @param key 键
|
||||
* @return
|
||||
*/
|
||||
public Set<Object> sGet(String key) {
|
||||
public Set<String> sGet(String key) {
|
||||
try {
|
||||
return redisTemplate.opsForSet().members(key);
|
||||
} catch (Exception e) {
|
||||
@@ -447,7 +446,7 @@ public class RedisUtils {
|
||||
* @param value 值
|
||||
* @return true 存在 false不存在
|
||||
*/
|
||||
public boolean sHasKey(String key, Object value) {
|
||||
public boolean sHasKey(String key, String value) {
|
||||
try {
|
||||
return redisTemplate.opsForSet().isMember(key, value);
|
||||
} catch (Exception e) {
|
||||
@@ -463,7 +462,7 @@ public class RedisUtils {
|
||||
* @param values 值 可以是多个
|
||||
* @return 成功个数
|
||||
*/
|
||||
public long sSet(String key, Object... values) {
|
||||
public long sSet(String key, String... values) {
|
||||
try {
|
||||
return redisTemplate.opsForSet().add(key, values);
|
||||
} catch (Exception e) {
|
||||
@@ -480,7 +479,7 @@ public class RedisUtils {
|
||||
* @param values 值 可以是多个
|
||||
* @return 成功个数
|
||||
*/
|
||||
public long sSetAndTime(String key, long time, Object... values) {
|
||||
public long sSetAndTime(String key, long time, String... values) {
|
||||
try {
|
||||
Long count = redisTemplate.opsForSet().add(key, values);
|
||||
if (time > 0) {
|
||||
@@ -515,7 +514,7 @@ public class RedisUtils {
|
||||
* @param values 值 可以是多个
|
||||
* @return 移除的个数
|
||||
*/
|
||||
public long setRemove(String key, Object... values) {
|
||||
public long setRemove(String key, String... values) {
|
||||
try {
|
||||
Long count = redisTemplate.opsForSet().remove(key, values);
|
||||
return count;
|
||||
@@ -535,7 +534,7 @@ public class RedisUtils {
|
||||
* @param end 结束 0 到 -1代表所有值
|
||||
* @return
|
||||
*/
|
||||
public List<Object> lGet(String key, long start, long end) {
|
||||
public List<String> lGet(String key, long start, long end) {
|
||||
try {
|
||||
return redisTemplate.opsForList().range(key, start, end);
|
||||
} catch (Exception e) {
|
||||
@@ -566,7 +565,7 @@ public class RedisUtils {
|
||||
* @param index 索引 index>=0时, 0 表头,1 第二个元素,依次类推;index<0时,-1,表尾,-2倒数第二个元素,依次类推
|
||||
* @return
|
||||
*/
|
||||
public Object lGetIndex(String key, long index) {
|
||||
public String lGetIndex(String key, long index) {
|
||||
try {
|
||||
return redisTemplate.opsForList().index(key, index);
|
||||
} catch (Exception e) {
|
||||
@@ -582,7 +581,7 @@ public class RedisUtils {
|
||||
* @param value 值
|
||||
* @return
|
||||
*/
|
||||
public boolean lSet(String key, Object value) {
|
||||
public boolean lSet(String key, String value) {
|
||||
try {
|
||||
redisTemplate.opsForList().rightPush(key, value);
|
||||
return true;
|
||||
@@ -600,7 +599,7 @@ public class RedisUtils {
|
||||
* @param time 时间(秒)
|
||||
* @return
|
||||
*/
|
||||
public boolean lSet(String key, Object value, long time) {
|
||||
public boolean lSet(String key, String value, long time) {
|
||||
try {
|
||||
redisTemplate.opsForList().rightPush(key, value);
|
||||
if (time > 0) {
|
||||
@@ -620,7 +619,7 @@ public class RedisUtils {
|
||||
* @param value 值
|
||||
* @return
|
||||
*/
|
||||
public boolean lSet(String key, List<Object> value) {
|
||||
public boolean lSet(String key, List<String> value) {
|
||||
try {
|
||||
redisTemplate.opsForList().rightPushAll(key, value);
|
||||
return true;
|
||||
@@ -638,7 +637,7 @@ public class RedisUtils {
|
||||
* @param time 时间(秒)
|
||||
* @return
|
||||
*/
|
||||
public boolean lSet(String key, List<Object> value, long time) {
|
||||
public boolean lSet(String key, List<String> value, long time) {
|
||||
try {
|
||||
redisTemplate.opsForList().rightPushAll(key, value);
|
||||
if (time > 0) {
|
||||
@@ -659,7 +658,7 @@ public class RedisUtils {
|
||||
* @param value 值
|
||||
* @return /
|
||||
*/
|
||||
public boolean lUpdateIndex(String key, long index, Object value) {
|
||||
public boolean lUpdateIndex(String key, long index, String value) {
|
||||
try {
|
||||
redisTemplate.opsForList().set(key, index, value);
|
||||
return true;
|
||||
@@ -677,7 +676,7 @@ public class RedisUtils {
|
||||
* @param value 值
|
||||
* @return 移除的个数
|
||||
*/
|
||||
public long lRemove(String key, long count, Object value) {
|
||||
public long lRemove(String key, long count, String value) {
|
||||
try {
|
||||
return redisTemplate.opsForList().remove(key, count, value);
|
||||
} catch (Exception e) {
|
||||
@@ -691,7 +690,7 @@ public class RedisUtils {
|
||||
* @param ids id
|
||||
*/
|
||||
public void delByKeys(String prefix, Set<Long> ids) {
|
||||
Set<Object> keys = new HashSet<>();
|
||||
Set<String> keys = new HashSet<>();
|
||||
for (Long id : ids) {
|
||||
keys.addAll(redisTemplate.keys(new StringBuffer(prefix).append(id).toString()));
|
||||
}
|
||||
@@ -702,4 +701,5 @@ public class RedisUtils {
|
||||
log.debug("缓存删除数量:" + count + "个");
|
||||
log.debug("--------------------------------------------");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user