package com.yeshi.fanli.controller.client.v1;
|
|
import java.io.PrintWriter;
|
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 org.yeshi.utils.encrypt.DESUtil;
|
|
import com.yeshi.fanli.entity.accept.AcceptData;
|
import com.yeshi.fanli.entity.bus.homemodule.FloatAD;
|
import com.yeshi.fanli.entity.bus.homemodule.FloatAD.FloatADTypeEnum;
|
import com.yeshi.fanli.entity.bus.homemodule.SwiperPicture;
|
import com.yeshi.fanli.entity.bus.msg.MsgDeviceReadState;
|
import com.yeshi.fanli.entity.bus.user.ThreeSale;
|
import com.yeshi.fanli.entity.bus.user.UserActiveLog;
|
import com.yeshi.fanli.entity.bus.user.UserInfo;
|
import com.yeshi.fanli.entity.bus.user.vip.UserLevelEnum;
|
import com.yeshi.fanli.entity.bus.user.vip.UserLevelUpgradedNotify;
|
import com.yeshi.fanli.entity.bus.user.vip.UserVIPInfo;
|
import com.yeshi.fanli.entity.bus.user.vip.UserVIPPreInfo;
|
import com.yeshi.fanli.entity.common.JumpDetailV2;
|
import com.yeshi.fanli.entity.config.AppHomeFloatImg;
|
import com.yeshi.fanli.entity.system.ConfigKeyEnum;
|
import com.yeshi.fanli.entity.taobao.ClientTBPid;
|
import com.yeshi.fanli.service.inter.common.JumpDetailV2Service;
|
import com.yeshi.fanli.service.inter.config.ConfigService;
|
import com.yeshi.fanli.service.inter.homemodule.FloatADService;
|
import com.yeshi.fanli.service.inter.homemodule.SwiperPictureService;
|
import com.yeshi.fanli.service.inter.msg.MsgDeviceReadStateService;
|
import com.yeshi.fanli.service.inter.taobao.TaoBaoUnionConfigService;
|
import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinOriginService;
|
import com.yeshi.fanli.service.inter.user.TBPidService;
|
import com.yeshi.fanli.service.inter.user.UserActiveLogService;
|
import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
|
import com.yeshi.fanli.service.inter.user.UserInfoService;
|
import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce;
|
import com.yeshi.fanli.service.inter.user.notify.UserActivedRecordService;
|
import com.yeshi.fanli.service.inter.user.vip.UserLevelUpgradedNotifyService;
|
import com.yeshi.fanli.service.inter.user.vip.UserVIPInfoService;
|
import com.yeshi.fanli.service.inter.user.vip.UserVIPPreInfoService;
|
import com.yeshi.fanli.service.inter.user.vip.UserVipConfigService;
|
import com.yeshi.fanli.util.Constant;
|
import com.yeshi.fanli.util.StringUtil;
|
import com.yeshi.fanli.util.ThreadUtil;
|
import com.yeshi.fanli.util.TimeUtil;
|
import com.yeshi.fanli.util.VersionUtil;
|
import com.yeshi.fanli.vo.user.UserDialogBtnVO;
|
import com.yeshi.fanli.vo.user.UserDialogVO;
|
import com.yeshi.fanli.vo.user.VIPUpgradedNotifyVO;
|
|
import net.sf.json.JSONObject;
|
|
/**
|
* 动态
|
*
|
* @author Administrator
|
*
|
*/
|
@Controller("ConfigController1")
|
@RequestMapping("api/v1/config")
|
public class ConfigController {
|
|
@Resource
|
private ConfigService configService;
|
|
@Resource
|
private TBPidService tbPidService;
|
|
@Resource
|
private TaoBaoUnionConfigService taoBaoUnionConfigService;
|
|
@Resource
|
private UserInfoExtraService userInfoExtraService;
|
|
@Resource
|
private FloatADService floatADService;
|
|
@Resource
|
private JumpDetailV2Service jumpDetailV2Service;
|
|
@Resource
|
private MsgDeviceReadStateService msgDeviceReadStateService;
|
|
@Resource
|
private UserTaoLiJinOriginService uerTaoLiJinOriginService;
|
|
@Resource
|
private UserActiveLogService userActiveLogService;
|
|
@Resource
|
private SwiperPictureService swiperPictureService;
|
|
@Resource
|
private UserActivedRecordService userActivedRecordService;
|
|
@Resource
|
private UserInfoService userInfoService;
|
|
|
@Resource
|
private UserVIPInfoService userVIPInfoService;
|
|
@Resource
|
private UserVIPPreInfoService userVIPPreInfoService;
|
|
@Resource
|
private UserLevelUpgradedNotifyService userLevelUpgradedNotifyService;
|
|
@Resource
|
private ThreeSaleSerivce threeSaleSerivce;
|
|
@Resource
|
private UserVipConfigService userVipConfigService;
|
|
|
/**
|
* s 首页配置信息
|
*
|
* @param acceptData
|
* @param out
|
*/
|
@RequestMapping(value = "getHomeConfig", method = RequestMethod.POST)
|
public void getHomeConfig(AcceptData acceptData, Long uid, PrintWriter out) {
|
if (uid != null && uid == 0L)
|
uid = null;
|
|
AppHomeFloatImg appHomeFloatImg = configService.getAppHomeFloatImg();
|
if ("ios".equalsIgnoreCase(acceptData.getPlatform()) && !Constant.IS_TEST) {
|
appHomeFloatImg = null;
|
}
|
|
JSONObject data = new JSONObject();
|
if (appHomeFloatImg != null) {
|
data.put("floatImg", appHomeFloatImg);
|
}
|
|
String notifyImg = configService.getAppHomeFloatNotifyImg();
|
if (!StringUtil.isNullOrEmpty(notifyImg)) {
|
data.put("floatNotifyImg", notifyImg);
|
}
|
|
// 无新人弹框 则查询默认
|
FloatAD floatAD = floatADService.getEffectiveFloatAD(FloatAD.POSITION_INDEX, 0);
|
if (floatAD != null && floatAD.getTypeEnum() != FloatADTypeEnum.newUserRedPack) {
|
JSONObject detail = new JSONObject();
|
detail.put("img", floatAD.getPicture());
|
detail.put("jumpDetail", floatAD.getJumpDetail());
|
detail.put("params", floatAD.getParams());
|
detail.put("showTime", floatAD.getShowMode());
|
detail.put("accountLogin", floatAD.isJumpNeedLogin());
|
data.put("floatImgDetail", detail);
|
}
|
|
// 领券帮助链接,1.5.2后生效
|
String couponHelp = configService.get(ConfigKeyEnum.taobaoCouponHelp.getKey());
|
data.put("couponHelpUrl", couponHelp);
|
|
// 底部网页链接
|
String platform = acceptData.getPlatform();
|
if ("android".equalsIgnoreCase(platform)) {
|
data.put("htmlLink", configService.get(ConfigKeyEnum.indexHtmlLinkAndroid.getKey()));
|
}
|
|
// 判断新老用户
|
UserActiveLog da = null;
|
if (uid != null)
|
da = userActiveLogService.getFirstActiveInfo(uid);
|
// 新人
|
if (da == null || (System.currentTimeMillis() - da.getCreateTime().getTime()) <= 1000 * 60 * 60 * 24 * 15L) {
|
data.put("userTimeType", 0);
|
} else {// 老人
|
data.put("userTimeType", 1);
|
}
|
data.put("hotFuctionLink", configService.getByVersion(ConfigKeyEnum.hotFunctionUrl.getKey(), platform,
|
Integer.parseInt(acceptData.getVersion())));//
|
out.print(JsonUtil.loadTrueResult(data));
|
}
|
|
/**
|
* 消息中心弹框
|
*
|
* @param acceptData
|
* @param uid
|
* @param out
|
*/
|
@RequestMapping(value = "getMSGConfig", method = RequestMethod.POST)
|
public void getMSGConfig(AcceptData acceptData, Long uid, PrintWriter out) {
|
out.print(JsonUtil.loadFalseResult("推广红包相关功能已下线!"));
|
}
|
|
@RequestMapping(value = "getTaoBaoCartConfig", method = RequestMethod.POST)
|
public void getTaoBaoCartConfig(AcceptData acceptData, String position, Long uid, PrintWriter out) {
|
if (uid == null || uid <= 0) {
|
out.print(JsonUtil.loadFalseResult("用户尚未登录"));
|
return;
|
}
|
|
// 是否需要购物城转链
|
boolean convert = "0".equalsIgnoreCase(configService.get(ConfigKeyEnum.showTaobaoCartConvert.getKey())) ? false
|
: true;
|
|
if (!"cart".equalsIgnoreCase(position) && !convert) {
|
out.print(JsonUtil.loadFalseResult(""));
|
return;
|
}
|
|
ClientTBPid clientTBPid = null;
|
if ("ios".equalsIgnoreCase(acceptData.getPlatform())) {
|
clientTBPid = tbPidService.getIOSDefault();
|
} else {
|
clientTBPid = tbPidService.getAndroidDefault();
|
}
|
|
String cartJS = configService.get(ConfigKeyEnum.taobaoCartJS.getKey());
|
String cartUrl = configService.get(ConfigKeyEnum.taobaoCartLink.getKey());
|
if (!convert)// 不转链
|
{
|
cartUrl = "http://";
|
cartJS = "-";
|
}
|
String js = null;
|
String link = null;
|
try {
|
js = DESUtil.encode(cartJS, StringUtil.getBase64String("YeShiFANLI889*+"),
|
StringUtil.getBase64String("*M#34f?,"));
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
|
try {
|
link = DESUtil.encode(cartUrl, StringUtil.getBase64String("YeShiFANLI889*+"),
|
StringUtil.getBase64String("*M#34f?,"));
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
JSONObject data = new JSONObject();
|
data.put("js", js);
|
data.put("link", link);
|
data.put("tbPidInfo", clientTBPid);
|
out.print(JsonUtil.loadTrueResult(data));
|
}
|
|
@RequestMapping(value = "getWebConfig", method = RequestMethod.POST)
|
public void getWebConfig(AcceptData acceptData, String url, PrintWriter out) {
|
JSONObject data = new JSONObject();
|
if (url != null && (url.contains("s.click") || url.contains("taobao.com") || url.contains("tmall.com")
|
|| url.contains("m.tb.cn"))) {
|
data.put("baichuan", true);// 采用阿里百川的方式加载webview
|
data.put("goodsDetail", true);// 需要拦截商品详情
|
} else {
|
data.put("baichuan", false);// 不需要采用阿里百川的方式加载webview
|
data.put("goodsDetail", false);// 不需要拦截商品详情
|
}
|
out.print(JsonUtil.loadTrueResult(data));
|
}
|
|
/**
|
* 获取账号绑定中的配置信息
|
*
|
* @param acceptData
|
* @param uid
|
* @param out
|
*/
|
|
@RequestMapping(value = "getBindAccountConfig", method = RequestMethod.POST)
|
public void getBindAccountConfig(AcceptData acceptData, PrintWriter out) {
|
String alipayHelpUrl = configService.get(ConfigKeyEnum.alipayHelp.getKey());// 支付宝帮助
|
String alipayBindFailUrl = configService.get(ConfigKeyEnum.alipayBindFailReason.getKey());// 支付宝绑定失败原因
|
JSONObject data = new JSONObject();
|
data.put("alipayHelp", alipayHelpUrl);
|
data.put("alipayBindFailReason", alipayBindFailUrl);
|
out.print(JsonUtil.loadTrueResult(data));
|
}
|
|
/**
|
* 关闭提醒
|
*
|
* @param acceptData
|
* @param uid
|
* @param id
|
* @param type
|
* 0-关闭 1-点击右边按钮 2-点击左边按钮
|
* @param out
|
*/
|
@RequestMapping(value = "closeDialogNotify", method = RequestMethod.POST)
|
public void closeDialogNotify(AcceptData acceptData, Long uid, String id, String sourceId, int type,
|
PrintWriter out) {
|
|
if (uid == null) {
|
out.print(JsonUtil.loadFalseResult("用户未登录"));
|
return;
|
}
|
if (StringUtil.isNullOrEmpty(id)) {
|
out.print(JsonUtil.loadFalseResult("id为空"));
|
return;
|
}
|
if (id.equalsIgnoreCase("tearcherNotify")) {
|
userActivedRecordService.setTearcherNotified(uid);
|
out.print(JsonUtil.loadTrueResult(""));
|
} else if (id.equalsIgnoreCase("vipUpgradedNotify")) {
|
userLevelUpgradedNotifyService.setNotified(sourceId);
|
out.print(JsonUtil.loadTrueResult(""));
|
} else {
|
out.print(JsonUtil.loadFalseResult("id不存在"));
|
}
|
}
|
|
@RequestMapping(value = "getUserConfig", method = RequestMethod.POST)
|
public void getUserConfig(AcceptData acceptData, Long uid, PrintWriter out) {
|
try {
|
// 用户协议链接
|
String serviceProtocol = configService.get(ConfigKeyEnum.serviceProtocolLink.getKey());
|
// 隐私条款链接
|
String privacyProtocol = configService.get(ConfigKeyEnum.privacyProtocolLink.getKey());
|
JSONObject data = new JSONObject();
|
data.put("serviceProtocolLink", serviceProtocol);
|
data.put("privacyProtocolLink", privacyProtocol);
|
// 购物车跳转方式(包含jumpDetail与params)
|
JSONObject source = JSONObject
|
.fromObject(configService.getByVersion(ConfigKeyEnum.taobaoCartJumpDetail.getKey(),
|
acceptData.getPlatform(), Integer.parseInt(acceptData.getVersion())));
|
data.put("taoBaoCart", source);
|
|
if (VersionUtil.greaterThan_2_0_2(acceptData.getPlatform(), acceptData.getVersion())) {
|
// 我的界面banner
|
List<SwiperPicture> banner = swiperPictureService.getByBannerCardAndVersion("my_interface_banner",
|
acceptData.getPlatform(), Integer.parseInt(acceptData.getVersion()));
|
if (banner == null)
|
banner = new ArrayList<SwiperPicture>();
|
data.put("banner", JsonUtil.getApiCommonGson().toJson(banner));
|
}
|
|
if (VersionUtil.greaterThan_2_0_7(acceptData.getPlatform(), acceptData.getVersion())) {
|
// 转链的网页链接
|
String convertLinkUrl = configService.get(ConfigKeyEnum.convertDocWebLink.getKey());
|
data.put("convertLinkUrl", convertLinkUrl);
|
if (uid != null) {
|
|
String tearcherLink = configService.getByVersion(ConfigKeyEnum.tearcherLink.getKey(),
|
acceptData.getPlatform(), Integer.parseInt(acceptData.getVersion()));
|
if (userActivedRecordService.canNotifyAddTearcher(uid) && !StringUtil.isNullOrEmpty(tearcherLink)) {
|
UserInfo userInfo = userInfoService.selectAvailableByPrimaryKey(uid);
|
if (userInfo != null) {
|
JumpDetailV2 jumpDetail = jumpDetailV2Service.getByTypeCache("web",
|
Constant.getPlatformCode(acceptData.getPlatform()),
|
Integer.parseInt(acceptData.getVersion()));
|
|
JSONObject negativeParams = new JSONObject();
|
negativeParams.put("url", configService.getByVersion(ConfigKeyEnum.newerGonglue.getKey(),
|
acceptData.getPlatform(), Integer.parseInt(acceptData.getVersion())));
|
|
JSONObject positiveParams = new JSONObject();
|
positiveParams.put("url", tearcherLink);
|
|
UserDialogVO dialog = new UserDialogVO("tearcherNotify", true,
|
"HI," + userInfo.getNickName(),
|
"我是你的导师,为你在省赚过程中解难答疑,对你一对一辅导,倾听你的需求总结并反馈给板栗快省官方运营团队,快来添加我吧。",
|
new UserDialogBtnVO("复制导师微信", jumpDetail, positiveParams),
|
new UserDialogBtnVO("去新手攻略", jumpDetail, negativeParams));
|
data.put("dialog", dialog);
|
}
|
}
|
|
data.put("tearcherLink", tearcherLink);
|
}
|
}
|
|
|
if (VersionUtil.greaterThan_2_1(acceptData.getPlatform(), acceptData.getVersion())) {
|
// TODO 验证是否是导师
|
|
JSONObject inner = new JSONObject();
|
inner.put("link", userVipConfigService.getValueByKey("vip_link"));
|
inner.put("ion", "http://img.flqapp.com/resource/vip/icon_vip.png");
|
inner.put("title", "免费升级 享会员权益");
|
inner.put("btnName", "升级会员");
|
if (uid != null) {
|
// 是否导师 TODO
|
if (userVIPInfoService.isVIP(uid)) {
|
inner.put("link", userVipConfigService.getValueByKey("vip_link"));
|
inner.put("ion", "http://img.flqapp.com/resource/vip/icon_tearcher.png");
|
inner.put("title", "拿五险与津贴 享导师权益");
|
inner.put("btnName", "升级会员");
|
} else {
|
UserVIPPreInfo userVIPPreInfo = userVIPPreInfoService.getLatestProcessInfo(uid);
|
if (userVIPPreInfo != null) {
|
if (userVIPPreInfo.getProcess() == UserVIPPreInfo.PROCESS_1) {
|
inner.put("btnName", "升级高级会员");
|
} else if (userVIPPreInfo.getProcess() == UserVIPPreInfo.PROCESS_2) {
|
inner.put("btnName", "升级超级会员");
|
}
|
}
|
}
|
}
|
data.put("vip", inner);
|
}
|
|
if (VersionUtil.greaterThan_2_1(acceptData.getPlatform(), acceptData.getVersion()) && uid != null) {
|
UserLevelUpgradedNotify notify = userLevelUpgradedNotifyService.getNeedNotifyByUid(uid);
|
if (notify != null) {
|
Date endTime = getUpgradedTime(uid, notify.getToLevel());
|
Date startTime = getUpgradedTime(uid, notify.getFromLevel());
|
if (endTime != null && startTime != null) {
|
VIPUpgradedNotifyVO notifyVO = new VIPUpgradedNotifyVO();
|
notifyVO.setDay(TimeUtil.getDayDifferenceCount(startTime, endTime));
|
notifyVO.setDetailLink(notify.getToLevel().getDetailLink());
|
notifyVO.setFromLevelName(notify.getFromLevel().getName());
|
notifyVO.setId("vipUpgradedNotify");
|
notifyVO.setSourceId(notify.getId());
|
notifyVO.setToLevel(notify.getToLevel().getTag());
|
notifyVO.setToLevelName(notify.getToLevel().getName());
|
data.put("vipUpgradedNotify", notifyVO);
|
}
|
}
|
}
|
out.print(JsonUtil.loadTrueResult(data));
|
} catch (Exception e) {
|
out.print(JsonUtil.loadFalseResult("获取失败"));
|
e.printStackTrace();
|
}
|
}
|
|
|
|
|
// 获取升级时间
|
private Date getUpgradedTime(Long uid, UserLevelEnum level) {
|
Date time = null;
|
if (level == UserLevelEnum.superVIP) {
|
UserVIPInfo vipInfo = userVIPInfoService.selectByUid(uid);
|
if (vipInfo != null && vipInfo.getState() == UserVIPInfo.STATE_SUCCESS)
|
time = vipInfo.getSuccessTime();
|
|
} else if (level == UserLevelEnum.highVIP) {
|
UserVIPPreInfo info = userVIPPreInfoService.selectByUidAndProcess(uid, level.getLevel());
|
if (info != null)
|
time = info.getCreateTime();
|
} else if (level == UserLevelEnum.daRen) {
|
|
// 成为达人的时间,用户激活时间
|
ThreeSale threeSale = threeSaleSerivce.getByWorkerId(uid);
|
if (threeSale != null && threeSale.getState() == true && threeSale.getSucceedTime() != null) {
|
time = new Date(threeSale.getSucceedTime());
|
} else {// 取用户注册时间
|
UserInfo user = userInfoService.selectAvailableByPrimaryKey(uid);
|
time = new Date(user.getCreatetime());
|
}
|
}
|
|
return time;
|
}
|
|
/**
|
* 订单解析配置
|
*
|
* @param acceptData
|
* @param out
|
*/
|
@RequestMapping(value = "getOrderParseConfig", method = RequestMethod.POST)
|
public void getOrderParseConfig(AcceptData acceptData, PrintWriter out) {
|
|
if ("0".equalsIgnoreCase(configService.get(ConfigKeyEnum.autoFindTaobaoOrder.getKey())))
|
out.print(JsonUtil.loadFalseResult(1, "暂不支持"));
|
else {
|
String orderJS = configService.get(ConfigKeyEnum.taobaoOrderParseJS.getKey());
|
JSONObject data = new JSONObject();
|
try {
|
data.put("orderJS", DESUtil.encode(orderJS, StringUtil.getBase64String("YeShiFANLI889*+"),
|
StringUtil.getBase64String("*M#34f?,")));
|
data.put("orderUrl",
|
DESUtil.encode("https://buyertrade.taobao.com/trade/itemlist/list_bought_items.htm",
|
StringUtil.getBase64String("YeShiFANLI889*+"), StringUtil.getBase64String("*M#34f?,")));
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
out.print(JsonUtil.loadTrueResult(data));
|
}
|
}
|
|
/**
|
* 获取订单配置
|
*
|
* @param acceptData
|
* @param out
|
*/
|
|
@RequestMapping(value = "getOrderConfig", method = RequestMethod.POST)
|
public void getOrderConfig(AcceptData acceptData, PrintWriter out) {
|
JSONObject data = new JSONObject();
|
// 测试
|
data.put("showTaoBaoOrder",
|
"0".equalsIgnoreCase(configService.get(ConfigKeyEnum.showTaobaoOrder.getKey()).trim()) ? false : true);
|
data.put("taoBaoOrderUrl", "https://main.m.taobao.com/olist/index.html");
|
out.print(JsonUtil.loadTrueResult(data));
|
}
|
|
@RequestMapping(value = "getKeFuConfig", method = RequestMethod.POST)
|
public void getKeFuConfig(AcceptData acceptData, PrintWriter out) {
|
JSONObject data = new JSONObject();
|
data.put("meiqia", "1".equalsIgnoreCase(configService.get(ConfigKeyEnum.kefuMeiqia.getKey())) ? true : false);// 是否跳转美洽,不跳转美洽就用原来的
|
out.print(JsonUtil.loadTrueResult(data));
|
// 设置消息已读
|
ThreadUtil.run(new Runnable() {
|
@Override
|
public void run() {
|
msgDeviceReadStateService.setDeviceMsgRead(MsgDeviceReadState.TYPE_KEFU, acceptData.getDevice(),
|
"android".equalsIgnoreCase(acceptData.getPlatform()) ? 1 : 2);
|
}
|
});
|
}
|
|
/**
|
* 获取邀请码帮助链接
|
*
|
* @param acceptData
|
* @param out
|
*/
|
@RequestMapping(value = "getInviteCodeInputHelp", method = RequestMethod.POST)
|
public void getInviteCodeInputHelp(AcceptData acceptData, PrintWriter out) {
|
JSONObject data = new JSONObject();
|
data.put("helpUrl", configService.get(ConfigKeyEnum.inviteCodeInputHelp.getKey()));
|
out.print(JsonUtil.loadTrueResult(data));
|
}
|
|
}
|