This commit is contained in:
2018-08-12 21:14:42 +08:00
parent ea421cc972
commit c96d10614a
67 changed files with 1474 additions and 188 deletions

View File

@@ -25,7 +25,7 @@ public class FileService extends BaseService {
String name = tmpFile.getName();
String suffix = name.substring(name.lastIndexOf("."));
String path = String.format(format, System.currentTimeMillis()) + suffix;
File destFile = new File((winos ? "E:/wk/redbbs/root/tem/" : dir) + path);
File destFile = new File((winos ? "D:/wk/_own/redbbs/root/tem/" : dir) + path);
destFile.getParentFile().mkdir();
if (!tmpFile.renameTo(destFile)){
try{

View File

@@ -0,0 +1,13 @@
package com.lxyer.bbs.mail;
import com.lxyer.bbs.base.BaseService;
/**
* 邮件服务
* Created by liangxianyou at 2018/5/13 9:45.
*/
public class MailService extends BaseService {
}

View File

@@ -0,0 +1,84 @@
package com.lxyer.bbs.weixin;
import com.lxyer.bbs.base.BaseService;
import com.lxyer.bbs.base.user.UserService;
import com.lxyer.bbs.comment.CommentService;
import com.lxyer.bbs.content.ContentService;
import org.redkale.net.http.RestMapping;
import org.redkale.net.http.RestService;
import org.redkale.util.Utility;
import org.redkalex.cache.RedisCacheSource;
import org.redkalex.weixin.WeiXinMPService;
import javax.annotation.Resource;
import java.io.File;
import java.security.MessageDigest;
import java.util.Arrays;
/**
* Created by JUECHENG at 2018/1/12 0:14.
*/
@RestService(name = "wx",automapping = true, comment = "微信管理")
public class WeiXinService extends BaseService{
private String mptoken = "redbbs_dev";
@Resource(name = "redis")
private RedisCacheSource cacheSource;
//用于微信登录
@Resource
private WeiXinMPService wxService;
@Resource
private ContentService contentService;
@Resource
private CommentService commentService;
@Resource
private UserService userService;
@Resource(name = "SERVER_ROOT")
protected File webroot;
@RestMapping(name = "verifyMPURL",auth = false, comment = "微信域名验证")
public long verifyMPURL(String msgSignature, String timeStamp, String nonce, String echoStr) {
String o = cacheSource.getString("300");
cacheSource.set("t", "");
long d = cacheSource.getLong("d", 0);
cacheSource.incr("d");
cacheSource.setExpireSeconds("d", 5);
Object t = cacheSource.getString("t");
/*String signature = sha1(mptoken, timeStamp, nonce);
if (!signature.equals(msgSignature)) throw new RuntimeException("signature verification error");
return echoStr;*/
return d;
}
/**
* 用SHA1算法生成安全签名
* <p>
* @param strings String[]
*
* @return 安全签名
*/
protected static String sha1(String... strings) {
try {
Arrays.sort(strings);
MessageDigest md = MessageDigest.getInstance("SHA-1");
for (String s : strings) md.update(s.getBytes());
return Utility.binToHexString(md.digest());
} catch (Exception e) {
throw new RuntimeException("SHA encryption to generate signature failure", e);
}
}
}

View File

@@ -0,0 +1,16 @@
package com.lxyer.redim;
import com.lxyer.redim.impl.ImFriendServiceImpl;
import org.redkale.boot.Application;
import org.redkale.boot.ApplicationListener;
/**
* @author: liangxianyou at 2018/8/10 22:51.
*/
public class RedbbsListener implements ApplicationListener {
@Override
public void preStart(Application application) {
ImFriendServiceImpl.application = application;
}
}

View File

@@ -0,0 +1,122 @@
package com.lxyer.redim.impl;
import com.jfinal.kit.Kv;
import com.lxyer.base.JBean;
import com.lxyer.bbs.base.BaseService;
import com.lxyer.bbs.base.user.UserInfo;
import com.lxyer.bbs.base.user.UserRecord;
import com.lxyer.bbs.base.user.UserService;
import com.lxyer.redim.service.ImFriendService;
import org.redkale.boot.Application;
import org.redkale.net.TransportFactory;
import org.redkale.net.TransportGroupInfo;
import org.redkale.net.http.RestService;
import org.redkale.source.FilterExpress;
import org.redkale.source.FilterNode;
import org.redkale.util.ResourceType;
import javax.annotation.Resource;
import java.net.InetSocketAddress;
import java.util.ArrayList;
import java.util.List;
@ResourceType(ImFriendService.class)
@RestService(name = "imfriend",automapping = true, comment = "好友管理")
public class ImFriendServiceImpl extends BaseService implements ImFriendService {
@Resource
UserService userService;
@Resource
TransportFactory transportFactory;
@Resource
public static Application application;
@Override
public JBean friends(String sessionid) {
List<UserRecord> records = source.queryList(UserRecord.class, FilterNode.create("status", FilterExpress.NOTEQUAL, -10));
Kv data = Kv.create();
//mine
Kv mine = Kv.by("username", "游客").set("id", "0").set("sign","").set("status", "online").set("avatar", "/res/images/avatar/13.jpg");
UserInfo userInfo = userService.current(sessionid);
if (userInfo != null){
mine.set("username", userInfo.getNickname());
mine.set("id", userInfo.getUserid());
mine.set("sign", userInfo.getSign());
mine.set("avatar", userInfo.getAvatar());
mine.set("status", "online");
}
//friend
List<Kv> friend = new ArrayList<>();
List<Kv> group = new ArrayList<>();
List list = new ArrayList();
records.forEach(x->{
Kv _friend = Kv.by("id", x.getUserid());
_friend.set("username", x.getNickname());
_friend.set("sign", x.getSign());
_friend.set("avatar", x.getAvatar());
_friend.set("status", "online");
list.add(_friend);
});
friend.add(Kv.by("groupname", "默认分组").set("id", 1).set("online", list.size()).set("list", list));
group.add(Kv.by("groupname", "默认分组").set("id", 1).set("avatar", "/res/images/avatar/13.jpg"));
data.set("mine", mine).set("friend", friend).set("group", group);
return JBean.by(Kv.by("code", 0).set("msg", "").set("data", data));
}
@Override
public JBean friendList(String sessionid) {
/*SncpClient sncpClient = new SncpClient("", ImFriendService.class, this, transportFactory,
true, this.getClass(), new InetSocketAddress("192.168.227.1", 7070));*/
TransportFactory sncpTransportFactory = application.getSncpTransportFactory();
TransportGroupInfo groupInfo = sncpTransportFactory.findGroupInfo("ALL");
System.out.println(groupInfo.toString());
groupInfo.putAddress(new InetSocketAddress("120.24.230.60", 7070));
//sncpTransportFactory.addGroupInfo(groupInfo);
return friends(sessionid);
}
@Override
public JBean groups(String sessionid) {
return null;
}
@Override
public JBean itemSave(String sessionid) {
return null;
}
@Override
public JBean addFriend(String sessionid) {
return null;
}
@Override
public JBean groupSave(String sessionid) {
return null;
}
@Override
public JBean addGroup(String sessionid) {
return null;
}
}

View File

@@ -0,0 +1,93 @@
package com.lxyer.redim.impl;
import com.lxyer.base.JBean;
import com.lxyer.bbs.base.BaseService;
import com.lxyer.bbs.base.user.UserRecord;
import com.lxyer.redim.entity.MsgRecord;
import com.lxyer.redim.info.MsgInfo;
import com.lxyer.redim.service.ImMsgService;
import org.redkale.net.http.RestService;
import org.redkale.source.FilterNode;
import org.redkale.util.ResourceType;
import java.util.List;
/**
* @author: liangxianyou at 2018/8/12 13:10.
*/
@ResourceType(ImMsgService.class)
@RestService(name = "immsg",automapping = true, comment = "聊天记录管理")
public class ImMsgServiceImpl extends BaseService implements ImMsgService {
/**
* 消息入库
*
* @param msg
*/
@Override
public JBean insert(MsgRecord... msg) {
source.insertAsync(msg);
return JBean.ok();
}
/**
* 消息修改
*
* @param msg
*/
@Override
public JBean update(MsgRecord ... msg) {
source.updateAsync(msg);
return JBean.ok();
}
/**
* 历史消息
*
* @return
*/
@Override
public JBean list() {
return null;
}
/**
* 创建消息体
*
* @param msg
*/
@Override
public JBean<MsgInfo> createMsgInfo(MsgRecord msg) {
MsgInfo info = new MsgInfo();
int fromuserid = msg.getFromuserid();
UserRecord userRecord;
if (fromuserid > 0){
userRecord = source.find(UserRecord.class, fromuserid);
info.setUsername(userRecord.getUsername());
info.setAvatar(userRecord.getAvatar());
info.setType("friend");
}else {
info.setUsername("游客");
info.setAvatar("/res/images/avatar/12.jpg");
info.setType("friend");
}
info.setId(msg.getFromuserid());
info.setContent(msg.getContent());
info.setCid(msg.getMsgid());
info.setMine(false);
info.setFromid(msg.getFromuserid());
info.setTimestamp(msg.getCreatetime());
return JBean.by(info);
}
@Override
public JBean<List<MsgRecord>> offlineMsg(int userid) {
List<MsgRecord> records = source.queryList(MsgRecord.class, FilterNode.create("touserid", userid).and("status", 10));
return JBean.by(records);
}
}