Skip to content

Instantly share code, notes, and snippets.

@itang
Created October 23, 2012 09:55
Show Gist options
  • Save itang/3937962 to your computer and use it in GitHub Desktop.
Save itang/3937962 to your computer and use it in GitHub Desktop.
Circle Model
package demo;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* 圈子成员接口.
*
*/
interface CircleMember {
Long getId();
String getName();
// 获取成员对应的用户
List<User> getCircleUsers(Long circleId);
}
/**
* 圈子.
*
*/
public class Circle {
// @ManyToMany
private List<User> users = new ArrayList<User>();
// @ManyToMany
private List<Group> groups = new ArrayList<Group>();
// 获取圈子成员列表.
public List<CircleMember> getMembers() {
List<CircleMember> members = new ArrayList<CircleMember>();
members.addAll(users);
members.addAll(groups);
return members;
}
}
interface CircleService {
public Circle getCircleById(Long id);
// 发送圈子消息
public void sendMessage(Long circleId, Message message);
}
class CircleServiceImpl implements CircleService {
public Circle getCircleById(Long id) {
return null;
}
public void sendMessage(Long circleId, Message message) {
Circle circle = getCircleById(circleId);
// 检测circle != null
for (CircleMember member : circle.getMembers()) {
if (member instanceof User) {
// 如果成员是用户
} else if (member instanceof Group) {
// 如果成员是组织机构
}
List<User> users = member.getCircleUsers(circleId);
for (User user : users) {
doSendMessage(user, message);
}
}
}
private void doSendMessage(User user, Message message) {
// TODO
}
}
/**
* 用户.
*
*/
// @Entity
class User implements CircleMember {
// 用户加入的圈子
// @ManyToMany
private List<Circle> circles = new ArrayList<Circle>();
public Long getId() {
return null;
}
public String getName() {
return null;
}
public List<User> getCircleUsers(Long circleId) {
return Arrays.asList(this);
}
public List<Circle> getCircles() {
return circles;
}
}
/**
* 分组.
*
* (包括机构、企业)
*
*/
// @Entity
class Group implements CircleMember {
public Long getId() {
return null;
}
public String getName() {
return null;
}
public List<User> getCircleUsers(Long circleId) {
// TODO 通过角色匹配等方式获取此"分组" 对应的用户
return null;
}
}
/**
* 消息.
*
*/
// @Entity
class Message {
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment