package com.yeshi.fanli.controller.client.v2;
|
|
import java.io.PrintWriter;
|
import java.text.SimpleDateFormat;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
|
import javax.annotation.Resource;
|
|
import org.springframework.stereotype.Controller;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMethod;
|
import org.yeshi.utils.JsonUtil;
|
|
import com.yeshi.fanli.entity.accept.AcceptData;
|
import com.yeshi.fanli.entity.bus.msg.UserSystemMsg;
|
import com.yeshi.fanli.entity.bus.msg.UserSystemMsgTypeEnum;
|
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.entity.bus.user.UserInfoExtra;
|
import com.yeshi.fanli.exception.user.UserInfoExtraException;
|
import com.yeshi.fanli.service.inter.config.ConfigService;
|
import com.yeshi.fanli.service.inter.hongbao.ThreeSaleExtraInfoSerivce;
|
import com.yeshi.fanli.service.inter.hongbao.ThreeSaleSerivce;
|
import com.yeshi.fanli.service.inter.msg.UserSystemMsgService;
|
import com.yeshi.fanli.service.inter.push.PushService;
|
import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
|
import com.yeshi.fanli.service.inter.user.UserInfoService;
|
import com.yeshi.fanli.util.Constant;
|
import com.yeshi.fanli.util.StringUtil;
|
|
import net.sf.json.JSONArray;
|
import net.sf.json.JSONObject;
|
|
@Controller
|
@RequestMapping("api/v2/invite")
|
public class InviteControllerV2 {
|
|
@Resource
|
private ConfigService configService;
|
|
@Resource
|
private PushService pushService;
|
|
@Resource
|
private UserSystemMsgService userSystemMsgService;
|
|
@Resource
|
private ThreeSaleSerivce threeSaleSerivce;
|
|
@Resource
|
private UserInfoService userInfoService;
|
|
@Resource
|
private UserInfoExtraService userInfoExtraService;
|
|
@Resource
|
private ThreeSaleExtraInfoSerivce threeSaleExtraInfoSerivce;
|
|
/**
|
* 邀请码验证
|
*
|
* @param out
|
*/
|
@RequestMapping(value = "verifyCode")
|
public void verifyCode(AcceptData acceptData, Long uid, String inviteCode, PrintWriter out) {
|
try {
|
UserInfo userInfo = userInfoExtraService.getUserByInviteCode(inviteCode);
|
JSONObject data = new JSONObject();
|
data.put("nickName", userInfo.getNickName());
|
data.put("portrait", userInfo.getPortrait());
|
data.put("tips", "确认要成为TA的一级队员吗?邀请关系一旦建立不可更改。");
|
out.print(JsonUtil.loadTrueResult(data));
|
} catch (UserInfoExtraException e) {
|
out.print(JsonUtil.loadFalseResult(e.getMsg()));
|
}
|
}
|
|
/**
|
* 邀请码微信
|
*
|
* @param out
|
*/
|
@RequestMapping(value = "verifyWX")
|
public void verifyWX(AcceptData acceptData, Long uid, String code, PrintWriter out) {
|
try {
|
UserInfo userInfo = userInfoExtraService.getInviterInfo(
|
Constant.getWXAccount(acceptData.getPlatform(), acceptData.getVersion()), uid, code);
|
JSONObject data = new JSONObject();
|
data.put("nickName", userInfo.getNickName());
|
data.put("portrait", userInfo.getPortrait());
|
data.put("tips", "确认要成为TA的一级队员吗?邀请关系一旦建立不可更改。");
|
out.print(JsonUtil.loadTrueResult(data));
|
} catch (UserInfoExtraException e) {
|
out.print(JsonUtil.loadFalseResult(e.getMsg()));
|
}
|
}
|
|
/**
|
* 用户队员列表查询 1.5.3查询有效队员
|
*
|
* @param acceptData
|
* @param id
|
* @param out
|
*/
|
@RequestMapping(value = "getMyTeam", method = RequestMethod.POST)
|
public void getMyTeam(AcceptData acceptData, long page, long uid, int type, PrintWriter out) {
|
if (type != 1 && type != 2) {
|
out.print(JsonUtil.loadFalseResult("队员类型不正确"));
|
return;
|
}
|
|
long count = 0;
|
List<ThreeSale> listTeam = null;
|
if (type == 1) {
|
listTeam = threeSaleSerivce.listFirstTeam((page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE, uid, 1);
|
count = threeSaleSerivce.countFirstTeam(uid, 1);
|
} else if (type == 2) {
|
listTeam = threeSaleSerivce.listSecondTeam((page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE, uid, 1);
|
count = threeSaleSerivce.countSecondTeam(uid, 1);
|
}
|
|
// 组织数据
|
JSONObject resultData = organizeTeam(count, listTeam, uid, type);
|
|
// 第一页判断是否激活 是否有队员
|
if (type == 1 && page == 1) {
|
boolean hasCode = false;
|
UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid);
|
if (userInfoExtra != null) {
|
if (!StringUtil.isNullOrEmpty(userInfoExtra.getInviteCode()))
|
hasCode = true;
|
}
|
resultData.put("hasCode", hasCode);
|
resultData.put("hasTeam", count > 0 ? true : false);
|
}
|
out.print(JsonUtil.loadTrueResult(resultData));
|
}
|
|
/**
|
* 组织数据
|
*
|
* @param count
|
* @param list
|
* @param uid
|
* @param type
|
* @return
|
*/
|
private JSONObject organizeTeam(long count, List<ThreeSale> list, Long uid, int type) {
|
JSONObject result = new JSONObject();
|
JSONArray resultArray = new JSONArray();
|
|
Date todayTime = new Date();
|
SimpleDateFormat sdf = new SimpleDateFormat("MM.dd HH:mm");
|
SimpleDateFormat format = new SimpleDateFormat("yyyy.MM.dd HH:mm");
|
SimpleDateFormat formatYears = new SimpleDateFormat("yyyy");
|
|
for (ThreeSale threeSale : list) {
|
UserInfo worker = threeSale.getWorker();
|
if (worker == null) {
|
continue;
|
}
|
Long workerId = worker.getId();
|
|
JSONObject object = new JSONObject();
|
object.put("workerId", worker.getId());
|
object.put("nickName", worker.getNickName());
|
object.put("portrait", worker.getPortrait());
|
object.put("inviteId", threeSale.getId());
|
|
Date inviteTime = new Date(threeSale.getCreateTime());
|
object.put("inviteTime", format.format(inviteTime) + " 加入");
|
|
String fontColor1 = "#888888";
|
JSONArray array = new JSONArray();
|
if (threeSale.getState()) {
|
Long lastLoginTime = worker.getLastLoginTime();
|
if (lastLoginTime == null) {
|
lastLoginTime = threeSale.getCreateTime();
|
}
|
|
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);
|
|
// 一级队员 查询
|
if (type == 1) {
|
String memoName = null;
|
ThreeSaleExtraInfo threeSaleExtraInfo = threeSale.getThreeSaleExtraInfo();
|
if (threeSaleExtraInfo != null) {
|
if (!StringUtil.isNullOrEmpty(threeSaleExtraInfo.getNickname())) {
|
memoName = threeSaleExtraInfo.getNickname();
|
}
|
}
|
object.put("memoName", memoName);
|
|
UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(workerId);
|
if (userInfoExtra != null && !StringUtil.isNullOrEmpty(userInfoExtra.getWeiXin())) {
|
object.put("weiXin", userInfoExtra.getWeiXin());
|
object.put("weiXinState", 3);
|
object.put("weiXinTip", "添加TA的微信,你可教授TA如何通过返利券赚钱技巧。");
|
} else {
|
if (!threeSaleExtraInfoSerivce.isRemindWorker(uid, workerId)) {
|
object.put("weiXinState", 1);
|
object.put("weiXinTip", "点击提醒TA,系统会发送一封站内信,提醒其添加微信号。");
|
} else {
|
object.put("weiXinState", 2);
|
object.put("weiXinTip", "系统已发送提醒,邀请人添加微信后你可复制,如对方迟迟不添加,你可联系人工客服寻求帮助");
|
}
|
}
|
}
|
}
|
object.put("state", 1);
|
object.put("recentMsg", array);
|
resultArray.add(object);
|
}
|
|
result.put("count", count);
|
result.put("list", resultArray);
|
return result;
|
}
|
|
/**
|
* 用户队员统计- IOS
|
*
|
* @param acceptData
|
* @param id
|
* @param out
|
*/
|
@RequestMapping(value = "countMyTeam", method = RequestMethod.POST)
|
public void countMyTeam(AcceptData acceptData, long uid, PrintWriter out) {
|
JSONObject bossData = getBossInfo(acceptData, uid, threeSaleSerivce.getMyBoss(uid));
|
JSONObject resultData = new JSONObject();
|
|
long firstTeam = threeSaleSerivce.countFirstTeam(uid, 1);
|
resultData.put("boss", bossData);
|
resultData.put("helpLink", configService.get("team_help_url"));
|
resultData.put("firstTeam", firstTeam);
|
resultData.put("firstTeamTotal", threeSaleSerivce.countFirstTeam(uid, null));
|
resultData.put("secondTeam", threeSaleSerivce.countSecondTeam(uid, 1));
|
resultData.put("secondTeamTotal", threeSaleSerivce.countSecondTeam(uid, null));
|
|
boolean hasTeam = true;
|
if (firstTeam <= 0) {
|
hasTeam = false;
|
resultData.put("invitelink", configService.get("invite_activation_url"));
|
}
|
resultData.put("hasTeam", hasTeam);
|
|
boolean hasCode = false;
|
boolean bdWeiXin = false;
|
UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid);
|
if (userInfoExtra != null) {
|
if (!StringUtil.isNullOrEmpty(userInfoExtra.getInviteCode()))
|
hasCode = true;
|
|
if (!StringUtil.isNullOrEmpty(userInfoExtra.getWeiXin()))
|
bdWeiXin = true;
|
}
|
|
// 未激活邀请码
|
resultData.put("hasCode", hasCode);
|
if (!hasCode) {
|
List<String> tipCode = new ArrayList<String>();
|
resultData.put("helpLinkActivate", configService.get("team_help_url"));
|
tipCode.add("激活邀请功能后才可以邀请队员,一级队员是由你直接邀请,二级队员是由你的一级队员邀请。");
|
tipCode.add("邀请激活功能,必须要有邀请码,邀请码可以通过金币兑换,也可以全网搜索。");
|
resultData.put("tipCode", tipCode);
|
}
|
|
// 未添加微信号
|
List<String> tipWeiXin = new ArrayList<String>();
|
if (!bdWeiXin) {
|
tipWeiXin.add("添加微信号后,你的邀请人和一级队员可通过微信号与你建立联系;");
|
tipWeiXin.add("你也可以向邀请人学习或向一级队员教授赚钱技巧。");
|
}
|
resultData.put("tipWeiXin", tipWeiXin);
|
resultData.put("tipWeiXinAdd", "添加微信号后,你的邀请人和一级队员可以通过微信与你建立联系。");
|
resultData.put("bdWeiXin", bdWeiXin);
|
|
out.print(JsonUtil.loadTrueResult(resultData));
|
}
|
|
/**
|
* 上级信息组织
|
*
|
* @param acceptData
|
* @param uid
|
* @param threeSale
|
* @return
|
*/
|
private JSONObject getBossInfo(AcceptData acceptData, long uid, ThreeSale threeSale) {
|
JSONObject bossData = new JSONObject();
|
if (threeSale != null && threeSale.getBoss() != null) {
|
UserInfo boss = threeSale.getBoss();
|
bossData.put("hasBoss", true);
|
bossData.put("inviteId", threeSale.getId());
|
bossData.put("nickName", boss.getNickName());
|
bossData.put("portrait", boss.getPortrait());
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");
|
Long createTime = threeSale.getCreateTime();
|
Date inviteTime = new Date(createTime);
|
|
UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(boss.getId());
|
if (userInfoExtra != null && !StringUtil.isNullOrEmpty(userInfoExtra.getWeiXin())) {
|
bossData.put("weiXin", userInfoExtra.getWeiXin());
|
bossData.put("weiXinState", 3);
|
bossData.put("weiXinTip", "添加TA的微信,你可向TA学习如何通过返利券赚钱。");
|
} else {
|
if (!threeSaleExtraInfoSerivce.isRemindBoss(boss.getId(), uid)) {
|
bossData.put("weiXinState", 1);
|
bossData.put("weiXinTip", "点击提醒TA,系统会发送一封站内信,提醒其添加微信号。");
|
} else {
|
bossData.put("weiXinState", 2);
|
bossData.put("weiXinTip", "系统已发送提醒,邀请人添加微信后你可复制,如对方迟迟不添加,你可联系人工客服寻求帮助");
|
}
|
}
|
bossData.put("inviteTime", "你于 " + sdf.format(inviteTime) + "接受了TA的邀请");
|
} else {
|
bossData.put("hasBoss", false);
|
bossData.put("helpLink", configService.get("invite_code_hlep_link"));
|
bossData.put("weiXinTip", "恭喜你,我们的优质用户;\r\n你并没有邀请人,但你的邀请激活功能是被默认开启的;\r\n你拥有独特的无邀请人激活码。");
|
}
|
return bossData;
|
}
|
|
/**
|
* 站内信提醒队员添加微信号
|
*
|
* @param acceptData
|
* @param uid
|
* @param inviteId
|
* @param out
|
*/
|
@RequestMapping(value = "remindTeam")
|
public void remindTeam(AcceptData acceptData, Long uid, Long inviteId, PrintWriter out) {
|
if (uid == null || inviteId == null) {
|
out.print(JsonUtil.loadFalseResult("传递参数缺失"));
|
return;
|
}
|
|
UserInfo userInfo = userInfoService.selectByPKey(uid);
|
if (userInfo == null) {
|
out.print(JsonUtil.loadFalseResult("用户信息不存在"));
|
return;
|
}
|
|
ThreeSale threeSale = threeSaleSerivce.selectByPrimaryKey(inviteId);
|
if (threeSale == null) {
|
out.print(JsonUtil.loadFalseResult("关系id不存在"));
|
return;
|
}
|
|
Long remindId = null;
|
boolean remindBoss = true;
|
if (uid.longValue() == threeSale.getWorker().getId().longValue()) {
|
remindId = threeSale.getBoss().getId(); // 提醒上级
|
} else if (uid.longValue() == threeSale.getBoss().getId().longValue()) {
|
remindBoss = false;
|
remindId = threeSale.getWorker().getId(); // 提醒下级
|
}
|
|
if (remindId == null) {
|
out.print(JsonUtil.loadFalseResult("信息验证未通过"));
|
return;
|
}
|
|
Long bossId = null;
|
Long workerId = null;
|
String title = "队员提醒消息";
|
String content = "";
|
if (remindBoss) {
|
// 提示队长
|
bossId = remindId;
|
workerId = uid;
|
content = "你的一级队员" + userInfo.getNickName()
|
+ ",提醒你添加微信号,以便于和你取得联系和学习省钱技巧,赶快去添加吧;注:请升级到本软件最新版本在“我的-我的信息”中添加。";
|
} else {
|
// 提示队员
|
bossId = uid;
|
workerId = remindId;
|
content = "你的邀请人" + userInfo.getNickName()
|
+ ",提醒你添加微信号,以便于和你取得联系帮助你更好的省钱,赶快去添加吧;注:请升级到本软件最新版本在“我的-我的信息”中添加。";
|
}
|
|
try {
|
List<String> listIOS = new ArrayList<String>();
|
List<String> listAndroid = new ArrayList<String>();
|
pushService.pushZNX(remindId, title, content, listIOS, listAndroid);
|
|
userSystemMsgService.addUserSystemMsg(remindId, UserSystemMsgTypeEnum.common, title, content,
|
UserSystemMsg.TIME_TAG_COMMON, null);
|
|
ThreeSaleExtraInfo newInfo = new ThreeSaleExtraInfo();
|
if (remindBoss) {
|
newInfo.setRemindBoss(1);
|
} else {
|
newInfo.setRemindWorker(1);
|
}
|
|
ThreeSaleExtraInfo threeExtra = threeSaleExtraInfoSerivce.getbyBossIdAndWorkerId(bossId, workerId);
|
if (threeExtra != null) {
|
newInfo.setId(threeExtra.getId());
|
newInfo.setUpdateTime(new Date());
|
threeSaleExtraInfoSerivce.updateByPrimaryKeySelective(newInfo);
|
} else {
|
newInfo.setBoss(new UserInfo(bossId));
|
newInfo.setWorker(new UserInfo(workerId));
|
newInfo.setCreateTime(new Date());
|
newInfo.setUpdateTime(new Date());
|
threeSaleExtraInfoSerivce.insertSelective(newInfo);
|
}
|
|
JSONObject data = new JSONObject();
|
data.put("weiXinState", 2);
|
data.put("weiXinTip", "系统已发送提醒,邀请人添加微信后你可复制,如对方迟迟不添加,你可联系人工客服寻求帮助");
|
out.print(JsonUtil.loadTrueResult(data));
|
} catch (Exception e) {
|
e.printStackTrace();
|
out.print(JsonUtil.loadFalseResult("提醒失败"));
|
}
|
}
|
}
|