package com.yeshi.fanli.controller.wxmp.v1;
|
|
import java.io.PrintWriter;
|
import java.text.SimpleDateFormat;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.Map;
|
|
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.DateUtil;
|
import org.yeshi.utils.JsonUtil;
|
|
import com.yeshi.fanli.dto.WXMPAcceptData;
|
import com.yeshi.fanli.entity.accept.AcceptData;
|
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.entity.bus.user.UserInviteSeparate;
|
import com.yeshi.fanli.service.inter.config.ConfigService;
|
import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
|
import com.yeshi.fanli.service.inter.user.UserInviteSeparateService;
|
import com.yeshi.fanli.service.inter.user.invite.ThreeSaleExtraInfoSerivce;
|
import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce;
|
import com.yeshi.fanli.service.inter.user.vip.UserVIPInfoService;
|
import com.yeshi.fanli.util.Constant;
|
import com.yeshi.fanli.util.StringUtil;
|
import com.yeshi.fanli.util.VersionUtil;
|
|
import net.sf.json.JSONArray;
|
import net.sf.json.JSONObject;
|
|
@Controller("WXMPInviteController")
|
@RequestMapping("/wxmp/api/v1/invite")
|
public class InviteController {
|
|
@Resource
|
private ThreeSaleSerivce threeSaleSerivce;
|
|
@Resource
|
private ConfigService configService;
|
|
@Resource
|
private UserInfoExtraService userInfoExtraService;
|
|
@Resource
|
private UserVIPInfoService userVIPInfoService;
|
|
@Resource
|
private UserInviteSeparateService userInviteSeparateService;
|
|
@Resource
|
private ThreeSaleExtraInfoSerivce threeSaleExtraInfoSerivce;
|
|
/**
|
* 专属邀请码条件
|
*
|
* @param acceptData
|
* @param uid
|
* @param inviteId
|
* @param out
|
*/
|
@RequestMapping(value = "tailorCode")
|
public void tailorCode(WXMPAcceptData acceptData, String callback, Long uid, PrintWriter out) {
|
if (uid == null) {
|
out.print(JsonUtil.loadFalseResult("用户id缺失"));
|
return;
|
}
|
|
JSONArray array1 = new JSONArray();
|
array1.add("1.邀请码可帮助好友激活邀请功能;");
|
array1.add("2.好友通过你的邀请码激活邀请功能后,将成为你的直接粉丝,未来产生的订单你都有奖金;");
|
array1.add("3.邀请码具有唯一性。");
|
|
JSONObject desc1 = new JSONObject();
|
desc1.put("title", "邀请码的作用");
|
desc1.put("content",array1);
|
|
JSONArray array2 = new JSONArray();
|
array2.add("1.你可以自由设置4~12位简单易记的邀请码;");
|
array2.add("2.专属邀请码是对你和你的团队尊贵身份的彰显。");
|
|
JSONObject desc2 = new JSONObject();
|
desc2.put("title", "专属邀请码优势");
|
desc2.put("content",array2);
|
|
JSONArray array = new JSONArray();
|
array.add(desc1);
|
array.add(desc2);
|
|
JSONObject data = new JSONObject();
|
data.put("desc", array);
|
data.put("num", threeSaleSerivce.countFirstTeam(uid, 1));
|
data.put("limit", Constant.INVITE_CODRE_TAILOR_LIMIT);
|
|
out.print(JsonUtil.loadTrueResult(data));
|
}
|
|
/**
|
* 用户队员统计 1.4.1
|
*
|
* @param acceptData
|
* @param id
|
* @param out
|
*/
|
@RequestMapping(value = "countMyTeam", method = RequestMethod.POST)
|
public void countMyTeam(WXMPAcceptData acceptData, long uid, PrintWriter out) {
|
try {
|
long firstTeam = threeSaleSerivce.countFirstTeam(uid, 1);
|
long firstTeamTotal = threeSaleSerivce.countFirstTeam(uid, null);
|
|
long secondTeam = threeSaleSerivce.countSecondTeam(uid, 1);
|
long secondTeamTotal = threeSaleSerivce.countSecondTeam(uid, null);
|
JSONObject bossData = new JSONObject();
|
ThreeSale threeSale = threeSaleSerivce.getMyBoss(uid);
|
if (threeSale != null) {
|
UserInfo boss = threeSale.getBoss();
|
if (boss != null) {
|
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);
|
bossData.put("inviteTime", "邀请时间: " + sdf.format(inviteTime));
|
}
|
|
JSONObject resultData = new JSONObject();
|
|
String helpLink = configService.get("team_help_url");
|
if (helpLink == null) {
|
helpLink = "";
|
}
|
resultData.put("helpLink", helpLink);
|
resultData.put("firstTeam", firstTeam);
|
resultData.put("firstTeamTotal", firstTeamTotal);
|
resultData.put("secondTeam", secondTeam);
|
resultData.put("secondTeamTotal", secondTeamTotal);
|
resultData.put("boss", bossData);
|
|
boolean hasCode = false;
|
String inviteCode = userInfoExtraService.getInviteCodeByUid(uid);
|
if (inviteCode != null && inviteCode.trim().length() > 0) {
|
hasCode = true; // 已有邀请码
|
} else {
|
// 邀请激活链接
|
resultData.put("activationlink", configService.get("invite_activation_url"));
|
}
|
resultData.put("hasCode", hasCode);
|
|
out.print(JsonUtil.loadTrueResult(resultData));
|
|
} catch (Exception e) {
|
out.print(JsonUtil.loadFalseResult("统计失败"));
|
e.printStackTrace();
|
}
|
}
|
|
/**
|
*
|
* @param acceptData
|
* @param id
|
* @param out
|
*/
|
@RequestMapping(value = "listMyTeam", method = RequestMethod.POST)
|
public void listMyTeam(WXMPAcceptData acceptData, int 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);
|
}
|
|
boolean needVIPInfo = false;
|
if (VersionUtil.greaterThan_2_0_5(acceptData.getPlatform(), acceptData.getVersion()))
|
needVIPInfo = true;
|
|
// 组织数据
|
JSONObject resultData = organizeTeam(count, listTeam, uid, type, needVIPInfo);
|
|
// 第一页判断是否激活 是否有队员
|
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, boolean needVipInfo) {
|
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");
|
|
List<Long> workerIdList = new ArrayList<>();
|
Map<Long, Boolean> vipMap = null;
|
if (needVipInfo) {
|
for (ThreeSale threeSale : list)
|
workerIdList.add(threeSale.getWorker().getId());
|
if (workerIdList.size() > 0)
|
vipMap = userVIPInfoService.listByUids(workerIdList);
|
}
|
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) + " 加入");
|
// 添加是否为VIP
|
if (vipMap != null && vipMap.get(worker.getId()) != null) {
|
object.put("vip", vipMap.get(worker.getId()));
|
if (vipMap.get(worker.getId())) {
|
UserInviteSeparate separate = userInviteSeparateService.selectByWorkerIdAndBossId(worker.getId(),
|
uid);
|
if (separate != null && separate.getEndTime() != null) {
|
try {
|
|
JSONObject contentJson1 = new JSONObject();
|
contentJson1.put("color", "#888888");
|
contentJson1.put("content", "将于");
|
|
JSONObject contentJson2 = new JSONObject();
|
contentJson2.put("color", "#F14242");
|
contentJson2.put("content", DateUtil.dateDiff4(new Date(), separate.getEndTime()));
|
|
JSONObject contentJson3 = new JSONObject();
|
contentJson3.put("color", "#888888");
|
contentJson3.put("content", "后脱离邀请关系");
|
|
JSONArray array = new JSONArray();
|
array.add(contentJson1);
|
array.add(contentJson2);
|
array.add(contentJson3);
|
object.put("vipBreakTime", array);
|
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
}
|
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;
|
}
|
|
/**
|
* 获取用户信息
|
* @param acceptData
|
* @param uid
|
* @param out
|
*/
|
@RequestMapping(value = "getBossInfo", method = RequestMethod.POST)
|
public void getBossInfo(AcceptData acceptData, Long uid, PrintWriter out) {
|
if (uid == null || uid <= 0) {
|
out.print(JsonUtil.loadFalseResult("用户未登录"));
|
return;
|
}
|
JSONObject bossData = getBossInfo(uid, threeSaleSerivce.getMyBoss(uid));
|
out.print(JsonUtil.loadTrueResult(bossData));
|
}
|
|
/**
|
* 上级信息组织
|
*
|
* @param acceptData
|
* @param uid
|
* @param threeSale
|
* @return
|
*/
|
private JSONObject getBossInfo(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;
|
}
|
}
|