package com.yeshi.fanli.controller.client.v1;
|
|
import java.io.IOException;
|
import java.io.PrintWriter;
|
import java.io.UnsupportedEncodingException;
|
import java.lang.reflect.InvocationTargetException;
|
import java.lang.reflect.Type;
|
import java.math.BigDecimal;
|
import java.net.URLEncoder;
|
import java.text.SimpleDateFormat;
|
import java.util.ArrayList;
|
import java.util.Arrays;
|
import java.util.Date;
|
import java.util.Iterator;
|
import java.util.List;
|
import java.util.UUID;
|
|
import javax.annotation.Resource;
|
import javax.servlet.http.HttpServletRequest;
|
|
import org.apache.commons.beanutils.PropertyUtils;
|
import org.springframework.stereotype.Controller;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMethod;
|
import org.springframework.web.multipart.MultipartFile;
|
import org.yeshi.utils.HttpUtil;
|
import org.yeshi.utils.IPUtil;
|
import org.yeshi.utils.JsonUtil;
|
import org.yeshi.utils.NumberUtil;
|
import org.yeshi.utils.taobao.TbImgUtil;
|
import org.yeshi.utils.tencentcloud.COSManager;
|
|
import com.google.gson.Gson;
|
import com.google.gson.GsonBuilder;
|
import com.google.gson.JsonElement;
|
import com.google.gson.JsonPrimitive;
|
import com.google.gson.JsonSerializationContext;
|
import com.google.gson.JsonSerializer;
|
import com.yeshi.fanli.dto.HongBao;
|
import com.yeshi.fanli.dto.HongBaoDTO;
|
import com.yeshi.fanli.dto.money.AccountDetails;
|
import com.yeshi.fanli.dto.order.OrderItem;
|
import com.yeshi.fanli.entity.AppVersionInfo;
|
import com.yeshi.fanli.entity.accept.AcceptData;
|
import com.yeshi.fanli.entity.bus.user.AccountMessage;
|
import com.yeshi.fanli.entity.bus.user.BindingAccount;
|
import com.yeshi.fanli.entity.bus.user.Extract;
|
import com.yeshi.fanli.entity.bus.user.ExtractRecord;
|
import com.yeshi.fanli.entity.bus.user.LostOrder;
|
import com.yeshi.fanli.entity.bus.user.SMSHistory;
|
import com.yeshi.fanli.entity.bus.user.ThreeSale;
|
import com.yeshi.fanli.entity.bus.user.ThreeSaleExtraInfo;
|
import com.yeshi.fanli.entity.bus.user.UserActiveLog;
|
import com.yeshi.fanli.entity.bus.user.UserInfo;
|
import com.yeshi.fanli.entity.bus.user.UserInfoExtra;
|
import com.yeshi.fanli.entity.bus.user.WeiXinUser;
|
import com.yeshi.fanli.entity.common.AdminUser;
|
import com.yeshi.fanli.entity.common.Config;
|
import com.yeshi.fanli.entity.goods.CollectionGoodsV2;
|
import com.yeshi.fanli.entity.goods.CommonGoods;
|
import com.yeshi.fanli.entity.money.UserMoneyDetail;
|
import com.yeshi.fanli.entity.order.HongBaoOrder;
|
import com.yeshi.fanli.entity.system.BusinessSystem;
|
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
|
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBriefExtra;
|
import com.yeshi.fanli.exception.BindingAccountException;
|
import com.yeshi.fanli.exception.goods.CollectionGoodsException;
|
import com.yeshi.fanli.exception.taobao.TaoKeApiException;
|
import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException;
|
import com.yeshi.fanli.exception.user.UserCustomSettingsException;
|
import com.yeshi.fanli.exception.user.UserInfoException;
|
import com.yeshi.fanli.exception.user.UserInfoExtraException;
|
import com.yeshi.fanli.log.LogHelper;
|
import com.yeshi.fanli.service.AdminUserService;
|
import com.yeshi.fanli.service.inter.config.AppVersionService;
|
import com.yeshi.fanli.service.inter.config.BusinessSystemService;
|
import com.yeshi.fanli.service.inter.config.ConfigService;
|
import com.yeshi.fanli.service.inter.count.HongBaoV2CountService;
|
import com.yeshi.fanli.service.inter.goods.CollectionGoodsV2Service;
|
import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService;
|
import com.yeshi.fanli.service.inter.hongbao.HongBaoV2Service;
|
import com.yeshi.fanli.service.inter.hongbao.ThreeSaleExtraInfoSerivce;
|
import com.yeshi.fanli.service.inter.hongbao.ThreeSaleSerivce;
|
import com.yeshi.fanli.service.inter.order.HongBaoOrderService;
|
import com.yeshi.fanli.service.inter.order.LostOrderService;
|
import com.yeshi.fanli.service.inter.order.OrderService;
|
import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinDetailService;
|
import com.yeshi.fanli.service.inter.user.AccountMessageService;
|
import com.yeshi.fanli.service.inter.user.BindingAccountService;
|
import com.yeshi.fanli.service.inter.user.ExtractRecordService;
|
import com.yeshi.fanli.service.inter.user.ExtractService;
|
import com.yeshi.fanli.service.inter.user.MaskKeyService;
|
import com.yeshi.fanli.service.inter.user.ShamUserService;
|
import com.yeshi.fanli.service.inter.user.SpreadUserImgService;
|
import com.yeshi.fanli.service.inter.user.UserAccountService;
|
import com.yeshi.fanli.service.inter.user.UserActiveLogService;
|
import com.yeshi.fanli.service.inter.user.UserCustomSettingsService;
|
import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
|
import com.yeshi.fanli.service.inter.user.UserInfoService;
|
import com.yeshi.fanli.service.inter.user.UserMoneyDetailService;
|
import com.yeshi.fanli.service.inter.user.UserShareGoodsRecordService;
|
import com.yeshi.fanli.util.AESUtil;
|
import com.yeshi.fanli.util.Constant;
|
import com.yeshi.fanli.util.GsonUtil;
|
import com.yeshi.fanli.util.HongBaoUtil;
|
import com.yeshi.fanli.util.RedisManager;
|
import com.yeshi.fanli.util.StringUtil;
|
import com.yeshi.fanli.util.ThreadUtil;
|
import com.yeshi.fanli.util.TimeUtil;
|
import com.yeshi.fanli.util.Utils;
|
import com.yeshi.fanli.util.account.UserUtil;
|
import com.yeshi.fanli.util.annotation.RequestSerializableByKey;
|
import com.yeshi.fanli.util.email.MailSenderUtil;
|
import com.yeshi.fanli.util.factory.AccountDetailsFactory;
|
import com.yeshi.fanli.util.factory.HongBaoFactory;
|
import com.yeshi.fanli.util.factory.OrderItemFactory;
|
import com.yeshi.fanli.util.taobao.TaoBaoUtil;
|
import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
|
import com.yeshi.fanli.util.wx.WXLoginUtil;
|
import com.yeshi.fanli.vo.user.UserInfoExtraVO;
|
import com.yeshi.fanli.vo.user.UserSettingsVO;
|
|
import net.sf.json.JSONArray;
|
import net.sf.json.JSONObject;
|
|
@Controller
|
@RequestMapping("api/v1/customer")
|
public class UserInfoController {
|
|
@Resource
|
private UserInfoService userInfoService;
|
|
@Resource
|
private OrderService orderService;
|
|
@Resource
|
private BindingAccountService bindingAccountService;
|
|
@Resource
|
private ExtractService extractService;
|
|
@Resource
|
private ConfigService configService;
|
|
@Resource
|
private BusinessSystemService businessSystemService;
|
|
@Resource
|
private ShamUserService shamUserService;
|
|
@Resource
|
private ThreeSaleSerivce threeSaleSerivce;
|
|
@Resource
|
private ThreeSaleExtraInfoSerivce threeSaleExtraInfoSerivce;
|
|
@Resource
|
private LostOrderService lostOrderService;
|
|
@Resource
|
private HongBaoManageService hongBaoManageService;
|
|
@Resource
|
private UserAccountService loginService;
|
|
@Resource
|
private RedisManager redisManager;
|
|
@Resource
|
private ExtractRecordService extractRecordService;
|
|
@Resource
|
private UserActiveLogService userActiveLogService;
|
|
@Resource
|
private CollectionGoodsV2Service collectionGoodsV2Service;
|
|
@Resource
|
private AdminUserService adminUserService;
|
|
@Resource
|
private UserMoneyDetailService userMoneyDetailService;
|
|
@Resource
|
private HongBaoOrderService hongBaoOrderService;
|
|
@Resource
|
private HongBaoV2Service hongBaoV2Service;
|
|
@Resource
|
private SpreadUserImgService spreadUserImgService;
|
|
@Resource
|
private UserShareGoodsRecordService userShareGoodsRecordService;
|
|
@Resource
|
private UserCustomSettingsService userCustomSettingsService;
|
|
@Resource
|
private UserInfoExtraService userInfoExtraService;
|
|
@Resource
|
private AppVersionService appVersionService;
|
|
@Resource
|
private HongBaoV2CountService hongBaoV2CountService;
|
|
@Resource
|
private AccountMessageService accountMessageService;
|
|
@Resource
|
private MaskKeyService maskKeyService;
|
|
@Resource
|
private UserTaoLiJinDetailService userTaoLiJinDetailService;
|
|
|
private static final String PASSWORD_MAX_ERROR = "password_max_error";
|
private static final String EXTRACT_MIN_MONEY = "extract_min_money";
|
private static final String EXTRACT_MAX_MONEY = "extract_max_money";
|
|
/**
|
* 获取用户信息
|
*
|
* @param acceptData
|
* @param form
|
* @param requst
|
* @param out
|
*/
|
@RequestMapping(value = "getuserinfo", method = RequestMethod.POST)
|
public void getUserInfo(AcceptData acceptData, UserInfo form, String code, String create, boolean first,
|
HttpServletRequest requst, PrintWriter out) {
|
String remotIP = IPUtil.getRemotIP(requst);
|
long id = form.getId();
|
// 判断是不是用ID登陆的,如果是用ID登陆的其他都不要管了
|
if (id != 0) {
|
UserInfo find = userInfoService.getUserByIdWithMybatis(id);
|
// ThreadUtil.run(new Runnable() {
|
// @Override
|
// public void run() {
|
// threeSaleSerivce.effective(find);
|
// }
|
// });
|
if (find != null) {
|
if (find.getState() != UserInfo.STATE_NORMAL) {
|
out.print(JsonUtil.loadFalseResult(Constant.CODE_FORBIDDEN_USER,
|
Constant.FORBIDDEN_USER_REASON_DESC));
|
return;
|
}
|
|
// 邀请关系生效
|
threeSaleSerivce.effective(find);
|
|
// 添加用户活跃记录
|
UserActiveLog userActiveLog = new UserActiveLog();
|
userActiveLog.setChannel(acceptData.getChannel());
|
userActiveLog.setIp(requst.getRemoteHost());
|
userActiveLog.setUid(find.getId());
|
userActiveLog.setVersionCode(acceptData.getVersion());
|
userActiveLog.setOsVersion(acceptData.getOsVersion());
|
userActiveLog.setDeviceType(acceptData.getDeviceType());
|
userActiveLogService.addUserActiveLog(userActiveLog);
|
|
outUserInfo(acceptData, out, remotIP, find, acceptData.getDevice());
|
return;
|
} else {
|
out.print(JsonUtil.loadFalseResult("不存在该账户!"));
|
return;
|
}
|
}
|
// 不是用ID的登陆的事就多了
|
BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
|
acceptData.getPackages());
|
if (system == null) {
|
out.print(JsonUtil.loadFalseResult("系统不存在"));
|
return;
|
}
|
String appid = system.getAppid();
|
|
// 判断是否是第一次正常登陆
|
/*
|
* String platform = acceptData.getPlatform(); if(platform == "ios") {
|
* // 1: 安卓 2:ios if(firstIos == "1") { //第一次登陆 first = true; } else {
|
* first = false; } }
|
*/
|
if (first) {
|
int loginType = form.getLoginType();
|
// WeiXinUserParam wxParam = null;
|
// 如果是微信登陆,那需要先获取到微信的unionid
|
WeiXinUser weiXinUser = WXLoginUtil.getWeiXinUserWithSavePortrait(code);
|
if (loginType == Constant.WEIXIN && StringUtil.isNullOrEmpty(form.getWxUnionId())) {
|
// wxParam = WXinUtil.getWxParam(code);
|
if (weiXinUser == null) {
|
out.print(JsonUtil.loadFalseResult("登录失败"));
|
return;
|
}
|
form.setWxOpenId(weiXinUser.getOpenid());
|
form.setWxUnionId(weiXinUser.getUnionid());
|
}
|
String openid = loginType == 1 ? form.getOpenid() : form.getWxUnionId();
|
LogHelper.userInfo("[ip:" + IPUtil.getRemotIP(requst) + "]" + (loginType == 1 ? "淘宝登陆" : "微信登陆")
|
+ "[openid:" + openid + "]");
|
if (openid == null || openid.equals("")) {
|
out.print(JsonUtil.loadFalseResult("登录失败"));
|
return;
|
}
|
// 获取用户信息
|
UserInfo user = userInfoService.getUserByLoginTypeAndOpenId(loginType, openid, appid);
|
// 判断获取的用户信息是否为空,如果不为空就做的事就又多了
|
if (user != null) {// 数据库中已经存在该用户
|
outUserInfo(acceptData, out, remotIP, user, acceptData.getDevice());
|
UserInfo temp = user;
|
long lastLoginTime = temp.getLastLoginTime() == null ? 0 : temp.getLastLoginTime().longValue();
|
if (lastLoginTime == 0) {// 等于0则是第一次登陆,那么需要判断用户是不是被传销来的,如果是的话,那需要修改相关三级分销的状态
|
ThreadUtil.run(new Runnable() {
|
@Override
|
public void run() {
|
threeSaleSerivce.effective(temp);
|
}
|
|
});
|
}
|
return;
|
}
|
// 查询到的用户信息为空,那么需要填充一些用户信息
|
if (loginType == Constant.WEIXIN) {
|
form.setPortrait(weiXinUser.getHeadimgurl());
|
String wxHeadImg = COSManager.getInstance()
|
.uploadFile(HttpUtil.getAsInputStream(weiXinUser.getHeadimgurl()),
|
Constant.WXHEADURL + UUID.randomUUID().toString())
|
.getUrl();
|
form.setWxPic(wxHeadImg);
|
form.setNickName(weiXinUser.getNickname());
|
form.setWxName(weiXinUser.getNickname());
|
} else if (loginType == Constant.TAOBAO) {
|
form.setTbName(form.getNickName());
|
form.setTbPic(form.getPortrait());
|
}
|
form.setLastLoginIp(remotIP);
|
form.setLastLoginTime(java.lang.System.currentTimeMillis());
|
form.setSystem(system);
|
requst.getSession().setAttribute("newUser", form);
|
out.append(JsonUtil.loadTrueResult(2, form));
|
return;
|
}
|
|
if (create == null || "0".equals(create)) {
|
out.append(JsonUtil.loadFalseResult("参数create不能为空!"));
|
return;
|
}
|
|
UserInfo newUser = (UserInfo) requst.getSession().getAttribute("newUser");
|
UserInfo mainUser = (UserInfo) requst.getSession().getAttribute("mainUser");
|
if (Constant.NEWUSER.equals(create)) { // 创建
|
UserInfo user;
|
synchronized (UserInfo.class) {
|
user = userInfoService.addUser(newUser, appid);
|
}
|
if (user != null) {
|
|
JSONObject data = new JSONObject();
|
data.put("user", GsonUtil.toJsonExpose(user));
|
data.put("first", 1);
|
out.print(JsonUtil.loadTrueResult(data));
|
LogHelper.userInfo(GsonUtil.toJsonExpose(user));
|
} else {
|
LogHelper.userInfo("不存在用户:" + GsonUtil.toJsonExpose(form));
|
out.print(JsonUtil.loadFalseResult("登录失败"));
|
}
|
requst.getSession().removeAttribute("newUser");
|
return;
|
} else if (Constant.BINDUSER.equals(create) && mainUser == null) { // 绑定
|
int formLoginType = form.getLoginType();
|
int newUserLoginType = newUser.getLoginType();
|
if (newUserLoginType == formLoginType) { // 相同类型不能绑定
|
out.print(JsonUtil.loadFalseResult("相同类型的账号不能绑定!"));
|
return;
|
}
|
// 判断是不是微信。如果是微信就要填充微信相关信息
|
if (formLoginType == Constant.WEIXIN/*
|
* &&
|
* StringUtil.isNullOrEmpty(form
|
* .getWxOpenId())
|
*/) {
|
WeiXinUser xinUser = WXLoginUtil.getWeiXinUserWithSavePortrait(code);
|
if (xinUser == null) {
|
out.print(JsonUtil.loadFalseResult("登录失败"));
|
return;
|
}
|
form.setWxOpenId(xinUser.getOpenid());
|
form.setWxUnionId(xinUser.getUnionid());
|
form.setPortrait(xinUser.getHeadimgurl());
|
form.setNickName(xinUser.getNickname());
|
form.setWxName(xinUser.getNickname());
|
String wxHeadImg = COSManager.getInstance()
|
.uploadFile(HttpUtil.getAsInputStream(xinUser.getHeadimgurl()),
|
Constant.WXHEADURL + UUID.randomUUID().toString())
|
.getUrl();
|
form.setWxPic(wxHeadImg);
|
} else if (formLoginType == Constant.TAOBAO) {
|
form.setTbName(form.getNickName());
|
form.setTbPic(form.getPortrait());
|
}
|
form.setSystem(system);
|
requst.getSession().setAttribute("mainUser", form);
|
String openid = formLoginType == 1 ? form.getOpenid() : form.getWxUnionId();
|
// 获取主账户用户信息
|
UserInfo find = userInfoService.getUserByLoginTypeAndOpenId(formLoginType, openid, appid);
|
if (find != null) {
|
// 主账户不为空就进行绑定操作
|
bind(find, newUser);
|
userInfoService.update(find);
|
outUserInfo(acceptData, out, remotIP, find, acceptData.getDevice());
|
requst.getSession().removeAttribute("newUser");
|
requst.getSession().removeAttribute("mainUser");
|
} else {
|
// 为空的话就返回用户信息
|
out.print(JsonUtil.loadTrueResult(3, form));
|
return;
|
}
|
} else {// create=2 ,mainUser != null 创建并绑定!
|
bind(mainUser, newUser);
|
mainUser = userInfoService.addUser(mainUser, appid);
|
outUserInfo(acceptData, out, remotIP, mainUser, acceptData.getDevice());
|
requst.getSession().removeAttribute("newUser");
|
requst.getSession().removeAttribute("mainUser");
|
}
|
}
|
|
/**
|
* 淘特价登录
|
*
|
* @param acceptData
|
* @param form
|
* @param code
|
* @param create
|
* @param first
|
* @param requst
|
* @param out
|
*/
|
|
@RequestMapping(value = "getuserinfo_ttj", method = RequestMethod.POST)
|
public void getUserInfoTTJ(AcceptData acceptData, UserInfo form, String code, String create, boolean first,
|
HttpServletRequest requst, PrintWriter out) {
|
String remotIP = IPUtil.getRemotIP(requst);
|
long id = form.getId();
|
// 判断是不是用ID登陆的,如果是用ID登陆的其他都不要管了
|
if (id != 0) {
|
UserInfo find = userInfoService.getUserById(id);
|
if (find != null) {
|
outUserInfo(acceptData, out, remotIP, find, acceptData.getDevice());
|
return;
|
} else {
|
out.print(JsonUtil.loadFalseResult("不存在该账户!"));
|
return;
|
}
|
}
|
// 不是用ID的登陆的事就多了
|
BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
|
acceptData.getPackages());
|
if (system == null) {
|
out.print(JsonUtil.loadFalseResult("系统不存在"));
|
return;
|
}
|
form.setSystem(system);
|
String appid = system.getAppid();
|
UserInfo user = userInfoService.getUserByLoginTypeAndOpenId(1, form.getOpenid(), appid);
|
if (user == null) {
|
// 创建用户
|
userInfoService.addUser(form, appid);
|
user = userInfoService.getUserByLoginTypeAndOpenId(1, form.getOpenid(), appid);
|
}
|
|
// 返回用户信息
|
outUserInfo(acceptData, out, remotIP, user, acceptData.getDevice());
|
}
|
|
/**
|
* 将副账户绑定到主账户上
|
*
|
* @param mainUser
|
* @param viceUser
|
*/
|
private void bind(UserInfo mainUser, UserInfo viceUser) {
|
int loginType = viceUser.getLoginType();
|
if (loginType == Constant.TAOBAO) {
|
mainUser.setOpenid(viceUser.getOpenid());
|
mainUser.setTbName(viceUser.getNickName());
|
mainUser.setTbPic(viceUser.getTbPic());
|
} else if (loginType == Constant.WEIXIN) {
|
mainUser.setWxName(viceUser.getWxName());
|
mainUser.setWxOpenId(viceUser.getWxOpenId());
|
mainUser.setWxUnionId(viceUser.getWxUnionId());
|
mainUser.setWxPic(viceUser.getWxPic());
|
}
|
}
|
|
private void outUserInfo(AcceptData acceptData, PrintWriter out, String remotIP, UserInfo user, String device) {
|
user.setTotalHongBao(new BigDecimal(0));
|
BigDecimal unOpenmoney = new BigDecimal(0);
|
BigDecimal canOpenMoney = new BigDecimal(0);
|
user.setNoOpenHongBao(unOpenmoney);
|
user.setCanOpenHongBao(canOpenMoney);
|
|
/**
|
* 查询改用户返利红包
|
*/
|
BigDecimal fanliHB = user.getTotalHongBao();
|
user.setTotalHongBao(fanliHB);
|
|
UserInfo filterForClientUser = UserUtil.filterForClientUser(user);
|
|
// 1.5.0 版本之后返回新的等级
|
String version = acceptData.getVersion();
|
if (version != null && version.trim().length() > 0) {
|
int versionCode = Integer.parseInt(version);
|
String platform = acceptData.getPlatform();
|
|
AppVersionInfo versionInfo = appVersionService.getByPlatformAndVersion(platform, "1.5.0");
|
if (versionInfo != null) {
|
int versionCode150 = versionInfo.getVersionCode();
|
if (versionCode >= versionCode150) {
|
UserInfoExtraVO userInfoExtra = userInfoExtraService.getInfoExtraVOByUid(user.getId());
|
if (userInfoExtra != null && userInfoExtra.getUserRank() != null) {
|
String picture = userInfoExtra.getUserRank().getPicture();
|
String icon = userInfoExtra.getUserRank().getIcon();
|
filterForClientUser.setRankNamePicture(picture);
|
filterForClientUser.setRankIcon(icon);
|
}
|
}
|
}
|
}
|
|
GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation();
|
|
JSONObject data = new JSONObject();
|
data.put("user",
|
JsonUtil.getConvertBigDecimalToStringBuilder(gsonBuilder).create().toJson(filterForClientUser));
|
data.put("first", 0);
|
int spreadImgCount = spreadUserImgService.countUserSpreadImg(user.getId());
|
long shareCount = userShareGoodsRecordService.countShareRecordByUid(user.getId());
|
|
int showTiCheng = 1; // 不显示
|
if ("ios".equalsIgnoreCase(acceptData.getPlatform())
|
&& configService.iosOnLining(Integer.parseInt(acceptData.getVersion())))
|
data.put("showTiCheng", false);
|
else {
|
data.put("showTiCheng", spreadImgCount + shareCount > 0);
|
if (spreadImgCount + shareCount > 0) {
|
showTiCheng = 0;
|
}
|
}
|
|
if ("ios".equalsIgnoreCase(acceptData.getPlatform())
|
&& configService.iosOnLining(Integer.parseInt(acceptData.getVersion())))
|
data.put("inviteList", String.format("http://%s/%s/client/share/friends_new_online.html",
|
Constant.systemCommonConfig.getProjectHost(), Constant.systemCommonConfig.getProjectName()));
|
else
|
data.put("inviteList", configService.get("team_list"));
|
|
// 界面状态
|
UserSettingsVO mySettings = null;
|
try {
|
mySettings = userCustomSettingsService.getMySettings(user.getId());
|
} catch (UserCustomSettingsException e) {
|
mySettings = new UserSettingsVO();
|
e.printStackTrace();
|
}
|
|
if (mySettings.getCancelNotice() == null) {
|
mySettings.setCancelNotice(0);
|
}
|
if (mySettings.getNoBonusCount() == null) {
|
mySettings.setNoBonusCount(showTiCheng); // 根据showTiCheng来判断
|
}
|
if (mySettings.getNoNewsRedDot() == null) {
|
mySettings.setNoNewsRedDot(0);
|
}
|
if (mySettings.getNoShareRecordAndStorage() == null) {
|
mySettings.setNoShareRecordAndStorage(showTiCheng); // 根据showTiCheng来判断
|
}
|
if (mySettings.getNoInvitationBonus() == null) {
|
mySettings.setNoInvitationBonus(0);
|
}
|
if (mySettings.getOpenSpreadHongBao() == null) {
|
mySettings.setOpenSpreadHongBao(0);
|
}
|
data.put("moduleState", mySettings);
|
|
int welfareCenterNews = 0;
|
String invitCode = null;
|
UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(user.getId());
|
if (userInfoExtra != null) {
|
if (userInfoExtra.getCouponNews() != null) {
|
welfareCenterNews = userInfoExtra.getCouponNews();
|
}
|
|
if (userInfoExtra.getInviteCode() != null && userInfoExtra.getInviteCode().trim().length() > 0) {
|
invitCode = userInfoExtra.getInviteCode();
|
}
|
}
|
// 邀请码
|
data.put("invitCode", invitCode);
|
// 福利中心消息
|
data.put("welfareCenterNews", welfareCenterNews);
|
|
out.print(JsonUtil.loadTrueResult(data));
|
|
final UserInfo uuser = user;
|
ThreadUtil.run(new Runnable() {
|
public void run() {
|
|
try {
|
// 获取邀请码:若无邀请码且存在有效的队员关系 则自动生成邀请码
|
userInfoExtraService.getUserInviteCode(uuser.getId());
|
} catch (UserInfoExtraException e) {
|
e.printStackTrace();
|
}
|
|
LogHelper.userInfo(GsonUtil.toJsonExpose(uuser));
|
uuser.setLastLoginIp(remotIP);
|
uuser.setLastLoginTime(java.lang.System.currentTimeMillis());
|
userInfoService.updateLoginInfo(uuser);
|
// 用户等级更新
|
try {
|
userInfoExtraService.updateUserRankByUid(uuser.getId());
|
} catch (UserInfoExtraException e) {
|
e.printStackTrace();
|
}
|
|
}
|
});
|
}
|
|
@RequestMapping("bindUserInfo")
|
public void bindUserInfo(AcceptData acceptData, UserInfo form, String code, PrintWriter out) {
|
UserInfo find = userInfoService.getUserById(form.getId());
|
if (find == null) {
|
out.print(JsonUtil.loadFalseResult("绑定失败,不存在该用户!"));
|
return;
|
}
|
int loginType = form.getLoginType();
|
if (loginType == Constant.WEIXIN) {
|
WeiXinUser weiXinUser = WXLoginUtil.getWeiXinUserWithSavePortrait(code);
|
|
if (weiXinUser == null) {
|
out.print(JsonUtil.loadFalseResult("绑定失败,用户异常请重试!"));
|
return;
|
}
|
|
LogHelper.test(
|
String.format("绑定微信:头像为 %s \n 昵称为 %s", weiXinUser.getHeadimgurl(), weiXinUser.getNickname()));
|
|
String wxUnionId = weiXinUser.getUnionid();
|
UserInfo userInfo = userInfoService.getUserByLoginTypeAndOpenId(loginType, wxUnionId, Constant.APPID);
|
if (userInfo != null) {
|
out.print(JsonUtil.loadFalseResult("绑定失败,该微信账户已存在!"));
|
return;
|
}
|
find.setWxName(weiXinUser.getNickname());
|
find.setWxOpenId(weiXinUser.getOpenid());
|
find.setWxUnionId(weiXinUser.getUnionid());
|
String wxHeadImg = COSManager.getInstance()
|
.uploadFile(HttpUtil.getAsInputStream(weiXinUser.getHeadimgurl()),
|
Constant.WXHEADURL + UUID.randomUUID().toString())
|
.getUrl();
|
find.setWxPic(wxHeadImg);
|
} else { // 绑定淘宝
|
LogHelper.test(String.format("绑定淘宝:头像为 %s \n 昵称为 %s", form.getPortrait(), form.getTbName()));
|
UserInfo userInfo = userInfoService.getUserByLoginTypeAndOpenId(loginType, form.getOpenid(),
|
Constant.APPID);
|
if (userInfo != null) {
|
out.print(JsonUtil.loadFalseResult("绑定失败,该淘宝账户已存在!"));
|
return;
|
}
|
find.setOpenid(form.getOpenid());
|
find.setTbName(form.getTbName());
|
find.setTbPic(form.getPortrait());
|
}
|
userInfoService.update(find);
|
out.print(JsonUtil.loadTrueResult(GsonUtil.toJsonExpose(UserUtil.filterForClientUser(find))));
|
}
|
|
/**
|
*
|
* @param data
|
* @param uid
|
* 用户ID
|
* @param type
|
* 需要解绑的账户类型
|
*/
|
@RequestMapping("unBindUserInfo")
|
public void unBindUserInfo(AcceptData data, long uid, int type, PrintWriter out) {
|
UserInfo find = userInfoService.getUserById(uid);
|
if (find == null) {
|
out.print(JsonUtil.loadFalseResult("不存在该用户!"));
|
return;
|
}
|
String openid = find.getOpenid();
|
String wxUnionId = find.getWxUnionId();
|
if (Constant.TAOBAO == type) {
|
if (StringUtil.isNullOrEmpty(openid)) {
|
out.print(JsonUtil.loadFalseResult("当前用户未绑定该类型账户!"));
|
return;
|
}
|
} else if (Constant.WEIXIN == type) {
|
if (StringUtil.isNullOrEmpty(wxUnionId)) {
|
out.print(JsonUtil.loadFalseResult("当前用户未绑定该类型账户!"));
|
return;
|
}
|
}
|
int count = 0;
|
if (StringUtil.isNullOrEmpty(openid)) {
|
count++;
|
}
|
if (StringUtil.isNullOrEmpty(wxUnionId)) {
|
count++;
|
}
|
if (count == 1) {
|
out.print(JsonUtil.loadFalseResult("当前只绑定了一个账户,不能解绑!"));
|
return;
|
}
|
userInfoService.unBindUserInfo(find, type);
|
out.print(JsonUtil.loadTrueResult("解绑成功"));
|
}
|
|
/**
|
* 获取用户提现账号
|
*
|
* @param acceptData
|
* @param uid
|
* @param out
|
*/
|
@RequestMapping(value = "getuseraccount", method = RequestMethod.POST)
|
public void getUserAccount(AcceptData acceptData, Long uid, PrintWriter out) {
|
|
if (uid == null) {
|
out.print(JsonUtil.loadFalseResult(1, "请登录"));
|
return;
|
}
|
|
UserInfo user = userInfoService.getUserByIdWithMybatis(uid);
|
if (user == null) {
|
out.print(JsonUtil.loadFalseResult("用户不存在"));
|
return;
|
}
|
|
List<BindingAccount> bindingAccountList = bindingAccountService.getBindingAccountByUid(uid);
|
JSONObject data = new JSONObject();
|
data.put("user", user);
|
Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
|
|
data.put("error", "0");
|
data.put("maxError", 1);
|
String minMoney = configService.get(EXTRACT_MIN_MONEY); // 单笔提现的最小金额
|
String maxMoney = configService.get(EXTRACT_MAX_MONEY); // 单笔提现的最小金额
|
String maxDayMoney = configService.get("extract_money_day"); // 每日最大提现金额
|
int maxDayCount = Integer.parseInt(configService.get("extract_count_day"));
|
ExtractRecord extractRecord = extractRecordService.getExtractRecordByUid(uid);
|
boolean canExtract = true;
|
String errorMsg = "";
|
if (extractRecord != null && extractRecord.getCount() >= maxDayCount) {
|
canExtract = false;
|
errorMsg = String.format("每日最多提现%s次", maxDayCount + "");
|
} else if (extractRecord != null
|
&& extractRecord.getMoney().add(new BigDecimal(minMoney)).compareTo(new BigDecimal(maxDayMoney)) > 0) {
|
canExtract = false;
|
errorMsg = String.format("每日最多提现%s元", maxDayMoney);
|
}
|
data.put("canExtract", canExtract);
|
data.put("extractErrorMsg", errorMsg);
|
|
data.put("minMoney", minMoney);//单笔最低
|
data.put("maxMoney", maxMoney);//单笔最高
|
data.put("maxDayCount", maxDayCount);
|
data.put("bindingAccountList", gson.toJson(filterBindingAccount(bindingAccountList)));
|
|
JSONObject alipayVerify = new JSONObject();
|
try {
|
bindingAccountService.canVerifyAlipayAccount(uid);
|
alipayVerify.put("state", 0);
|
alipayVerify.put("msg", "可绑定");
|
} catch (BindingAccountException e) {
|
alipayVerify.put("state", e.getCode());
|
alipayVerify.put("msg", e.getMsg());
|
}
|
|
data.put("alipayBindState", alipayVerify);
|
out.print(JsonUtil.loadTrueResult(data));
|
}
|
|
/**
|
* 是否能够提现
|
*
|
* @param acceptData
|
* @param uid
|
* @param out
|
*/
|
@RequestMapping(value = "canextract", method = RequestMethod.POST)
|
public void canExtract(AcceptData acceptData, Long uid, BigDecimal money, PrintWriter out) {
|
|
if (uid == null) {
|
out.print(JsonUtil.loadFalseResult(1, "请登录"));
|
return;
|
}
|
|
if (money == null) {
|
out.print(JsonUtil.loadFalseResult(1, "请上传金额"));
|
return;
|
}
|
|
UserInfo user = userInfoService.getUserByIdWithMybatis(uid);
|
if (user == null) {
|
out.print(JsonUtil.loadFalseResult("用户不存在"));
|
return;
|
}
|
|
String minMoney = configService.get(EXTRACT_MIN_MONEY); // 单笔提现的最小金额
|
String maxDayMoney = configService.get("extract_money_day"); // 每日最大提现金额
|
int maxDayCount = Integer.parseInt(configService.get("extract_count_day"));
|
ExtractRecord extractRecord = extractRecordService.getExtractRecordByUid(uid);
|
boolean canExtract = true;
|
String errorMsg = "";
|
if (extractRecord != null && extractRecord.getCount() + 1 > maxDayCount) {
|
canExtract = false;
|
errorMsg = String.format("每日最多提现%s次", maxDayCount + "");
|
} else if (extractRecord != null
|
&& extractRecord.getMoney().add(money).compareTo(new BigDecimal(maxDayMoney)) > 0) {
|
canExtract = false;
|
errorMsg = String.format("每日最多提现%s元", maxDayMoney);
|
} else if (new BigDecimal(minMoney).compareTo(money) > 0) {
|
canExtract = false;
|
errorMsg = String.format("每次最低提现%s元", minMoney);
|
}
|
|
if (canExtract) {
|
out.print(JsonUtil.loadTrueResult(""));
|
} else {
|
out.print(JsonUtil.loadFalseResult(errorMsg));
|
}
|
}
|
|
@RequestMapping(value = "getalipayaccount", method = RequestMethod.POST)
|
public void getAlipayAccount(AcceptData acceptData, Long uid, PrintWriter out) {
|
|
if (uid == null) {
|
out.print(JsonUtil.loadFalseResult(1, "请登录"));
|
return;
|
}
|
|
List<BindingAccount> bindingAccountList = bindingAccountService.getBindingAccountByUid(uid);
|
|
if (bindingAccountList == null || bindingAccountList.size() == 0) {
|
out.print(JsonUtil.loadFalseResult(2, "尚未绑定支付宝"));
|
return;
|
}
|
|
out.print(JsonUtil.loadTrueResult(JsonUtil.getSimpleGsonWithDate().toJson(bindingAccountList.get(0))));
|
}
|
|
public static List<BindingAccount> filterBindingAccount(List<BindingAccount> bindingAccountList) {
|
List<BindingAccount> accountList = new ArrayList<>();
|
|
if (bindingAccountList != null)
|
for (BindingAccount bindingAccount : bindingAccountList) {
|
BindingAccount dest = new BindingAccount();
|
try {
|
PropertyUtils.copyProperties(dest, bindingAccount);
|
if (!StringUtil.isNullOrEmpty(dest.getAccount()) && !StringUtil.isNullOrEmpty(dest.getName())) {
|
String name = "";
|
if ((dest.getName() + "").length() > 2)
|
for (int i = 0; i < (dest.getName() + "").length(); i++) {
|
if (i == 0)
|
name += dest.getName().charAt(i);
|
else
|
name += "*";
|
}
|
else
|
name = dest.getName().charAt(0) + "*";
|
dest.setName(name);
|
|
String account = "";
|
if (dest.getAccount().indexOf("@") > -1) {// 邮箱
|
int index = dest.getAccount().indexOf("@");
|
|
for (int i = 0; i < dest.getAccount().length(); i++) {
|
if (i < 3 || i >= index)
|
account += dest.getAccount().charAt(i);
|
else
|
account += "*";
|
}
|
} else if (StringUtil.isMobile(dest.getAccount())) {// 电话
|
account = dest.getAccount().substring(0, 3) + "*****" + dest.getAccount()
|
.substring(dest.getAccount().length() - 2, dest.getAccount().length());
|
|
} else {// 其他
|
if (dest.getAccount().length() >= 6) {
|
for (int i = 0; i < dest.getAccount().length(); i++) {
|
if (i < 3 || i >= dest.getAccount().length() - 2)
|
account += dest.getAccount().charAt(i);
|
else
|
account += "*";
|
}
|
} else {
|
for (int i = 0; i < dest.getAccount().length(); i++) {
|
if (i < 1 || i >= dest.getAccount().length() - 1)
|
account += dest.getAccount().charAt(i);
|
else
|
account += "*";
|
}
|
}
|
}
|
|
dest.setAccount(account);
|
|
}
|
accountList.add(dest);
|
} catch (IllegalAccessException e) {
|
e.printStackTrace();
|
} catch (InvocationTargetException e) {
|
e.printStackTrace();
|
} catch (NoSuchMethodException e) {
|
e.printStackTrace();
|
}
|
}
|
|
return accountList;
|
}
|
|
public static BindingAccount filterBindingAccount(BindingAccount bindingAccount) {
|
BindingAccount dest = new BindingAccount();
|
try {
|
PropertyUtils.copyProperties(dest, bindingAccount);
|
if (!StringUtil.isNullOrEmpty(dest.getAccount()) && !StringUtil.isNullOrEmpty(dest.getName())) {
|
String name = "";
|
if ((dest.getName() + "").length() > 2)
|
for (int i = 0; i < (dest.getName() + "").length(); i++) {
|
if (i == 0)
|
name += dest.getName().charAt(i);
|
else
|
name += "*";
|
}
|
else
|
name = dest.getName().charAt(0) + "*";
|
dest.setName(name);
|
|
String account = "";
|
if (dest.getAccount().indexOf("@") > -1) {// 邮箱
|
int index = dest.getAccount().indexOf("@");
|
|
for (int i = 0; i < dest.getAccount().length(); i++) {
|
if (i < 3 || i >= index)
|
account += dest.getAccount().charAt(i);
|
else
|
account += "*";
|
}
|
} else if (StringUtil.isMobile(dest.getAccount())) {// 电话
|
account = dest.getAccount().substring(0, 3) + "*****"
|
+ dest.getAccount().substring(dest.getAccount().length() - 2, dest.getAccount().length());
|
|
} else {// 其他
|
if (dest.getAccount().length() >= 6) {
|
for (int i = 0; i < dest.getAccount().length(); i++) {
|
if (i < 3 || i >= dest.getAccount().length() - 2)
|
account += dest.getAccount().charAt(i);
|
else
|
account += "*";
|
}
|
} else {
|
for (int i = 0; i < dest.getAccount().length(); i++) {
|
if (i < 1 || i >= dest.getAccount().length() - 1)
|
account += dest.getAccount().charAt(i);
|
else
|
account += "*";
|
}
|
}
|
}
|
|
dest.setAccount(account);
|
|
}
|
} catch (IllegalAccessException e) {
|
e.printStackTrace();
|
} catch (InvocationTargetException e) {
|
e.printStackTrace();
|
} catch (NoSuchMethodException e) {
|
e.printStackTrace();
|
}
|
|
return dest;
|
|
}
|
|
/**
|
* 添加用户提现账号
|
*
|
* @param acceptData
|
* @param uid
|
* 用户id
|
* @param account
|
* 账号
|
* @param name
|
* 真实名字
|
* @param type
|
* 账号类型:1.支付宝 2.微信
|
* @param out
|
*/
|
@RequestMapping(value = "addbindingaccount", method = RequestMethod.POST)
|
public void addBindingAccount(AcceptData acceptData, long uid, String account, String name, int type,
|
PrintWriter out) {
|
|
if (Constant.ZHIFUBAO != type && Constant.WEIXIN != type) {
|
out.print(JsonUtil.loadFalseResult(Constant.NOTYPE));
|
return;
|
}
|
UserInfo user = userInfoService.getUserById(uid);
|
if (user == null) {
|
out.print(JsonUtil.loadFalseResult("用户不存在"));
|
return;
|
}
|
BindingAccount addAccount = new BindingAccount();
|
addAccount.setAccount(account);
|
addAccount.setType(type);
|
addAccount.setUserInfo(user);
|
addAccount.setName(name);
|
try {
|
bindingAccountService.addBindingAccount(addAccount);
|
} catch (BindingAccountException e) {
|
out.print(JsonUtil.loadFalseResult(e.getMessage()));
|
return;
|
}
|
out.print(JsonUtil.loadTrueResult(Constant.BA_SUCCESS));
|
return;
|
}
|
|
/**
|
* 删除用户提现账号
|
*
|
* @param acceptData
|
* @param uid
|
* 用户id
|
* @param type
|
* 账号类型
|
* @param out
|
*/
|
@RequestMapping(value = "deletebindingaccount", method = RequestMethod.POST)
|
public void deleteBindingAccount(AcceptData acceptData, long uid, int type, PrintWriter out) {
|
|
if (type != Constant.ZHIFUBAO && type != Constant.WEIXIN) {
|
out.print(JsonUtil.loadFalseResult(Constant.NOTYPE));
|
return;
|
}
|
|
UserInfo user = userInfoService.getUserById(uid);
|
if (user == null) {
|
out.print(JsonUtil.loadFalseResult("用户不存在"));
|
return;
|
}
|
BindingAccount account = new BindingAccount();
|
account.setType(type);
|
account.setUserInfo(user);
|
Integer deletecount = bindingAccountService.deleteBindingAccount(account);
|
JSONObject data = new JSONObject();
|
data.put("count", deletecount);
|
out.print(JsonUtil.loadTrueResult(data));
|
return;
|
}
|
|
/**
|
* 新版提现
|
*
|
* @param acceptData
|
* @param uid
|
* @param money
|
* @param vcode
|
* 手机验证码
|
* @param request
|
* @param type
|
* @param out
|
*/
|
@RequestSerializableByKey(key="uid")
|
@RequestMapping(value = "extractmoneynew", method = RequestMethod.POST)
|
public void extractMoneyNew(AcceptData acceptData, long uid, BigDecimal money, String vcode,
|
HttpServletRequest request, int type, PrintWriter out) {
|
UserInfo user = userInfoService.getUserById(uid);
|
if (user == null) {
|
user = userInfoService.getUserByIdWithMybatis(uid);
|
if (user != null && user.getState() != UserInfo.STATE_NORMAL) {
|
out.print(JsonUtil.loadFalseResult(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC));
|
return;
|
}
|
|
out.print(JsonUtil.loadFalseResult("用户不存在"));
|
return;
|
}
|
|
if (money == null) {
|
out.print(JsonUtil.loadFalseResult(1, "请上传提现金额"));
|
return;
|
}
|
|
// 判断手机验证码的正确性
|
String oldCode = redisManager.getSMSVCode(user.getPhone(), SMSHistory.TYPE_LOGIN);
|
if (StringUtil.isNullOrEmpty(oldCode) || !oldCode.equalsIgnoreCase(vcode)) {
|
out.print(JsonUtil.loadFalseResult(90001, "验证码错误"));
|
return;
|
}
|
|
BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
|
acceptData.getPackages());
|
if (system == null) {
|
LogHelper.userInfo("提现时,不存在该系统");
|
out.print(JsonUtil.loadFalseResult("系统不存在"));
|
return;
|
}
|
|
String minMoney = configService.get(EXTRACT_MIN_MONEY); // 单笔提现最小金额
|
|
if (money.compareTo(new BigDecimal("0.1")) < 0) { // 转帐到支付宝的最小金额
|
out.print(JsonUtil.loadFalseResult("单笔提现金额需要大于:" + 0.1 + "元"));
|
return;
|
}
|
|
if (money.compareTo(new BigDecimal(minMoney)) < 0) { // 后台设置的单笔转账的最小金额
|
out.print(JsonUtil.loadFalseResult("单笔提现金额需要大于:" + minMoney + "元"));
|
return;
|
}
|
String maxMoney = configService.get(EXTRACT_MAX_MONEY); // 单笔提现最大金额
|
if (new BigDecimal(maxMoney).compareTo(money) < 0) { // 后台设置的单笔转账的最大金额
|
out.print(JsonUtil.loadFalseResult("单笔提现金额多为:" + maxMoney + "元"));
|
return;
|
}
|
|
if (type != Constant.ZHIFUBAO && type != Constant.WEIXIN) { // 提现类型必须是支付宝类型或者微信类型,目前(20170506)仅支持支付宝
|
out.print(JsonUtil.loadFalseResult(Constant.NOTYPE));
|
return;
|
}
|
|
BindingAccount bindingAccount = bindingAccountService.getBindingAccountByUidAndType(uid, type);
|
if (bindingAccount == null) {
|
out.print(JsonUtil.loadFalseResult(Constant.NOACCOUNT));
|
return;
|
}
|
|
Extract extract = new Extract();
|
extract.setIp(IPUtil.getRemotIP(request));
|
extract.setAccount(bindingAccount.getAccount());
|
extract.setName(bindingAccount.getName());
|
extract.setMoney(new BigDecimal(String.valueOf(money)));
|
extract.setUserInfo(user);
|
extract.setExtractTime(java.lang.System.currentTimeMillis());
|
extract.setType(type);
|
extract.setState(0);
|
extract.setSystem(system);
|
Integer etype = extractService.addExtract(extract);
|
if (etype == null) {
|
JSONObject data = new JSONObject();
|
data.put("id", extract.getId());
|
out.print(JsonUtil.loadTrueResult(data));
|
ThreadUtil.run(new Runnable() {
|
|
@Override
|
public void run() {
|
JSONObject json = new JSONObject();
|
json.put("timeStamp", java.lang.System.currentTimeMillis());
|
json.put("adminId", 4L);
|
String sign = AESUtil.encrypt(json.toString(), Constant.ADMINH5_AESKEY);
|
String url = "";
|
try {
|
url = String.format("%s?from=emailh5&sign=%s",
|
Constant.systemCommonConfig.getExtractNotifyUrl(), URLEncoder.encode(sign, "UTF-8"));
|
} catch (UnsupportedEncodingException e) {
|
e.printStackTrace();
|
}
|
|
long[] targetUids = new long[] { 3L, 4L };
|
Config config = configService.getConfig("extract_code_email_from");
|
String[] sts = config.getValue().split(",");
|
String account = sts[0];
|
String pwd = sts[1];
|
for (long adminId : targetUids) {
|
AdminUser adminUser = adminUserService.selectByPrimaryKey(adminId);
|
String msg = "提现审核链接:" + url;
|
boolean isS = MailSenderUtil.sendEmail(adminUser.getEmail(), account, pwd, "有新的提现审核", msg);
|
}
|
}
|
});
|
return;
|
} else if (etype == 1) {
|
out.print(JsonUtil.loadFalseResult("已超过当日提现次数"));
|
} else if (etype == 2) {
|
out.print(JsonUtil.loadFalseResult("已超过当日提现金额"));
|
} else if (etype == 3) {
|
out.print(JsonUtil.loadFalseResult("提现金额大于我的红包"));
|
} else if (etype == 111) {
|
out.print(JsonUtil.loadFalseResult("更换了手机号后7天内不允许提现"));
|
} else if (etype == 110) {
|
out.print(JsonUtil.loadFalseResult(Constant.znxConfig.getExtractWrongMsg()));
|
}
|
|
}
|
|
/**
|
* 获取提现进度
|
*
|
* @param acceptData
|
* @param id
|
* @param uid
|
* @param out
|
*/
|
@RequestMapping(value = "getextractprocess", method = RequestMethod.POST)
|
public void getExtractProcess(AcceptData acceptData, long id, Long uid, PrintWriter out) {
|
if (uid == null) {
|
out.print(JsonUtil.loadFalseResult("请上传用户ID"));
|
return;
|
}
|
Extract extract = extractService.getExtractById(id);
|
if (extract == null) {
|
out.print(JsonUtil.loadFalseResult("提现记录不存在"));
|
return;
|
}
|
if (extract.getUserInfo().getId().longValue() != uid) {
|
out.print(JsonUtil.loadFalseResult("不属于当前用户的提现记录"));
|
return;
|
}
|
|
BindingAccount account = new BindingAccount();
|
account.setAccount(extract.getAccount());
|
account.setName(extract.getName());
|
List<BindingAccount> bindingAccountList = new ArrayList<>();
|
bindingAccountList.add(account);
|
bindingAccountList = filterBindingAccount(bindingAccountList);
|
|
JSONObject data = new JSONObject();
|
data.put("id", extract.getId());
|
data.put("money", "¥" + extract.getMoney().toString());
|
data.put("account", bindingAccountList.get(0).getAccount());
|
data.put("expireTime",
|
TimeUtil.getGernalTime(extract.getExtractTime() + 1000 * 60 * 60 * 24L, "yyyy-MM-dd HH:mm"));// 24小时后到账
|
|
out.print(JsonUtil.loadTrueResult(data));
|
}
|
|
@RequestMapping("findLostOrder")
|
public void findLostOrder(AcceptData acceptData, LostOrder lostOrder, PrintWriter out) {
|
boolean orderNum = true;
|
|
if (!NumberUtil.isNumeric(lostOrder.getOrderId())) {
|
orderNum = false;
|
} else if (lostOrder.getOrderId().length() < 12 || lostOrder.getOrderId().length() > 20) {
|
orderNum = false;
|
} else
|
orderNum = Utils.isOrderNum(lostOrder.getOrderId());
|
|
int state;
|
String stateInfo = "提交成功,请等待审核结果。";
|
if (!orderNum) {
|
state = -4;
|
stateInfo = "请提交标准的订单号";
|
} else {
|
state = lostOrderService.addLostOrder(lostOrder);
|
if (state == -3) {
|
stateInfo = "该订单已是返利订单。";
|
} else if (state == -2) {
|
stateInfo = "请勿重复提交,该订单已在审核中。";
|
} else if (state == -1) {
|
stateInfo = "该订单申诉已通过,请稍后查看。";
|
} else if (state == -5) {
|
stateInfo = "该订单为分享奖金订单";
|
}
|
}
|
JSONObject data = new JSONObject();
|
data.put("state", state);
|
data.put("info", stateInfo);
|
out.print(JsonUtil.loadTrueResult(data));
|
}
|
|
@RequestMapping("findOrderItemList")
|
public void findOrderItemList(AcceptData acceptData, long uid, int page, PrintWriter out) {
|
List<HongBaoOrder> list = hongBaoOrderService.listFanLiOrder(uid, page, Constant.PAGE_SIZE);
|
|
List<OrderItem> orderList = new ArrayList<>();
|
for (HongBaoOrder oi : list) {
|
OrderItem orderItem = OrderItemFactory.create(oi);
|
orderItem.setDesc();
|
orderItem.setPicture(TbImgUtil.getTBSize220Img(orderItem.getPicture()));
|
orderList.add(orderItem);
|
}
|
long count = hongBaoOrderService.countFanLiOrder(uid);
|
Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
|
.excludeFieldsWithoutExposeAnnotation().create();
|
JSONObject data = new JSONObject();
|
data.put("list", gson.toJson(orderList));
|
data.put("count", count);
|
out.print(JsonUtil.loadTrueResult(data));
|
}
|
|
/**
|
* 获取提成订单列表
|
*
|
* @param acceptData
|
* @param uid
|
* @param page
|
* @param out
|
*/
|
@RequestMapping("getTiChengOrderList")
|
public void getTiChengOrderList(AcceptData acceptData, long uid, int page, PrintWriter out) {
|
List<HongBaoDTO> hongBaoDTOList = hongBaoV2Service.listJiangJinByUid(uid, page, Constant.PAGE_SIZE);
|
List<HongBao> list = new ArrayList<>();
|
if (hongBaoDTOList != null)
|
for (HongBaoDTO dto : hongBaoDTOList) {
|
list.add(HongBaoFactory.createHongBao(dto));
|
}
|
long count = hongBaoV2Service.countJiangJinByUid(uid);
|
List<OrderItem> orderItemList = HongBaoUtil.convertToTiChengOrder(list);
|
Gson gson = JsonUtil.getApiCommonGson();
|
JSONObject data = new JSONObject();
|
data.put("list", gson.toJson(orderItemList));
|
data.put("count", count);
|
out.print(JsonUtil.loadTrueResult(data));
|
}
|
|
@RequestMapping("findAccountMessageList")
|
public void findAccountMessageList(AcceptData acceptData, long uid, int page, PrintWriter out) {
|
accountMessageService.syncSystemZnx(uid);
|
List<AccountMessage> list = accountMessageService.findAccountMessageList(uid, page);
|
int count = accountMessageService.getCount(uid);
|
JSONObject data = new JSONObject();
|
data.put("list", GsonUtil.toJsonExpose(list));
|
data.put("count", count);
|
out.print(JsonUtil.loadTrueResult(data));
|
}
|
|
@RequestMapping("openAccountMessage")
|
public void openAccountMessage(AcceptData acceptData, long id, PrintWriter out) {
|
accountMessageService.open(id);
|
out.print(JsonUtil.loadTrueResult("打开成功"));
|
}
|
|
@RequestMapping("findCanOpenMessage")
|
public void findCanOpenMessage(AcceptData acceptData, long uid, PrintWriter out) {
|
accountMessageService.syncSystemZnx(uid);
|
// count>0 有消息
|
int count = accountMessageService.getCanOpenCount(uid);
|
out.print(JsonUtil.loadTrueResult(count));
|
|
ThreadUtil.run(new Runnable() {
|
@Override
|
public void run() {
|
// 用户等级更新
|
try {
|
userInfoExtraService.updateUserRankByUid(uid);
|
} catch (Exception e) {
|
LogHelper.errorDetailInfo(e);
|
}
|
}
|
});
|
}
|
|
@RequestMapping("collectionGoods")
|
public void collectionGoods(AcceptData acceptData, long uid, long auctionId, int type, PrintWriter out) {
|
CollectionGoodsV2 find = collectionGoodsV2Service.findByUidAndAuctionId(uid, auctionId);
|
if (type == 1) {
|
if (find != null) {
|
out.print(JsonUtil.loadFalseResult(""));
|
return;
|
}
|
try {
|
TaoBaoGoodsBrief taoBaoGoodsBrief = redisManager.getTaoBaoGoodsBrief(auctionId);
|
collectionGoodsV2Service.addCollection(uid, taoBaoGoodsBrief);
|
out.print(JsonUtil.loadTrueResult("收藏成功"));
|
} catch (TaobaoGoodsDownException e) {
|
out.print(JsonUtil.loadFalseResult(1, "商品已下架"));
|
} catch (CollectionGoodsException e1) {
|
out.print(JsonUtil.loadFalseResult(e1.getCode(), e1.getMsg()));
|
}
|
} else {
|
if (find == null) {
|
out.print(JsonUtil.loadTrueResult("取消收藏成功"));
|
return;
|
} else {
|
try {
|
collectionGoodsV2Service.cancelCollectionByAuctionId(uid, auctionId);
|
out.print(JsonUtil.loadTrueResult("取消收藏成功"));
|
} catch (CollectionGoodsException e) {
|
out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
|
}
|
}
|
}
|
|
}
|
|
/**
|
* h5收藏
|
*
|
* @param callback
|
* @param acceptData
|
* @param uid
|
* @param auctionId
|
* @param out
|
*/
|
@RequestMapping("collectionGoodsJp")
|
public void collectionGoodsJp(String callback, AcceptData acceptData, Long uid, Long auctionId, PrintWriter out) {
|
|
if (uid == null || auctionId == null) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(""));
|
return;
|
}
|
|
CollectionGoodsV2 find = collectionGoodsV2Service.findByUidAndAuctionId(uid, auctionId);
|
|
if (find == null) {
|
// 添加收藏
|
try {
|
TaoBaoGoodsBrief taoBaoGoodsBrief = redisManager.getTaoBaoGoodsBrief(auctionId);
|
collectionGoodsV2Service.addCollection(uid, taoBaoGoodsBrief);
|
JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(1));
|
} catch (TaobaoGoodsDownException e) {
|
JsonUtil.printMode(out, callback, (JsonUtil.loadFalseResult(1, "商品已下架")));
|
} catch (CollectionGoodsException e1) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e1.getCode(), e1.getMsg()));
|
}
|
} else {
|
// 取消收藏
|
try {
|
collectionGoodsV2Service.cancelCollectionByAuctionId(uid, auctionId);
|
JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("取消收藏成功"));
|
} catch (CollectionGoodsException e) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
|
}
|
}
|
|
}
|
|
@RequestMapping("collectionGoodsList")
|
public void collectionGoodsList(AcceptData acceptData, long uid, int page, PrintWriter out) {
|
|
List<CollectionGoodsV2> collectionGoodsList = collectionGoodsV2Service.getCollectionGoodsList(uid, page + 1,
|
Constant.PAGE_SIZE);
|
|
List<TaoBaoGoodsBriefExtra> list = new ArrayList<TaoBaoGoodsBriefExtra>();
|
|
long count = collectionGoodsV2Service.getCollectionGoodsCount(uid);
|
JSONObject data = new JSONObject();
|
|
List<TaoBaoGoodsBrief> listTaoKeGoods = new ArrayList<TaoBaoGoodsBrief>();
|
if (collectionGoodsList != null && collectionGoodsList.size() > 0) {
|
|
BigDecimal proportion = hongBaoManageService.getFanLiRate();
|
|
List<Long> listGid = new ArrayList<Long>();
|
for (CollectionGoodsV2 collectionGoodsV2 : collectionGoodsList) {
|
CommonGoods commonGoods = collectionGoodsV2.getCommonGoods();
|
if (commonGoods == null) {
|
continue;
|
}
|
listGid.add(commonGoods.getGoodsId());
|
}
|
|
try {
|
// API网络接口验证是否在售
|
listTaoKeGoods = TaoKeApiUtil.getBatchGoodsInfo(listGid);
|
} catch (TaoKeApiException e) {
|
e.printStackTrace();
|
} catch (TaobaoGoodsDownException e) {
|
e.printStackTrace();
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
|
for (CollectionGoodsV2 collectionGoodsV2 : collectionGoodsList) {
|
CommonGoods commonGoods = collectionGoodsV2.getCommonGoods();
|
if (commonGoods == null) {
|
continue;
|
}
|
|
if (listTaoKeGoods != null && listTaoKeGoods.size() > 0) {
|
int state = 1; // 默认停售
|
Long goodsId = commonGoods.getGoodsId();
|
for (TaoBaoGoodsBrief taoKeGoods : listTaoKeGoods) {
|
Long auctionId = taoKeGoods.getAuctionId();
|
if (goodsId == auctionId || goodsId.equals(auctionId)) {
|
state = 0; // 在售
|
break;
|
}
|
}
|
commonGoods.setState(state);
|
}
|
|
TaoBaoGoodsBrief goodsBrief = TaoBaoUtil.convert(commonGoods);
|
goodsBrief.setSalesCount(TaoBaoUtil.getSaleCount(goodsBrief.getBiz30day()));
|
TaoBaoGoodsBriefExtra taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(goodsBrief,
|
proportion.toString(), "");
|
taoBaoGoodsBriefExtra.setCreatetime(collectionGoodsV2.getCreateTime());
|
|
list.add(taoBaoGoodsBriefExtra);
|
}
|
|
}
|
|
GsonBuilder builder = new GsonBuilder().registerTypeAdapter(Date.class, new JsonSerializer<Date>() {
|
@Override
|
public JsonElement serialize(Date value, Type theType, JsonSerializationContext context) {
|
if (value == null) {
|
return new JsonPrimitive("");
|
} else {
|
return new JsonPrimitive(value.getTime() + "");
|
}
|
}
|
});
|
|
Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(builder).excludeFieldsWithoutExposeAnnotation()
|
.create();
|
data.put("list", gson.toJson(list));
|
data.put("count", count);
|
out.print(JsonUtil.loadTrueResult(data));
|
}
|
|
@RequestMapping("deleteCollectionGoods")
|
public void deleteCollectionGoods(AcceptData acceptData, String ids, Integer type, long uid, PrintWriter out) {
|
if (type != null && type == 1) {
|
clearConllectionGoods(acceptData, uid, out);
|
} else {
|
if (!StringUtil.isNullOrEmpty(ids)) {
|
Arrays.asList(ids.split(",")).parallelStream().forEach(auctionIdStr -> {
|
try {
|
collectionGoodsV2Service.cancelCollectionByAuctionId(uid, Long.parseLong(auctionIdStr));
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
});
|
}
|
}
|
out.print(JsonUtil.loadTrueResult("删除成功"));
|
}
|
|
@RequestMapping("clearConllectionGoods")
|
public void clearConllectionGoods(AcceptData acceptData, long uid, PrintWriter out) {
|
try {
|
collectionGoodsV2Service.cancelCollectionByUid(uid);
|
} catch (CollectionGoodsException e) {
|
e.printStackTrace();
|
out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMessage()));
|
}
|
out.print(JsonUtil.loadTrueResult("删除成功"));
|
}
|
|
@RequestMapping("ruleMessage")
|
public void ruleMessage(AcceptData acceptData, PrintWriter out) {
|
JSONObject data = new JSONObject();
|
data.put("rank3", String.format("成功邀请50个好友完成注册安装%sAPP(包括一度好友和二度好友之和)",
|
Constant.systemCommonConfig.getProjectChineseName()));
|
data.put("rank2", String.format("成功邀请5个好友完成注册安装%sAPP(包括一度好友和二度好友之和)",
|
Constant.systemCommonConfig.getProjectChineseName()));
|
data.put("rank1", String.format("成功邀请1个好友完成注册安装%sAPP(包括一度好友和二度好友之和)",
|
Constant.systemCommonConfig.getProjectChineseName()));
|
out.print(JsonUtil.loadTrueResult(data));
|
}
|
|
@RequestMapping("findAccountDetailsList")
|
public void findAccountDetailsList(AcceptData acceptData, long uid, int page, PrintWriter out) {
|
List<UserMoneyDetail> detailList = userMoneyDetailService.listByUidWithState(uid, page, Constant.PAGE_SIZE);
|
List<AccountDetails> list = new ArrayList<>();
|
for (UserMoneyDetail detail : detailList)
|
list.add(AccountDetailsFactory.create(detail));
|
long count = userMoneyDetailService.countByUidWithState(uid);
|
JSONObject data = new JSONObject();
|
data.put("list", GsonUtil.toJsonExpose(list));
|
data.put("count", count);
|
out.print(JsonUtil.loadTrueResult(data));
|
}
|
|
@RequestMapping("findAccountDetailsListV2")
|
public void findAccountDetailsListNew(AcceptData acceptData, Long uid, int page, PrintWriter out) {
|
|
if (uid == null) {
|
out.print(JsonUtil.loadFalseResult(1, "UID为空"));
|
return;
|
}
|
|
List<UserMoneyDetail> detailList = userMoneyDetailService.listByUidWithState(uid, page, Constant.PAGE_SIZE);
|
|
List<AccountDetails> list = new ArrayList<>();
|
for (UserMoneyDetail detail : detailList)
|
list.add(AccountDetailsFactory.create(detail));
|
|
long count = userMoneyDetailService.countByUidWithState(uid);
|
|
JSONObject data = new JSONObject();
|
JSONArray array = new JSONArray();
|
for (AccountDetails ad : list) {
|
JSONObject item = JSONObject.fromObject(GsonUtil.toJsonExpose(ad));
|
if (ad.getState() != null && ad.getState() != -1)
|
item.put("stateIcon",
|
"http://hcj-1255749512.file.myqcloud.com/resource/app/extract_state_" + ad.getState() + ".png");
|
array.add(item);
|
}
|
data.put("list", array);
|
data.put("count", count);
|
out.print(JsonUtil.loadTrueResult(data));
|
}
|
|
// 获取商品分享链接
|
@RequestMapping(value = "getGoodsShareUrl")
|
public void getGoodsShareUrl(AcceptData acceptData, long id, PrintWriter out) {
|
out.print(JsonUtil
|
.loadTrueResult(String.format("%s?id=" + id, Constant.systemCommonConfig.getAppShareInfoUrl())));
|
}
|
|
/**
|
* 用户队员列表查询 1.4.1
|
*
|
* @param acceptData
|
* @param id
|
* @param out
|
*/
|
@RequestMapping(value = "getMyTeam", method = RequestMethod.POST)
|
public void getMyTeam(AcceptData acceptData, long page, long uid, long type, PrintWriter out) {
|
|
try {
|
int pageSize = Constant.PAGE_SIZE;
|
|
JSONObject resultData = new JSONObject();
|
if (type == 1) {
|
resultData = threeSaleSerivce.getMyFirstTeam((page - 1) * pageSize, pageSize, uid, null);
|
} else if (type == 2) {
|
resultData = threeSaleSerivce.getMySecondTeam((page - 1) * pageSize, pageSize, uid, null);
|
}
|
|
// 安卓系统返回所有数据
|
String platform = acceptData.getPlatform();
|
if ("android".equalsIgnoreCase(platform)) {
|
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 = null;
|
ThreeSale threeSale = threeSaleSerivce.getMyBoss(uid);
|
if (threeSale != null) {
|
bossData = new JSONObject();
|
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));
|
}
|
|
String helpLink = configService.get("team_help_url");
|
if (helpLink == null) {
|
helpLink = "";
|
}
|
|
boolean hasCode = false;
|
String inviteCode = userInfoExtraService.getUserInviteCode(uid);
|
if (inviteCode != null && inviteCode.trim().length() > 0) {
|
hasCode = true; // 已有邀请码
|
} else {
|
// 邀请激活链接
|
resultData.put("activationlink", configService.get("invite_activation_url"));
|
}
|
resultData.put("hasCode", hasCode);
|
|
resultData.put("helpLink", helpLink);
|
resultData.put("firstTeam", firstTeam);
|
resultData.put("firstTeamTotal", firstTeamTotal);
|
resultData.put("secondTeam", secondTeam);
|
resultData.put("secondTeamTotal", secondTeamTotal);
|
resultData.put("boss", bossData);
|
}
|
out.print(JsonUtil.loadTrueResult(resultData));
|
} catch (UserInfoExtraException e) {
|
out.print(JsonUtil.loadFalseResult(e.getMsg()));
|
} catch (Exception e) {
|
out.print(JsonUtil.loadFalseResult("统计失败"));
|
e.printStackTrace();
|
}
|
|
}
|
|
/**
|
* 用户队员列表查询 1.5.3查询有效队员
|
*
|
* @param acceptData
|
* @param id
|
* @param out
|
*/
|
@RequestMapping(value = "getMyTeamNew", method = RequestMethod.POST)
|
public void getMyTeamNew(AcceptData acceptData, long page, long uid, long type, PrintWriter out) {
|
|
try {
|
int pageSize = Constant.PAGE_SIZE;
|
|
JSONObject resultData = new JSONObject();
|
if (type == 1) {
|
resultData = threeSaleSerivce.getMyFirstTeam((page - 1) * pageSize, pageSize, uid, 1);
|
} else if (type == 2) {
|
resultData = threeSaleSerivce.getMySecondTeam((page - 1) * pageSize, pageSize, uid, 1);
|
}
|
|
// 安卓系统返回所有数据
|
String platform = acceptData.getPlatform();
|
if ("android".equalsIgnoreCase(platform)) {
|
long firstTeam = threeSaleSerivce.countFirstTeam(uid, 1);
|
|
long secondTeam = threeSaleSerivce.countSecondTeam(uid, 1);
|
|
JSONObject bossData = null;
|
ThreeSale threeSale = threeSaleSerivce.getMyBoss(uid);
|
if (threeSale != null) {
|
bossData = new JSONObject();
|
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));
|
}
|
|
String helpLink = configService.get("team_help_url");
|
if (helpLink == null) {
|
helpLink = "";
|
}
|
|
boolean hasCode = false;
|
String inviteCode = userInfoExtraService.getUserInviteCode(uid);
|
if (inviteCode != null && inviteCode.trim().length() > 0) {
|
hasCode = true; // 已有邀请码
|
} else {
|
// 邀请激活链接
|
resultData.put("activationlink", configService.get("invite_activation_url"));
|
}
|
resultData.put("hasCode", hasCode);
|
|
resultData.put("helpLink", helpLink);
|
resultData.put("firstTeam", firstTeam);
|
resultData.put("secondTeam", secondTeam);
|
resultData.put("boss", bossData);
|
}
|
out.print(JsonUtil.loadTrueResult(resultData));
|
} catch (UserInfoExtraException e) {
|
out.print(JsonUtil.loadFalseResult(e.getMsg()));
|
} catch (Exception e) {
|
out.print(JsonUtil.loadFalseResult("统计失败"));
|
e.printStackTrace();
|
}
|
}
|
|
/**
|
* 用户队员统计 1.4.1
|
*
|
* @param acceptData
|
* @param id
|
* @param out
|
*/
|
@RequestMapping(value = "countMyTeam", method = RequestMethod.POST)
|
public void countMyTeam(AcceptData 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.getUserInviteCode(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 (UserInfoExtraException e) {
|
out.print(JsonUtil.loadFalseResult(e.getMsg()));
|
} catch (Exception e) {
|
out.print(JsonUtil.loadFalseResult("统计失败"));
|
e.printStackTrace();
|
}
|
|
}
|
|
/**
|
* 用户队员信息保存 1.4.1
|
*
|
* @param acceptData
|
* @param uid
|
* @param inviteId
|
* 邀请id
|
* @param nickname
|
* @param out
|
*/
|
@RequestMapping(value = "setextrainfo", method = RequestMethod.POST)
|
public void setExtraInfo(AcceptData acceptData, long uid, long inviteId, String memoName, PrintWriter out) {
|
|
try {
|
List<ThreeSale> listThreeSale = threeSaleSerivce.listbyIdAndBossId(inviteId, uid, null);
|
if (listThreeSale == null || listThreeSale.size() == 0) {
|
out.print(JsonUtil.loadFalseResult("该记录不存在"));
|
return;
|
}
|
|
UserInfo worker = listThreeSale.get(0).getWorker();
|
if (worker == null) {
|
out.print(JsonUtil.loadFalseResult("该记录不存在"));
|
return;
|
}
|
|
List<ThreeSaleExtraInfo> list = threeSaleExtraInfoSerivce.listbyBossIdAndWorkerId(uid, worker.getId());
|
if (list == null || list.size() == 0) {
|
|
ThreeSaleExtraInfo extraInfo = new ThreeSaleExtraInfo();
|
extraInfo.setWorker(worker);
|
extraInfo.setNickname(memoName);
|
extraInfo.setCreateTime(new Date());
|
extraInfo.setUpdateTime(new Date());
|
|
UserInfo boss = new UserInfo(uid);
|
extraInfo.setBoss(boss);
|
|
threeSaleExtraInfoSerivce.insert(extraInfo);
|
|
} else {
|
ThreeSaleExtraInfo extraInfo = list.get(0);
|
extraInfo.setNickname(memoName);
|
extraInfo.setUpdateTime(new Date());
|
threeSaleExtraInfoSerivce.updateByPrimaryKey(extraInfo);
|
}
|
|
out.print(JsonUtil.loadTrueResult("保存成功"));
|
|
} catch (Exception e) {
|
out.print(JsonUtil.loadFalseResult("保存失败"));
|
e.printStackTrace();
|
}
|
|
}
|
|
/**
|
* 删除队员关系
|
*
|
* @param acceptData
|
* @param uid
|
* @param inviteId
|
* 邀请id
|
* @param out
|
*/
|
@RequestMapping(value = "removethreesale", method = RequestMethod.POST)
|
public void removethreesale(AcceptData acceptData, long uid, long inviteId, PrintWriter out) {
|
try {
|
List<ThreeSale> listThreeSale = threeSaleSerivce.listbyIdAndBossId(inviteId, uid, 1);
|
if (listThreeSale == null || listThreeSale.size() == 0) {
|
out.print(JsonUtil.loadFalseResult("操作数据无效"));
|
return;
|
}
|
|
UserInfo worker = listThreeSale.get(0).getWorker();
|
if (worker == null) {
|
out.print(JsonUtil.loadFalseResult("操作数据无效"));
|
return;
|
}
|
|
// 删除关系
|
threeSaleSerivce.deleteByPrimaryKey(inviteId);
|
// 删除备注
|
threeSaleExtraInfoSerivce.deleteByBossIdAndWorkerId(uid, worker.getId());
|
|
out.print(JsonUtil.loadTrueResult("删除成功"));
|
} catch (Exception e) {
|
out.print(JsonUtil.loadFalseResult("删除失败"));
|
e.printStackTrace();
|
}
|
}
|
|
/**
|
* 设置界面开关状态
|
*
|
* @param acceptData
|
* @param uid
|
* @param params
|
* @param out
|
*/
|
@RequestMapping(value = "setModuleState", method = RequestMethod.POST)
|
public void setModuleState(AcceptData acceptData, Long uid, String params, PrintWriter out) {
|
|
if (uid == null) {
|
out.print(JsonUtil.loadFalseResult("用户未登录"));
|
return;
|
}
|
|
try {
|
if (params == null || params.trim().length() == 0) {
|
out.print(JsonUtil.loadFalseResult("传递参数为空"));
|
return;
|
}
|
|
JSONObject json = JSONObject.fromObject(params);
|
Iterator<String> iterator = json.keys();
|
while (iterator.hasNext()) {
|
String type = (String) iterator.next();
|
int state = json.getInt(type);
|
userCustomSettingsService.saveModuleState(uid, type, state);
|
}
|
out.print(JsonUtil.loadTrueResult("设置成功"));
|
|
} catch (UserCustomSettingsException e) {
|
out.print(JsonUtil.loadFalseResult(e.getMsg()));
|
} catch (Exception e) {
|
out.print(JsonUtil.loadFalseResult("设置失败"));
|
e.printStackTrace();
|
}
|
}
|
|
/**
|
* 获取等级信息
|
*
|
* @param acceptData
|
* @param uid
|
* @param out
|
*/
|
@RequestMapping(value = "getRankInfo", method = RequestMethod.POST)
|
public void getRankInfo(AcceptData acceptData, Long uid, PrintWriter out) {
|
|
if (uid == null) {
|
out.print(JsonUtil.loadFalseResult("用户未登录"));
|
return;
|
}
|
|
try {
|
UserInfoExtraVO rankInfo = userInfoExtraService.getRankInfo(uid);
|
GsonBuilder gsonBuilder = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder());
|
gsonBuilder.excludeFieldsWithoutExposeAnnotation();
|
Gson gson = gsonBuilder.setDateFormat("yyyy.MM.dd").create();
|
|
JSONObject resultData = new JSONObject();
|
resultData.put("rankInfo", gson.toJson(rankInfo));
|
|
out.print(JsonUtil.loadTrueResult(resultData));
|
|
} catch (UserInfoExtraException e) {
|
out.print(JsonUtil.loadFalseResult(e.getMsg()));
|
} catch (Exception e) {
|
out.print(JsonUtil.loadFalseResult("获取失败"));
|
e.printStackTrace();
|
}
|
}
|
|
/**
|
* 获取等级信息
|
*
|
* @param acceptData
|
* @param uid
|
* @param out
|
*/
|
@RequestMapping(value = "getUserConfig", method = RequestMethod.POST)
|
public void getUserConfig(AcceptData acceptData, Long uid, PrintWriter out) {
|
|
if (uid == null) {
|
out.print(JsonUtil.loadFalseResult("用户未登录"));
|
return;
|
}
|
|
try {
|
|
String inviteCode = userInfoExtraService.getUserInviteCode(uid);
|
|
JSONObject inviteData = new JSONObject();
|
if (inviteCode == null || inviteCode.trim().length() == 0) {
|
// 无邀请码
|
inviteData.put("content", "邀请激活");
|
inviteData.put("link", configService.get("invite_activation_url"));
|
} else {
|
// 已有邀请码
|
inviteData.put("content", "邀请码");
|
inviteData.put("link", configService.get("invite_activation_success_url"));
|
}
|
|
JSONObject data = new JSONObject();
|
data.put("invite", inviteData);
|
|
out.print(JsonUtil.loadTrueResult(data));
|
|
} catch (UserInfoExtraException e) {
|
out.print(JsonUtil.loadFalseResult(e.getMsg()));
|
} catch (Exception e) {
|
out.print(JsonUtil.loadFalseResult("获取失败"));
|
e.printStackTrace();
|
}
|
}
|
|
/**
|
* 获取用户信息
|
*
|
* @param acceptData
|
* @param form
|
* @param requst
|
* @param out
|
*/
|
@RequestMapping(value = "getuserinfoNew", method = RequestMethod.POST)
|
public void getuserinfoNew(AcceptData acceptData, Long uid, HttpServletRequest requst, PrintWriter out) {
|
try {
|
BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
|
acceptData.getPackages());
|
if (system == null) {
|
out.print(JsonUtil.loadFalseResult("系统不存在"));
|
return;
|
}
|
|
if (uid == null) {
|
out.print(JsonUtil.loadFalseResult("请求参数为空"));
|
return;
|
}
|
|
UserInfo userInfo = userInfoService.getUserInfo(uid);
|
|
// 添加用户活跃记录
|
UserActiveLog userActiveLog = new UserActiveLog();
|
userActiveLog.setChannel(acceptData.getChannel());
|
userActiveLog.setIp(requst.getRemoteHost());
|
userActiveLog.setUid(userInfo.getId());
|
userActiveLog.setVersionCode(acceptData.getVersion());
|
userActiveLog.setOsVersion(acceptData.getOsVersion());
|
userActiveLog.setDeviceType(acceptData.getDeviceType());
|
userActiveLogService.addUserActiveLog(userActiveLog);
|
|
// 处理用户信息
|
outUserInfoHandle(userInfo);
|
|
GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation();
|
JSONObject data = new JSONObject();
|
data.put("user", JsonUtil.getConvertBigDecimalToStringBuilder(gsonBuilder).create().toJson(userInfo));
|
|
// 界面状态
|
UserSettingsVO mySettings = null;
|
try {
|
mySettings = userCustomSettingsService.getMySettings(uid);
|
} catch (UserCustomSettingsException e) {
|
mySettings = new UserSettingsVO();
|
e.printStackTrace();
|
}
|
|
if (mySettings.getCancelNotice() == null) {
|
mySettings.setCancelNotice(0);
|
}
|
if (mySettings.getNoBonusCount() == null) {
|
mySettings.setNoBonusCount(0);
|
}
|
if (mySettings.getNoNewsRedDot() == null) {
|
mySettings.setNoNewsRedDot(0);
|
}
|
if (mySettings.getNoShareRecordAndStorage() == null) {
|
mySettings.setNoShareRecordAndStorage(0);
|
}
|
if (mySettings.getNoInvitationBonus() == null) {
|
mySettings.setNoInvitationBonus(0);
|
}
|
|
if (mySettings.getOpenSpreadHongBao() == null) {
|
if(userTaoLiJinDetailService.countDetail(uid) > 0) {
|
mySettings.setOpenSpreadHongBao(1);
|
} else {
|
mySettings.setOpenSpreadHongBao(0);
|
}
|
}
|
data.put("moduleState", mySettings);
|
|
|
|
|
int welfareCenterNews = 0;
|
String invitCode = null;
|
UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid);
|
if (userInfoExtra != null) {
|
if (userInfoExtra.getCouponNews() != null) {
|
welfareCenterNews = userInfoExtra.getCouponNews();
|
}
|
|
if (userInfoExtra.getInviteCode() != null && userInfoExtra.getInviteCode().trim().length() > 0) {
|
invitCode = userInfoExtra.getInviteCode();
|
}
|
|
if (userInfoExtra.getUserRank() != null) {
|
String picture = userInfoExtra.getUserRank().getPicture();
|
String icon = userInfoExtra.getUserRank().getIcon();
|
userInfo.setRankNamePicture(picture);
|
userInfo.setRankIcon(icon);
|
} else {
|
userInfo.setRankNamePicture(null);
|
userInfo.setRankIcon(null);
|
}
|
}
|
|
data.put("invitCode", invitCode); // 邀请码
|
data.put("welfareCenterNews", welfareCenterNews);// 福利中心消息
|
out.print(JsonUtil.loadTrueResult(data));
|
|
final UserInfo uuser = userInfo;
|
ThreadUtil.run(new Runnable() {
|
public void run() {
|
try {
|
// 获取邀请码:若无邀请码且存在有效的队员关系 则自动生成邀请码
|
userInfoExtraService.getUserInviteCode(uuser.getId());
|
} catch (UserInfoExtraException e) {
|
e.printStackTrace();
|
}
|
|
// 更新用户附加信息,老用户不存在的需要添加
|
try {
|
userInfoExtraService.updateUserRankByUid(uuser.getId());
|
} catch (UserInfoExtraException e) {
|
e.printStackTrace();
|
}
|
}
|
});
|
|
} catch (UserInfoException e) {
|
out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
|
} catch (Exception e) {
|
out.print(JsonUtil.loadFalseResult("获取失败"));
|
e.printStackTrace();
|
}
|
}
|
|
private void outUserInfoHandle(UserInfo user) {
|
|
// 红包处理
|
user.setTotalHongBao(new BigDecimal(0));
|
user.setNoOpenHongBao(new BigDecimal(0));
|
user.setCanOpenHongBao(new BigDecimal(0));
|
|
// 电话号码处理
|
if (!StringUtil.isNullOrEmpty(user.getPhone())) {
|
if (user.getPhone().length() > 5) {
|
String phone = user.getPhone().substring(0, 3);
|
phone += "******";
|
phone += user.getPhone().substring(user.getPhone().length() - 2, user.getPhone().length());
|
user.setPhone(phone);
|
}
|
}
|
|
UserInfoExtraVO userInfoExtra = userInfoExtraService.getInfoExtraVOByUid(user.getId());
|
if (userInfoExtra != null && userInfoExtra.getUserRank() != null) {
|
String picture = userInfoExtra.getUserRank().getPicture();
|
String icon = userInfoExtra.getUserRank().getIcon();
|
user.setRankNamePicture(picture);
|
user.setRankIcon(icon);
|
}
|
}
|
|
|
/**
|
* 用户更换头像
|
* @param acceptData
|
* @param fileList
|
* @param uid
|
* @param request
|
* @param out
|
*/
|
@RequestMapping(value = "uploadPortrait")
|
public void uploadPortrait(AcceptData acceptData, MultipartFile file, Long uid, HttpServletRequest request, PrintWriter out) {
|
try {
|
if (uid == null) {
|
out.print(JsonUtil.loadFalseResult("用户未登录"));
|
return;
|
}
|
|
if (file == null) {
|
out.print(JsonUtil.loadFalseResult("上传文件不能为空"));
|
return;
|
}
|
|
userInfoService.uploadPortrait(file, uid);
|
|
out.print(JsonUtil.loadTrueResult("保存成功"));
|
|
} catch (UserInfoException e) {
|
out.print(JsonUtil.loadFalseResult(e.getMsg()));
|
try {
|
LogHelper.errorDetailInfo(e);
|
} catch (Exception e1) {
|
e1.printStackTrace();
|
}
|
} catch (IOException e) {
|
out.print(JsonUtil.loadFalseResult("图片上传失败失败"));
|
try {
|
LogHelper.errorDetailInfo(e);
|
} catch (Exception e1) {
|
e1.printStackTrace();
|
}
|
} catch (Exception e) {
|
out.print(JsonUtil.loadFalseResult("保存失败"));
|
try {
|
LogHelper.errorDetailInfo(e);
|
} catch (Exception e1) {
|
e1.printStackTrace();
|
}
|
}
|
}
|
|
/**
|
* 更换昵称
|
* @param acceptData
|
* @param nickName
|
* @param uid
|
* @param out
|
*/
|
@RequestMapping(value = "saveInfo")
|
public void saveInfo(AcceptData acceptData, String nickName, Long uid, PrintWriter out) {
|
try {
|
if (uid == null) {
|
out.print(JsonUtil.loadFalseResult("用户未登录"));
|
return;
|
}
|
if (StringUtil.isNullOrEmpty(nickName)) {
|
out.print(JsonUtil.loadFalseResult("昵称不能为空"));
|
return;
|
}
|
if (nickName.length() > 200) {
|
out.print(JsonUtil.loadFalseResult("昵称过长"));
|
return;
|
}
|
|
if(maskKeyService.examineContent(nickName)) {
|
out.print(JsonUtil.loadFalseResult("不能包含敏感词汇"));
|
return;
|
}
|
|
userInfoService.saveUserInfo(nickName, uid);
|
|
out.print(JsonUtil.loadTrueResult("保存成功"));
|
} catch (UserInfoException e) {
|
out.print(JsonUtil.loadFalseResult(e.getMsg()));
|
e.printStackTrace();
|
} catch (Exception e) {
|
out.print(JsonUtil.loadFalseResult("保存失败"));
|
e.printStackTrace();
|
}
|
}
|
}
|