package com.yeshi.fanli.controller.client.lijin;
|
|
import com.ks.vip.exception.VipOrderException;
|
import com.ks.vip.pojo.DO.VipCenter;
|
import com.ks.vip.pojo.DO.VipCenterRecord;
|
import com.ks.vip.pojo.DO.VipCombo;
|
import com.ks.vip.pojo.DO.VipOrder;
|
import com.ks.vip.pojo.DTO.PayWayInfoDTO;
|
import com.ks.vip.pojo.Enums.OrderTypeEnum;
|
import com.ks.vip.pojo.Enums.PayWayEnum;
|
import com.ks.vip.pojo.Enums.VIPEnum;
|
import com.ks.vip.service.VipComboService;
|
import com.yeshi.fanli.entity.accept.AcceptData;
|
import com.yeshi.fanli.entity.bus.user.UserInfo;
|
import com.yeshi.fanli.entity.system.ConfigKeyEnum;
|
import com.yeshi.fanli.lijin.dto.TodayLijinCreatedInfo;
|
import com.yeshi.fanli.lijin.manager.UserLijinMnager;
|
import com.yeshi.fanli.lijin.vo.VIPGradeVO;
|
import com.yeshi.fanli.lijin.vo.VipRecordVO;
|
import com.yeshi.fanli.service.inter.config.ConfigService;
|
import com.yeshi.fanli.service.inter.user.UserInfoService;
|
import com.yeshi.fanli.util.Constant;
|
import net.sf.json.JSONObject;
|
import org.springframework.data.redis.core.RedisTemplate;
|
import org.springframework.stereotype.Controller;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.yeshi.utils.*;
|
import redis.clients.jedis.Jedis;
|
import redis.clients.jedis.JedisPool;
|
|
import javax.annotation.Resource;
|
import javax.servlet.http.HttpServletRequest;
|
import java.io.PrintWriter;
|
import java.math.BigDecimal;
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.concurrent.TimeUnit;
|
|
@Controller
|
@RequestMapping("api/lijin/user")
|
public class UserControllerLijin {
|
|
@Resource
|
private UserLijinMnager userLijinMnager;
|
|
@Resource
|
private ConfigService configService;
|
|
@Resource
|
private UserInfoService userInfoService;
|
|
@Resource
|
private JedisPool jedisPool;
|
|
/**
|
* 获取用户礼金创建状态
|
*
|
* @param acceptData
|
* @param out
|
*/
|
@RequestMapping("getUserLijinCreatedInfo")
|
public void getUserLijinCreatedInfo(AcceptData acceptData, Long uid, PrintWriter out) {
|
VIPEnum vipEnum = userLijinMnager.getVIPRank(uid);
|
VIPEnum defaultRank = userLijinMnager.getDefaultRank();
|
boolean canOpenVIP = false;
|
//淘礼金会员链接
|
String lijinUrl = configService.getValue(ConfigKeyEnum.lijinVIPLink, acceptData.getSystem());
|
TodayLijinCreatedInfo info = userLijinMnager.getTodayCreateInfo(uid);
|
|
JSONObject data = new JSONObject();
|
data.put("leftCount", info.getLeftCount());
|
data.put("leftMoney", info.getLeftMoney());
|
|
JSONObject openInfo = new JSONObject();
|
openInfo.put("vipLink", lijinUrl);
|
openInfo.put("btnName", "开通会员");
|
//今日机会已经用完
|
if (info.getLeftCount() <= 0 || info.getCreatedMoney().compareTo(new BigDecimal(1)) < 0) {
|
if (vipEnum == defaultRank) {
|
//默认等级,开通会员
|
canOpenVIP = true;
|
} else {
|
//今日机会用完了
|
canOpenVIP = false;
|
}
|
if (canOpenVIP)
|
data.put("openInfo", openInfo);
|
|
} else {
|
//还可创建
|
}
|
//是否可以开通会员
|
out.print(JsonUtil.loadTrueResult(data));
|
}
|
|
|
/**
|
* 获取会员等级列表
|
*
|
* @param acceptData
|
* @param out
|
*/
|
@RequestMapping("getVIPPriceList")
|
public void getVIPPriceList(AcceptData acceptData, Long uid, PrintWriter out) {
|
List<VIPGradeVO> voList = new ArrayList<>();
|
List<VipCombo> vipComboList = userLijinMnager.getVIPPricelist(VIPEnum.platinum);
|
for (VipCombo vipCombo : vipComboList) {
|
VIPGradeVO vo = new VIPGradeVO();
|
vo.setId(vipCombo.getId() + "");
|
vo.setMoney("¥" + MoneyBigDecimalUtil.getWithNoZera(vipCombo.getDiscountPrice()));
|
vo.setName(vipCombo.getName());
|
vo.setOriginMoney("¥" + MoneyBigDecimalUtil.getWithNoZera(vipCombo.getOriginalPrice()));
|
vo.setTag(MoneyBigDecimalUtil.getWithNoZera(vipCombo.getDiscount()) + "折");
|
voList.add(vo);
|
}
|
|
//获取用户信息
|
UserInfo userInfo = userInfoService.selectAvailableByPrimaryKey(uid);
|
JSONObject data = new JSONObject();
|
if (userInfo != null) {
|
VipCenter vipCenter = userLijinMnager.getUserLevelInfo(uid);
|
JSONObject userVO = new JSONObject();
|
userVO.put("nickName", userInfo.getNickName());
|
userVO.put("portrait", userInfo.getPortrait());
|
if (vipCenter != null)
|
userVO.put("expireDate", TimeUtil.getGernalTime(vipCenter.getEndTime().getTime(), "yyyy-MM-dd HH:mm"));
|
data.put("user", userVO);
|
}
|
|
|
data.put("count", vipComboList.size());
|
data.put("data", voList);
|
out.print(JsonUtil.loadTrueResult(data));
|
}
|
|
|
@RequestMapping("getUserLevel")
|
public void getUserLevel(AcceptData acceptData, Long uid, PrintWriter out) {
|
VIPEnum vipEnum = userLijinMnager.getVIPRank(uid);
|
JSONObject data = new JSONObject();
|
data.put("userLevel", vipEnum);
|
data.put("lijinVipLink", configService.getValue(ConfigKeyEnum.lijinVIPLink, acceptData.getSystem()));
|
out.print(JsonUtil.loadTrueResult(data));
|
}
|
|
|
/**
|
* 是否可以创建广告订单
|
*
|
* @param acceptData
|
* @param uid
|
* @param out
|
*/
|
|
@RequestMapping("canCreateAdOrder")
|
public void canCreateAdOrder(AcceptData acceptData, Long uid, PrintWriter out) {
|
boolean canCreatedOrder = userLijinMnager.canCreateADOrder(uid);
|
if (!canCreatedOrder) {
|
out.print(JsonUtil.loadFalseResult("今日免费领取会员超限,请明日再试"));
|
return;
|
}
|
JSONObject data = new JSONObject();
|
data.put("type", "csj");
|
data.put("pid", "946119116");
|
out.print(JsonUtil.loadTrueResult(data));
|
}
|
|
@RequestMapping("createAdOrder")
|
public void createAdOrder(AcceptData acceptData, Long uid, PrintWriter out) {
|
String key = "watchad-order-" + uid;
|
Jedis jedis = jedisPool.getResource();
|
Long canAdd = jedis.setnx(key, "1");
|
if (canAdd == null) {
|
out.print(JsonUtil.loadFalseResult("请稍后再试"));
|
return;
|
}
|
jedis.expire(key, 120);
|
try {
|
userLijinMnager.createADOrder(uid);
|
out.print(JsonUtil.loadTrueResult(""));
|
} catch (VipOrderException e) {
|
e.printStackTrace();
|
out.print(JsonUtil.loadFalseResult(e.getMsg()));
|
} finally {
|
jedis.del(key);
|
jedis.close();
|
}
|
}
|
|
|
@RequestMapping("getVIPOrderList")
|
public void getVIPOrderList(AcceptData acceptData, Long uid, int page, PrintWriter out) {
|
List<VipCenterRecord> list = userLijinMnager.getVipRecordList(uid, page, Constant.PAGE_SIZE);
|
List<VipRecordVO> voList = new ArrayList<>();
|
|
for (VipCenterRecord record : list) {
|
VipRecordVO vo = new VipRecordVO();
|
vo.setCreateTime(TimeUtil.getGernalTime(record.getCreateTime().getTime(), "yyyy.MM.dd HH:mm"));
|
vo.setEndTime(TimeUtil.getGernalTime(record.getEndTime().getTime(), "yyyy.MM.dd HH:mm"));
|
vo.setStartTime(TimeUtil.getGernalTime(record.getStartTime().getTime(), "yyyy.MM.dd HH:mm"));
|
vo.setOrderId(record.getOrderId() + "");
|
String name = "";
|
if (record.getVipOrder() != null) {
|
if (record.getVipOrder().getType() == OrderTypeEnum.watchVideo) {
|
name = "激励奖励铂金会员";
|
} else if (record.getVipOrder().getType() == OrderTypeEnum.buyNewly) {
|
name = "开通铂金会员";
|
} else if (record.getVipOrder().getType() == OrderTypeEnum.buyRenew) {
|
name = "续费铂金会员";
|
}
|
}
|
long timespan = record.getEndTime().getTime() - record.getStartTime().getTime();
|
int hour = (int) (timespan / (1000 * 60 * 60L));
|
|
if (hour > 24 * 93) {
|
name += "-年卡";
|
} else if (hour > 24 * 31) {
|
name += "-季卡";
|
} else if (hour > 24 * 7) {
|
name += "-月卡";
|
} else if (hour > 24) {
|
name += "-周卡";
|
} else if (hour == 24) {
|
name += "-1天";
|
} else {
|
name += "-" + hour + "小时";
|
}
|
vo.setName(name);
|
voList.add(vo);
|
}
|
long count = userLijinMnager.countVipRecord(uid);
|
JSONObject data = new JSONObject();
|
data.put("list", voList);
|
data.put("count", count);
|
out.print(JsonUtil.loadTrueResult(data));
|
}
|
|
|
/**
|
* 创建VIP订单
|
*
|
* @param acceptData
|
* @param uid
|
* @param id
|
* @param payWay 1-支付宝 2-微信
|
* @param out
|
*/
|
@RequestMapping("createVIPOrder")
|
public void createVIPOrder(AcceptData acceptData, Long uid, Long id, int payWay, HttpServletRequest request, PrintWriter out) {
|
try {
|
PayWayInfoDTO payWayInfoDTO = userLijinMnager.createVIPOrder(uid, id, payWay == 1 ? PayWayEnum.alipay : PayWayEnum.weChat, IPUtil.getRemotIP(request));
|
JSONObject data = new JSONObject();
|
if (payWayInfoDTO.getPayWay() == PayWayEnum.alipay) {
|
data.put("url", "http://api.tejia.yeshitv.com/fanli/alipay/printPayForm?formId=" + payWayInfoDTO.getAlipayFormId());
|
} else {
|
data.put("url", payWayInfoDTO.getPayUrl());
|
}
|
out.print(JsonUtil.loadTrueResult(data));
|
} catch (VipOrderException e) {
|
e.printStackTrace();
|
out.print(JsonUtil.loadFalseResult(e.getCode(), "创建订单出错"));
|
}
|
}
|
|
@RequestMapping("checkVIPOrderPay")
|
public void checkPayResult(AcceptData acceptData, String id, PrintWriter out) {
|
|
if (id == null || !NumberUtil.isNumeric(id)) {
|
out.print(JsonUtil.loadFalseResult("id格式有误"));
|
return;
|
}
|
|
VipOrder vipOrder = userLijinMnager.checkPay(Long.parseLong(id));
|
if (vipOrder == null) {
|
out.print(JsonUtil.loadFalseResult("订单不存在"));
|
return;
|
}
|
|
|
if (vipOrder.getState() == VipOrder.STATE_PAY) {
|
//支付成功
|
JSONObject data = new JSONObject();
|
data.put("money", vipOrder.getPayMoney());
|
out.print(JsonUtil.loadTrueResult(data));
|
} else {
|
//支付失败
|
out.print(JsonUtil.loadFalseResult("订单尚未支付成功"));
|
}
|
|
|
}
|
|
}
|