| | |
| | | import com.yeshi.fanli.entity.bus.user.ThreeSale;
|
| | | import com.yeshi.fanli.entity.bus.user.ThreeSaleExtraInfo;
|
| | | import com.yeshi.fanli.entity.bus.user.UserInfo;
|
| | | import com.yeshi.fanli.exception.ThreeSaleException;
|
| | | import com.yeshi.fanli.service.inter.config.InviteGetMoneyService;
|
| | | import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService;
|
| | | import com.yeshi.fanli.service.inter.hongbao.ThreeSaleSerivce;
|
| | | import com.yeshi.fanli.service.inter.msg.UserInviteMsgNotificationService;
|
| | | import com.yeshi.fanli.service.inter.user.UserInfoService;
|
| | | import com.yeshi.fanli.util.Constant;
|
| | | import com.yeshi.fanli.util.StringUtil;
|
| | |
| | |
|
| | | @Resource
|
| | | private UserInfoMapper userInfoMapper;
|
| | | |
| | |
|
| | | @Resource
|
| | | private ThreeSaleMapper threeSaleMapper;
|
| | |
|
| | | |
| | | |
| | | @Resource
|
| | | private UserInviteMsgNotificationService userInviteMsgNotificationService;
|
| | |
|
| | | public UserInfo getBoss(final long uid) {
|
| | | return (UserInfo) dao.excute(new HibernateCallback<UserInfo>() {
|
| | |
| | | }
|
| | |
|
| | | @Transactional
|
| | | public void bind(UserInfo invitee, UserInfo inviter) {
|
| | | ThreeSale threeSale = new ThreeSale();
|
| | | threeSale.setBoss(inviter);
|
| | | threeSale.setWorker(invitee);
|
| | | threeSale.setState(false);
|
| | | threeSale.setCreateTime(System.currentTimeMillis());
|
| | | dao.save(threeSale);
|
| | | public void bind(UserInfo invitee, UserInfo inviter) throws ThreeSaleException {
|
| | | if (invitee == null || inviter == null)
|
| | | throw new ThreeSaleException(1, "用户信息为空");
|
| | | if (invitee.getId() == null)// 该用户还不存在
|
| | | {
|
| | | // 保存用户
|
| | | UserInfo inviteeUser = userInfoService.addUser(invitee, Constant.APPID);
|
| | | if (inviteeUser == null)
|
| | | throw new ThreeSaleException(2, "创建用户失败");
|
| | | // 保存关系
|
| | | ThreeSale threeSale = new ThreeSale();
|
| | | threeSale.setBoss(inviter);
|
| | | threeSale.setCreateTime(java.lang.System.currentTimeMillis());
|
| | | threeSale.setExpire(ThreeSale.EXPIRE_NORMAL);
|
| | | threeSale.setState(false);
|
| | | threeSale.setUpdateTime(java.lang.System.currentTimeMillis());
|
| | | threeSale.setWorker(inviteeUser);
|
| | | threeSaleMapper.insertSelective(threeSale);
|
| | | |
| | | //创建通知
|
| | | userInviteMsgNotificationService.inviteScan(inviter.getId(), threeSale);
|
| | | |
| | | |
| | | } else {// 是已经存在的用户
|
| | |
|
| | | // 用户已经存在我们的用户库中
|
| | | if (invitee.getLastLoginTime() == null || invitee.getLastLoginTime() == 0L) {
|
| | | // 用户未登录
|
| | | int outOfDateCount = 0;// 过期数量
|
| | | // 查询邀请关系
|
| | | List<ThreeSale> list = listByWorkerId(invitee.getId());
|
| | | if (list != null && list.size() > 0) {
|
| | | for (ThreeSale ts : list) {
|
| | | if (!ts.getState() && ts.getExpire() == ThreeSale.EXPIRE_OUTOFDATE) {
|
| | | outOfDateCount++;
|
| | | }
|
| | | }
|
| | | // 全部是失效状态
|
| | | if (outOfDateCount == list.size()) {
|
| | | // 可以确定关系
|
| | | ThreeSale threeSale = new ThreeSale();
|
| | | threeSale.setBoss(inviter);
|
| | | threeSale.setCreateTime(java.lang.System.currentTimeMillis());
|
| | | threeSale.setExpire(ThreeSale.EXPIRE_NORMAL);
|
| | | threeSale.setState(false);
|
| | | threeSale.setUpdateTime(java.lang.System.currentTimeMillis());
|
| | | threeSale.setWorker(invitee);
|
| | | threeSaleMapper.insertSelective(threeSale);
|
| | | userInviteMsgNotificationService.inviteScan(inviter.getId(), threeSale);
|
| | | // threeSaleSerivce.bind(invitee, inviter);
|
| | |
|
| | | } else {
|
| | | // 还存在有效的邀请,则不做处理
|
| | | }
|
| | | } else {
|
| | | // 用户未登录,又不存在邀请关系,不做处理
|
| | | }
|
| | | } else {
|
| | | // 已经登录,不做处理
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | @Transactional
|
| | | public void effective(UserInfo invitee) {
|
| | | List<ThreeSale> list = dao.list("from ThreeSale ts where ts.worker.id = ? ",
|
| | | List<ThreeSale> list = dao.list("from ThreeSale ts where ts.worker.id = ? and ts.state=0 and ts.expire=0",
|
| | | new Serializable[] { invitee.getId() });
|
| | | if (list.size() > 0) {
|
| | | ThreeSale threeSale = list.get(0);
|
| | | UserInfo inviter = threeSale.getBoss();
|
| | | threeSale.setState(true);
|
| | | threeSale.setSucceedTime(System.currentTimeMillis());
|
| | | dao.update(threeSale);
|
| | | if (inviter != null)
|
| | | reComputeUserRank(inviter.getId());
|
| | | //通知
|
| | | userInviteMsgNotificationService.inviteSuccess(inviter.getId(), threeSale);
|
| | | // }
|
| | | // });
|
| | | }
|
| | |
| | | }
|
| | |
|
| | | @Override
|
| | | public List<ThreeSale> queryMyFirstTeamList(int start, int count, String key, Long bossId){
|
| | | public List<ThreeSale> queryMyFirstTeamList(int start, int count, String key, Long bossId) {
|
| | | return threeSaleMapper.queryMyFirstTeamList(start, count, key, bossId);
|
| | | }
|
| | | |
| | |
|
| | | @Override
|
| | | public long queryCountMyFirstTeamList(String key, Long bossId){
|
| | | public long queryCountMyFirstTeamList(String key, Long bossId) {
|
| | | return threeSaleMapper.queryCountMyFirstTeamList(key, bossId);
|
| | | }
|
| | | |
| | |
|
| | | @Override
|
| | | public List<ThreeSale> queryMySecondTeamList(int start, int count, String key, Long bossId){
|
| | | public List<ThreeSale> queryMySecondTeamList(int start, int count, String key, Long bossId) {
|
| | | return threeSaleMapper.queryMySecondTeamList(start, count, key, bossId);
|
| | | }
|
| | | |
| | |
|
| | | @Override
|
| | | public long queryCountMySecondTeamList(String key, Long bossId){
|
| | | public long queryCountMySecondTeamList(String key, Long bossId) {
|
| | | return threeSaleMapper.queryCountMySecondTeamList(key, bossId);
|
| | | }
|
| | | |
| | | |
| | |
|
| | | @Override
|
| | | public int deleteByPrimaryKey(Long id){
|
| | | public int deleteByPrimaryKey(Long id) {
|
| | | return threeSaleMapper.deleteByPrimaryKey(id);
|
| | | }
|
| | | |
| | |
|
| | | @Override
|
| | | public List<Long> queryLongTimeFailed(int daysNum){
|
| | | public List<Long> queryLongTimeFailed(int daysNum) {
|
| | | return threeSaleMapper.queryLongTimeFailed(daysNum);
|
| | | }
|
| | | |
| | | |
| | |
|
| | | @Override
|
| | | public List<ThreeSale> queryLongTimeSuccess(int daysNum){
|
| | | public List<ThreeSale> queryLongTimeSuccess(int daysNum) {
|
| | | return threeSaleMapper.queryLongTimeSuccess(daysNum);
|
| | | }
|
| | | |
| | |
|
| | | @Override
|
| | | public int updateExpire(List<Long> list){
|
| | | public int updateExpire(List<Long> list) {
|
| | | return threeSaleMapper.updateExpire(list);
|
| | | }
|
| | |
|
| | |
| | | public long countSecondTeam(Long uid, Integer state) {
|
| | | return threeSaleMapper.countSecondTeam(uid, state);
|
| | | }
|
| | | |
| | |
|
| | | @Override
|
| | | public ThreeSale getMyBoss(Long uid) {
|
| | | return threeSaleMapper.getMyBoss(uid);
|
| | | }
|
| | | |
| | | |
| | |
|
| | | @Override
|
| | | public ThreeSale selectByPrimaryKey(Long id) {
|
| | | return threeSaleMapper.selectByPrimaryKey(id);
|
| | | }
|
| | | |
| | | |
| | |
|
| | | @Override
|
| | | public List<ThreeSale> listbyIdAndBossId(Long id, Long uid, Integer expire) {
|
| | | return threeSaleMapper.listbyIdAndBossId(id, uid, expire);
|
| | |
| | |
|
| | | @Override
|
| | | public JSONObject getMyFirstTeam(long start, int count, Long uid) {
|
| | | |
| | |
|
| | | List<ThreeSale> list = threeSaleMapper.listFirstTeam(start, count, uid);
|
| | | if (list == null) {
|
| | | list = new ArrayList<ThreeSale>();
|
| | | }
|
| | | |
| | |
|
| | | long countTotal = threeSaleMapper.countFirstTeam(uid, null);
|
| | | |
| | |
|
| | | return organizeTeam(countTotal, list);
|
| | | }
|
| | |
|
| | |
| | | if (list == null) {
|
| | | list = new ArrayList<ThreeSale>();
|
| | | }
|
| | | |
| | |
|
| | | long countTotal = threeSaleMapper.countSecondTeam(uid, null);
|
| | | |
| | |
|
| | | return organizeTeam(countTotal, list);
|
| | | }
|
| | |
|
| | | |
| | | |
| | | public JSONObject organizeTeam(long count, List<ThreeSale> list) {
|
| | | |
| | |
|
| | | JSONObject result = new JSONObject();
|
| | | |
| | | JSONArray resultArray = new JSONArray();
|
| | | |
| | | for (ThreeSale threeSale: list) {
|
| | |
|
| | | JSONArray resultArray = new JSONArray();
|
| | |
|
| | | for (ThreeSale threeSale : list) {
|
| | | JSONObject object = new JSONObject();
|
| | | SimpleDateFormat sdf = new SimpleDateFormat("MM.dd HH:mm");
|
| | | SimpleDateFormat format = new SimpleDateFormat("yyyy.MM.dd HH:mm");
|
| | | SimpleDateFormat formatYears = new SimpleDateFormat("yyyy");
|
| | | |
| | |
|
| | | Date todayTime = new Date();
|
| | | // 邀请id
|
| | | object.put("inviteId", threeSale.getId());
|
| | | |
| | |
|
| | | // 加入队列时间
|
| | | Long createTime = threeSale.getCreateTime();
|
| | | Date inviteTime = new Date(createTime);
|
| | | |
| | | if (formatYears.format(todayTime).equals(formatYears.format(inviteTime))) {
|
| | | // 本年
|
| | | object.put("inviteTime", sdf.format(inviteTime) + " 加入");
|
| | | } else {
|
| | | // 往年
|
| | | object.put("inviteTime", format.format(inviteTime) + " 加入");
|
| | | object.put("inviteTime", format.format(inviteTime) + " 加入");
|
| | |
|
| | | String memoName = "";
|
| | | ThreeSaleExtraInfo threeSaleExtraInfo = threeSale.getThreeSaleExtraInfo();
|
| | | if (threeSaleExtraInfo != null) {
|
| | | if (!StringUtil.isNullOrEmpty(threeSaleExtraInfo.getNickname())) {
|
| | | memoName = threeSaleExtraInfo.getNickname();
|
| | | }
|
| | | }
|
| | | |
| | | |
| | | String nickName = null;
|
| | | object.put("memoName", memoName);
|
| | |
|
| | | String nickName = "";
|
| | | String portrait = "";
|
| | | Long lastLoginTime = null;
|
| | | String portrait = null;
|
| | | Long workerId = null;
|
| | | |
| | |
|
| | | UserInfo worker = threeSale.getWorker();
|
| | | if (worker != null) {
|
| | | workerId = worker.getId();
|
| | | portrait = worker.getPortrait();
|
| | | lastLoginTime = worker.getLastLoginTime();
|
| | | nickName = worker.getNickName();
|
| | | }
|
| | | |
| | | object.put("workerId", workerId);
|
| | | object.put("nickName", nickName);
|
| | | object.put("portrait", portrait);
|
| | | |
| | | int type = 0;
|
| | |
|
| | | int state = 0;
|
| | | String fontColor1 = "#888888";
|
| | | String fontColor2 = "#F14242";
|
| | | |
| | | JSONArray array = new JSONArray();
|
| | |
|
| | | JSONArray array = new JSONArray();
|
| | | if (threeSale.getState()) {
|
| | | type = 1;
|
| | | state = 1;
|
| | | if (lastLoginTime == null) {
|
| | | lastLoginTime = threeSale.getCreateTime();
|
| | | }
|
| | | |
| | | JSONArray array1 = new JSONArray();
|
| | | array1.add(fontColor1);
|
| | | array1.add("最近登陆 " + sdf.format(lastLoginTime));
|
| | | |
| | | array.add(array1);
|
| | | |
| | | } else if ( threeSale.getExpire()!= null && (threeSale.getExpire() == 1 || threeSale.getExpire().equals(1))) {
|
| | | type = 2;
|
| | | JSONArray array1 = new JSONArray();
|
| | | array1.add(fontColor1);
|
| | | array1.add("已经脱离邀请关系");
|
| | | |
| | | array.add(array1);
|
| | |
|
| | | JSONObject contentJson = new JSONObject();
|
| | | contentJson.put("color", fontColor1);
|
| | |
|
| | | if (formatYears.format(todayTime).equals(formatYears.format(lastLoginTime))) {
|
| | | // 本年
|
| | | contentJson.put("content", "最近登录 " + sdf.format(lastLoginTime));
|
| | | } else {
|
| | | // 往年
|
| | | contentJson.put("content", "最近登录 " + format.format(lastLoginTime));
|
| | | }
|
| | |
|
| | | array.add(contentJson);
|
| | |
|
| | | } else if (threeSale.getExpire() != null
|
| | | && (threeSale.getExpire() == 1 || threeSale.getExpire().equals(1))) {
|
| | | state = 2;
|
| | | JSONObject contentJson = new JSONObject();
|
| | | contentJson.put("color", fontColor1);
|
| | | contentJson.put("content", "已经脱离邀请关系");
|
| | | array.add(contentJson);
|
| | | } else {
|
| | | type = 0;
|
| | | |
| | | state = 0;
|
| | |
|
| | | Calendar c = Calendar.getInstance();
|
| | | c.setTime(inviteTime);
|
| | | c.add(Calendar.DAY_OF_MONTH, 60);// 邀请不超过60天
|
| | | |
| | | |
| | | long days = (c.getTimeInMillis() -todayTime.getTime()) / (1000*3600*24);
|
| | |
|
| | | long days = (c.getTimeInMillis() - todayTime.getTime()) / (1000 * 3600 * 24);
|
| | | if (days < 0) {
|
| | | days = 0;
|
| | | }
|
| | | |
| | | JSONArray array1 = new JSONArray();
|
| | | array1.add(fontColor1);
|
| | | array1.add("将于");
|
| | | |
| | | JSONArray array2 = new JSONArray();
|
| | | array2.add(fontColor2);
|
| | | array2.add(days+"天");
|
| | | |
| | | JSONArray array3 = new JSONArray();
|
| | | array3.add(fontColor1);
|
| | | array3.add("后脱离邀请关系");
|
| | | |
| | | array.add(array1);
|
| | | array.add(array2);
|
| | | array.add(array3);
|
| | |
|
| | | JSONObject contentJson1 = new JSONObject();
|
| | | contentJson1.put("color", fontColor1);
|
| | | contentJson1.put("content", "将于");
|
| | |
|
| | | JSONObject contentJson2 = new JSONObject();
|
| | | contentJson2.put("color", fontColor2);
|
| | | contentJson2.put("content", days + "天");
|
| | |
|
| | | JSONObject contentJson3 = new JSONObject();
|
| | | contentJson3.put("color", fontColor1);
|
| | | contentJson3.put("content", "后脱离邀请关系");
|
| | |
|
| | | array.add(contentJson1);
|
| | | array.add(contentJson2);
|
| | | array.add(contentJson3);
|
| | | }
|
| | | |
| | | object.put("type", type);
|
| | |
|
| | | object.put("state", state);
|
| | | object.put("recentMsg", array);
|
| | | |
| | | ThreeSaleExtraInfo threeSaleExtraInfo = threeSale.getThreeSaleExtraInfo();
|
| | | if (threeSaleExtraInfo != null) {
|
| | | if (!StringUtil.isNullOrEmpty(threeSaleExtraInfo.getNickname())) {
|
| | | nickName = threeSaleExtraInfo.getNickname();
|
| | | }
|
| | | }
|
| | | |
| | | object.put("nickName", nickName);
|
| | | |
| | |
|
| | | resultArray.add(object);
|
| | | }
|
| | | |
| | |
|
| | | result.put("count", count);
|
| | | result.put("result_list", resultArray);
|
| | | |
| | |
|
| | | return result;
|
| | | |
| | | }
|
| | |
|
| | | @Override
|
| | | public List<ThreeSale> listByWorkerId(Long workerId) {
|
| | | return threeSaleMapper.listByWorkerId(workerId);
|
| | | }
|
| | |
|
| | |
|
| | | @Override
|
| | | public int getSuccessRelationshipNum(Long uid) {
|
| | | return threeSaleMapper.getSuccessRelationshipNum(uid);
|
| | | }
|
| | |
|
| | | @Override
|
| | | @Transactional
|
| | | public void bindRelationshipByInviteCode(UserInfo invitee, UserInfo inviter) throws ThreeSaleException {
|
| | | |
| | | if (invitee == null || inviter == null)
|
| | | throw new ThreeSaleException(1, "用户信息为空");
|
| | | |
| | | // 获取有效的邀请关系
|
| | | ThreeSale threeSale = |
| | | threeSaleMapper.getRelationshipByBossIdAndWorkerId(inviter.getId(), invitee.getId());
|
| | | |
| | | if (threeSale != null) {
|
| | | // 有效关系--生效
|
| | | threeSale.setState(true);
|
| | | threeSale.setExpire(ThreeSale.EXPIRE_NORMAL);
|
| | | threeSale.setSucceedTime(java.lang.System.currentTimeMillis());
|
| | | threeSale.setUpdateTime(java.lang.System.currentTimeMillis());
|
| | | threeSaleMapper.updateByPrimaryKeySelective(threeSale);
|
| | | } else {
|
| | | // 新建立确定关系
|
| | | threeSale = new ThreeSale();
|
| | | threeSale.setBoss(inviter);
|
| | | threeSale.setWorker(invitee);
|
| | | threeSale.setState(true);
|
| | | threeSale.setExpire(ThreeSale.EXPIRE_NORMAL);
|
| | | threeSale.setSucceedTime(java.lang.System.currentTimeMillis());
|
| | | threeSale.setCreateTime(java.lang.System.currentTimeMillis());
|
| | | threeSale.setUpdateTime(java.lang.System.currentTimeMillis());
|
| | | threeSaleMapper.insertSelective(threeSale);
|
| | | }
|
| | |
|
| | | }
|
| | | |
| | | }
|