| | |
| | | package com.yeshi.fanli.controller.client.v2;
|
| | |
|
| | | import java.io.PrintWriter;
|
| | | import java.lang.reflect.Type;
|
| | | import java.math.BigDecimal;
|
| | | import java.math.RoundingMode;
|
| | | import java.text.ParseException;
|
| | | import java.text.SimpleDateFormat;
|
| | | import java.util.ArrayList;
|
| | | import java.util.Calendar;
|
| | | 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.yeshi.utils.DateUtil;
|
| | | import org.yeshi.utils.JsonUtil;
|
| | |
|
| | | 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.google.gson.reflect.TypeToken;
|
| | | import com.yeshi.fanli.entity.accept.AcceptData;
|
| | | import com.yeshi.fanli.entity.bus.user.Extract;
|
| | | import com.yeshi.fanli.entity.bus.user.PreviewInfo.PreviewEnum;
|
| | | import com.yeshi.fanli.entity.bus.user.UserInfo;
|
| | | import com.yeshi.fanli.entity.money.TeamEincomeRecord;
|
| | | import com.yeshi.fanli.entity.money.UserMoneyDetail.UserMoneyDetailTypeEnum;
|
| | | import com.yeshi.fanli.entity.order.OrderMoneyDailyCount;
|
| | | import com.yeshi.fanli.entity.order.OrderMoneyDailyCount.SourceTypeEnum;
|
| | | import com.yeshi.fanli.entity.system.ConfigKeyEnum;
|
| | | import com.yeshi.fanli.log.LogHelper;
|
| | | import com.yeshi.fanli.service.inter.config.ConfigService;
|
| | | import com.yeshi.fanli.service.inter.count.HongBaoV2CountService;
|
| | | import com.yeshi.fanli.service.inter.money.TeamEincomeRecordService;
|
| | | import com.yeshi.fanli.service.inter.money.UserMoneyDetailService;
|
| | | import com.yeshi.fanli.service.inter.money.extract.ExtractService;
|
| | | import com.yeshi.fanli.service.inter.order.HongBaoV2Service;
|
| | | import com.yeshi.fanli.service.inter.order.OrderMoneyDailyCountService;
|
| | | import com.yeshi.fanli.service.inter.order.dividents.TeamDividentsSourceOrderUserMapService;
|
| | | import com.yeshi.fanli.service.inter.user.PreviewInfoService;
|
| | | import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
|
| | | import com.yeshi.fanli.service.inter.user.UserInfoService;
|
| | | import com.yeshi.fanli.util.Constant;
|
| | | import com.yeshi.fanli.util.MoneyBigDecimalUtil;
|
| | | import com.yeshi.fanli.util.StringUtil;
|
| | | import com.yeshi.fanli.util.TimeUtil;
|
| | | import com.yeshi.fanli.util.account.UserUtil;
|
| | | import com.yeshi.fanli.vo.money.IncomeDetailVO;
|
| | | import com.yeshi.fanli.vo.money.MoneyPredictVO;
|
| | | import com.yeshi.fanli.vo.money.MoneyStatisticVO;
|
| | | import com.yeshi.fanli.vo.money.TeamPredictVO;
|
| | | import com.yeshi.fanli.vo.order.OrderRankingVO;
|
| | | import com.yeshi.fanli.vo.order.TeamDividentsVO;
|
| | |
|
| | | import net.sf.json.JSONArray;
|
| | | import net.sf.json.JSONObject;
|
| | |
|
| | | /**
|
| | | * 账户系统
|
| | | * |
| | | * @author Administrator
|
| | | *
|
| | | */
|
| | | @Controller
|
| | | @RequestMapping("api/v2/usermoney")
|
| | | public class UserMoneyControllerV2 {
|
| | |
|
| | | @Resource
|
| | | private UserMoneyDetailService userMoneyDetailService;
|
| | |
|
| | | @Resource
|
| | | private UserInfoService userInfoService;
|
| | |
|
| | | @Resource
|
| | | private HongBaoV2Service hongBaoV2Service;
|
| | |
|
| | | @Resource
|
| | | private ExtractService extractService;
|
| | |
|
| | | @Resource
|
| | | private UserInfoExtraService userInfoExtraService;
|
| | |
|
| | | @Resource
|
| | | private ConfigService configService;
|
| | |
|
| | | @Resource
|
| | | private HongBaoV2CountService hongBaoV2CountService;
|
| | |
|
| | | @Resource
|
| | | private OrderMoneyDailyCountService orderMoneyDailyCountService;
|
| | |
|
| | | @Resource
|
| | | private TeamEincomeRecordService teamEincomeRecordService;
|
| | |
|
| | | @Resource
|
| | | private PreviewInfoService previewInfoService;
|
| | |
|
| | | @Resource
|
| | | private TeamDividentsSourceOrderUserMapService teamDividentsSourceOrderUserMapService;
|
| | |
|
| | | private Gson getGson() {
|
| | | GsonBuilder builder = new GsonBuilder();
|
| | | builder.registerTypeAdapter(BigDecimal.class, new JsonSerializer<BigDecimal>() {
|
| | | @Override
|
| | | public JsonElement serialize(BigDecimal value, Type theType, JsonSerializationContext context) {
|
| | | if (value == null) {
|
| | | return new JsonPrimitive("");
|
| | | } else {
|
| | | // 保留2位小数
|
| | | value = value.setScale(2, BigDecimal.ROUND_DOWN);
|
| | | return new JsonPrimitive(value.toString());
|
| | | }
|
| | | }
|
| | | });
|
| | | return builder.create();
|
| | | }
|
| | |
|
| | | /**
|
| | | * 用户资金统计
|
| | | * |
| | | * @param acceptData
|
| | | * @param uid
|
| | | * @param out
|
| | | */
|
| | | @RequestMapping(value = "getMoneyStatistic")
|
| | | public void getMoneyStatistic(AcceptData acceptData, Long uid, PrintWriter out) {
|
| | | if (uid == null || uid == 0) {
|
| | | out.print(JsonUtil.loadFalseResult(1, "用户未登录"));
|
| | | return;
|
| | | }
|
| | |
|
| | | // VIP数据预览
|
| | | MoneyStatisticVO vo = null;
|
| | | String redisContent = previewInfoService.getRedisContent(uid, PreviewEnum.moneyInfo);
|
| | | if (!StringUtil.isNullOrEmpty(redisContent)) {
|
| | | vo = new Gson().fromJson(redisContent, MoneyStatisticVO.class);
|
| | | if (vo != null) {
|
| | | vo.setLink(configService.get(ConfigKeyEnum.autoExtractHelpUrl.getKey()));
|
| | | vo.setExtractDesc("提现金额就是已成功提现到支付宝的资金");
|
| | | vo.setMoneyArrivalDesc("订单已到账后提现时间和金额均不受限制");
|
| | | }
|
| | | }
|
| | |
|
| | | if (vo == null) {
|
| | | vo = createMoneyStatistic(uid);
|
| | | }
|
| | |
|
| | | Gson gson = getGson();
|
| | | out.print(JsonUtil.loadTrueResult(gson.toJson(vo)));
|
| | | }
|
| | |
|
| | | public MoneyStatisticVO createMoneyStatistic(Long uid) {
|
| | | UserInfo user = userInfoService.getUserById(uid);
|
| | |
|
| | | MoneyStatisticVO vo = new MoneyStatisticVO();
|
| | | vo.setLink(configService.get(ConfigKeyEnum.autoExtractHelpUrl.getKey()));
|
| | | vo.setBalanceMoney(user.getMyHongBao());
|
| | | vo.setExtractDesc("提现金额就是已成功提现到支付宝的资金");
|
| | | vo.setMoneyArrivalDesc("订单已到账后提现时间和金额均不受限制");
|
| | |
|
| | | // 获取提现中的信息
|
| | | BigDecimal extractingMoney = extractService.sumVerifyingMoney(uid);
|
| | | if (extractingMoney.compareTo(new BigDecimal(0)) > 0)
|
| | | vo.setExtractingMoneyInfo("提现中:¥" + extractingMoney.setScale(2, RoundingMode.HALF_UP));
|
| | |
|
| | | Date minDate = null;
|
| | | Date maxDate = null;
|
| | | long timeStamp = System.currentTimeMillis();
|
| | | List<UserMoneyDetailTypeEnum> typeList = new ArrayList<>();
|
| | |
|
| | | Calendar calendar = Calendar.getInstance();
|
| | | calendar.setTimeInMillis(timeStamp);
|
| | |
|
| | | typeList.clear();
|
| | | typeList.add(UserMoneyDetailTypeEnum.extract);
|
| | | typeList.add(UserMoneyDetailTypeEnum.extractNew);
|
| | | typeList.add(UserMoneyDetailTypeEnum.extractVerify);
|
| | | typeList.add(UserMoneyDetailTypeEnum.extractVerifyNew);
|
| | | typeList.add(UserMoneyDetailTypeEnum.extractReject);
|
| | | typeList.add(UserMoneyDetailTypeEnum.extractAutoWX);
|
| | |
|
| | | // 本月提现
|
| | | maxDate = new Date(timeStamp);
|
| | | calendar = Calendar.getInstance();
|
| | | minDate = new Date(TimeUtil
|
| | | .convertToTimeTemp(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1), "yyyy-M"));
|
| | | calendar.add(Calendar.MONTH, -1);
|
| | | vo.setMonthExtractMoney(
|
| | | userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate, 1).abs());
|
| | |
|
| | | // 上月提现
|
| | | maxDate = new Date(TimeUtil
|
| | | .convertToTimeTemp(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1), "yyyy-M"));
|
| | | calendar.add(Calendar.MONTH, -1);
|
| | | minDate = new Date(TimeUtil
|
| | | .convertToTimeTemp(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1), "yyyy-M"));
|
| | | vo.setLastMonthExtractMoney(
|
| | | userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate, 1).abs());
|
| | |
|
| | | minDate = new Date(0L);
|
| | | maxDate = new Date(timeStamp);
|
| | | // 累计成功提现
|
| | | vo.setTotalExtractMoney(
|
| | | userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate, 1).abs());
|
| | |
|
| | | // 累计自购返利
|
| | | typeList.clear();
|
| | | typeList.add(UserMoneyDetailTypeEnum.fanli);
|
| | | typeList.add(UserMoneyDetailTypeEnum.fanliNew);
|
| | | typeList.add(UserMoneyDetailTypeEnum.fanliWeiQuan);
|
| | | typeList.add(UserMoneyDetailTypeEnum.fanliWeiQuanNew);
|
| | | typeList.add(UserMoneyDetailTypeEnum.orderReward);
|
| | | typeList.add(UserMoneyDetailTypeEnum.orderRewardNew);
|
| | | vo.setTotalFanLiMoney(
|
| | | userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate).abs());
|
| | |
|
| | | // 累计分享赚
|
| | | typeList.clear();
|
| | | typeList.add(UserMoneyDetailTypeEnum.share);
|
| | | typeList.add(UserMoneyDetailTypeEnum.shareNew);
|
| | | typeList.add(UserMoneyDetailTypeEnum.shareWeiQuan);
|
| | | vo.setTotalShareMoney(
|
| | | userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate).abs());
|
| | |
|
| | | // 累计邀请赚
|
| | | typeList.clear();
|
| | | typeList.add(UserMoneyDetailTypeEnum.invite);
|
| | | typeList.add(UserMoneyDetailTypeEnum.inviteWeiQuan);
|
| | | typeList.add(UserMoneyDetailTypeEnum.inviteAndShare);
|
| | | typeList.add(UserMoneyDetailTypeEnum.subsidy);
|
| | | typeList.add(UserMoneyDetailTypeEnum.teamReward);
|
| | | vo.setTotalInviteMoney(
|
| | | userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate).abs());
|
| | |
|
| | | // 本月收货
|
| | | maxDate = new Date(timeStamp);
|
| | | calendar = Calendar.getInstance();
|
| | | minDate = new Date(TimeUtil
|
| | | .convertToTimeTemp(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1), "yyyy-M"));
|
| | | calendar.add(Calendar.MONTH, -1);
|
| | | vo.setMonthSettleMoney(hongBaoV2CountService.sumMoneyBySettleTimeAndUid(uid, minDate, maxDate));
|
| | |
|
| | | // 上月收货
|
| | | maxDate = new Date(TimeUtil
|
| | | .convertToTimeTemp(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1), "yyyy-M"));
|
| | | calendar.add(Calendar.MONTH, -1);
|
| | | minDate = new Date(TimeUtil
|
| | | .convertToTimeTemp(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1), "yyyy-M"));
|
| | | vo.setLastMonthSettleMoney(hongBaoV2CountService.sumMoneyBySettleTimeAndUid(uid, minDate, maxDate));
|
| | |
|
| | | // 待确认收货(180天内)
|
| | | vo.setNotSettleMoney(hongBaoV2CountService.sumMoneyByANotSettleAndUid(uid));
|
| | |
|
| | | // 今日预估
|
| | | calendar.add(Calendar.DAY_OF_YEAR, -1);
|
| | | minDate = new Date(TimeUtil.convertDateToTemp(TimeUtil.getGernalTime(timeStamp)));
|
| | | vo.setTodayPredict(cratePredictVO(orderMoneyDailyCountService.query(uid, minDate, null)));
|
| | |
|
| | | // 本月预估
|
| | | maxDate = new Date(timeStamp);
|
| | | calendar = Calendar.getInstance();
|
| | | minDate = new Date(TimeUtil
|
| | | .convertToTimeTemp(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1), "yyyy-M"));
|
| | | calendar.add(Calendar.MONTH, -1);
|
| | | vo.setMonthPredict(cratePredictVO(orderMoneyDailyCountService.query(uid, minDate, maxDate)));
|
| | | return vo;
|
| | | }
|
| | |
|
| | | @RequestMapping(value = "getUserMoneyInfo")
|
| | | public void getUserMoneyInfo(AcceptData acceptData, Long uid, PrintWriter out) {
|
| | | if (uid == null || uid == 0) {
|
| | | out.print(JsonUtil.loadFalseResult(1, "用户未登录"));
|
| | | return;
|
| | | }
|
| | | UserInfo user = userInfoService.getUserById(uid);
|
| | |
|
| | | MoneyStatisticVO vo = new MoneyStatisticVO();
|
| | | vo.setLink(configService.get(ConfigKeyEnum.autoExtractHelpUrl.getKey()));
|
| | | vo.setBalanceMoney(user.getMyHongBao());
|
| | | // 获取提现中的信息
|
| | | BigDecimal extractingMoney = extractService.sumVerifyingMoney(uid);
|
| | | if (extractingMoney.compareTo(new BigDecimal(0)) > 0)
|
| | | vo.setExtractingMoneyInfo("提现中:¥" + extractingMoney.setScale(2, RoundingMode.HALF_UP));
|
| | | Gson gson = getGson();
|
| | | out.print(JsonUtil.loadTrueResult(gson.toJson(vo)));
|
| | | }
|
| | |
|
| | | private MoneyPredictVO cratePredictVO(List<OrderMoneyDailyCount> list) {
|
| | | MoneyPredictVO predictVO = new MoneyPredictVO();
|
| | | predictVO.setMineNum(0);
|
| | | predictVO.setTeamNum(0);
|
| | | predictVO.setTotalNum(0);
|
| | | predictVO.setMineMoney(BigDecimal.valueOf(0));
|
| | | predictVO.setTeamMoney(BigDecimal.valueOf(0));
|
| | | BigDecimal hundred = BigDecimal.valueOf(100);
|
| | | if (list != null && list.size() > 0) {
|
| | | for (OrderMoneyDailyCount dailyCount : list) {
|
| | | if (dailyCount.getOrderNum() != null)
|
| | | predictVO.setMineNum(predictVO.getMineNum() + dailyCount.getOrderNum());
|
| | | if (dailyCount.getOrderNumTeam() != null)
|
| | | predictVO.setTeamNum(predictVO.getTeamNum() + dailyCount.getOrderNumTeam());
|
| | |
|
| | | if (dailyCount.getTeamDividentsOrderNum() != null)
|
| | | predictVO.setTotalNum(predictVO.getTotalNum() + dailyCount.getTeamDividentsOrderNum());
|
| | |
|
| | | if (dailyCount.getIncome() != null)
|
| | | predictVO.setMineMoney(predictVO.getMineMoney()
|
| | | .add(MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getIncome()), hundred)));
|
| | | if (dailyCount.getIncomeTeam() != null)
|
| | | predictVO.setTeamMoney(predictVO.getTeamMoney()
|
| | | .add(MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getIncomeTeam()), hundred)));
|
| | | }
|
| | | }
|
| | | predictVO.setTotalNum(predictVO.getTotalNum());
|
| | | predictVO.setTotalMoney(predictVO.getMineMoney().add(predictVO.getTeamMoney()));
|
| | | return predictVO;
|
| | | }
|
| | |
|
| | | /**
|
| | | * 提现成功记录
|
| | | * @param acceptData
|
| | | * @param page
|
| | | * @param uid
|
| | | * @param out
|
| | | */
|
| | | @RequestMapping(value = "getExtractRecord")
|
| | | public void getExtractRecord(AcceptData acceptData, Integer page, Long uid, PrintWriter out) {
|
| | | if (uid == null || uid == 0) {
|
| | | out.print(JsonUtil.loadFalseResult(1, "用户未登录"));
|
| | | return;
|
| | | }
|
| | |
|
| | | long count = 0;
|
| | |
|
| | | List<Extract> list = null;
|
| | | String redisContent = previewInfoService.getRedisContent(uid, PreviewEnum.extractRecord);
|
| | | if (!StringUtil.isNullOrEmpty(redisContent)) {
|
| | | Gson gson = new Gson();
|
| | | list = gson.fromJson(redisContent, new TypeToken<ArrayList<Extract>>() {
|
| | | }.getType());
|
| | | }
|
| | |
|
| | | if (list != null && list.size() > 0) {// 有预览数据
|
| | | count=list.size();
|
| | | } else {// 无预览数据
|
| | | list = extractService.getExtractSucceedRecord(page, Constant.PAGE_SIZE, uid);
|
| | | count = extractService.countExtractSucceedRecord(uid);
|
| | | }
|
| | |
|
| | | // 查询真实
|
| | | if (list == null)
|
| | | list = new ArrayList<>();
|
| | |
|
| | | JSONArray JSONArray = new JSONArray();
|
| | | for (Extract extract : list) {
|
| | | Date receiveTime = extract.getReceiveTime();
|
| | | if (receiveTime == null) {
|
| | | receiveTime = new Date(extract.getExtractTime());
|
| | | }
|
| | | String account = "支付宝:" + UserUtil.filterAlipayAccount(extract.getAccount());
|
| | | account = account + "-姓名:" + UserUtil.filterAlipayName(extract.getName());
|
| | |
|
| | | JSONObject object = new JSONObject();
|
| | | object.put("title", "你于" + TimeUtil.formatDate(receiveTime) + "提现成功");
|
| | | object.put("account", account);
|
| | | object.put("money", "¥" + extract.getMoney().setScale(2).toString());
|
| | | JSONArray.add(object);
|
| | | }
|
| | |
|
| | | JSONObject json = new JSONObject();
|
| | | json.put("count", count);
|
| | | json.put("list", JSONArray);
|
| | | out.print(JsonUtil.loadTrueResult(json));
|
| | | }
|
| | |
|
| | | /**
|
| | | * 历史详情
|
| | | * |
| | | * @param acceptData
|
| | | * @param uid
|
| | | * @param datetype 1-天 - 2月
|
| | | * @param out
|
| | | */
|
| | | @RequestMapping(value = "getHistoryDetail")
|
| | | public void getHistoryDetail(AcceptData acceptData, Long uid, String date, Integer datetype, PrintWriter out) {
|
| | | if (uid == null || uid == 0) {
|
| | | out.print(JsonUtil.loadFalseResult(1, "用户未登录"));
|
| | | return;
|
| | | }
|
| | |
|
| | | if (StringUtil.isNullOrEmpty(date) || datetype == null) {
|
| | | out.print(JsonUtil.loadFalseResult(1, "参数不完整"));
|
| | | return;
|
| | | }
|
| | |
|
| | | try {
|
| | | Date minDay = new Date();
|
| | | Date maxDay = new Date();
|
| | | BigDecimal zero = new BigDecimal(0);
|
| | | List<OrderMoneyDailyCount> listDailyCount = null;
|
| | | List<MoneyPredictVO> list = new ArrayList<>();
|
| | | SimpleDateFormat formatMonth = new SimpleDateFormat("yyyy年MM月");
|
| | | SimpleDateFormat formatDay = new SimpleDateFormat("yyyy年MM月dd日");
|
| | | if (datetype == 1) {
|
| | | // 后退7个月
|
| | | int countNum = 7;
|
| | | Date day = TimeUtil.parseYYYYMMDD(date);
|
| | | for (int i = 0; i < countNum; i++) {
|
| | | MoneyPredictVO predictVO = new MoneyPredictVO(zero, 0, zero, 0);
|
| | | if (i == 0) {
|
| | | predictVO.setCountDate(formatDay.format(day));
|
| | | } else {
|
| | | predictVO.setCountDate(formatDay.format(DateUtil.reduceDay(i, day)));
|
| | | }
|
| | | list.add(predictVO);
|
| | |
|
| | | if (i == countNum - 1) {
|
| | | minDay = DateUtil.reduceDay(i, day);
|
| | | }
|
| | | }
|
| | | maxDay = TimeUtil.parseYYYYMMDD_HHMMSS(date + " 23:59:59");
|
| | | listDailyCount = orderMoneyDailyCountService.sumGroupByCountDay(uid, minDay, maxDay);
|
| | | } else if (datetype == 2) {
|
| | | // 后退3个月
|
| | | int countNum = 3;
|
| | | Date day = TimeUtil.parseYYYYMMDD(DateUtil.getFirstDayOfMonth(date));
|
| | | for (int i = 0; i < countNum; i++) {
|
| | | MoneyPredictVO predictVO = new MoneyPredictVO(zero, 0, zero, 0);
|
| | | if (i == 0) {
|
| | | predictVO.setCountDate(formatMonth.format(day));
|
| | | } else {
|
| | | predictVO.setCountDate(formatMonth.format(DateUtil.reduceMonth(day, i)));
|
| | | }
|
| | | list.add(predictVO);
|
| | |
|
| | | if (i == countNum - 1) {
|
| | | minDay = DateUtil.reduceMonth(day, i);
|
| | | }
|
| | | }
|
| | | maxDay = TimeUtil.parseYYYYMMDD_HHMMSS(DateUtil.getLastDayOfMonth(date) + " 23:59:59");
|
| | | listDailyCount = orderMoneyDailyCountService.sumGroupByYearMonth(uid, minDay, maxDay);
|
| | | }
|
| | |
|
| | | BigDecimal hundred = BigDecimal.valueOf(100);
|
| | | for (MoneyPredictVO predictVO : list) {
|
| | | String countDate = predictVO.getCountDate();
|
| | |
|
| | | if (listDailyCount != null && listDailyCount.size() > 0) {
|
| | | for (OrderMoneyDailyCount dailyCount : listDailyCount) {
|
| | | Date countDay = dailyCount.getCountDay();
|
| | | if (datetype == 1 && countDay != null && countDate.equals(formatDay.format(countDay))) {
|
| | | predictVO.setMineNum(dailyCount.getOrderNum());
|
| | | predictVO.setMineMoney(
|
| | | MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getIncome()), hundred));
|
| | | predictVO.setTeamNum(dailyCount.getOrderNumTeam());
|
| | | predictVO.setTeamMoney(
|
| | | MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getIncomeTeam()), hundred));
|
| | | break;
|
| | | }
|
| | |
|
| | | String yearMonth = dailyCount.getYearMonth();
|
| | | if (datetype == 2 && !StringUtil.isNullOrEmpty(yearMonth) && countDate.equals(
|
| | | formatMonth.format(TimeUtil.parseYYYYMMDD(DateUtil.getFirstDayOfMonth(yearMonth))))) {
|
| | | predictVO.setMineNum(dailyCount.getOrderNum());
|
| | | predictVO.setMineMoney(
|
| | | MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getIncome()), hundred));
|
| | | predictVO.setTeamNum(dailyCount.getOrderNumTeam());
|
| | | predictVO.setTeamMoney(
|
| | | MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getIncomeTeam()), hundred));
|
| | | break;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | predictVO.setTotalNum(predictVO.getTeamNum() + predictVO.getMineNum());
|
| | | predictVO.setTotalMoney(predictVO.getMineMoney().add(predictVO.getTeamMoney()));
|
| | | }
|
| | |
|
| | | Gson gson = getGson();
|
| | |
|
| | | JSONObject object = new JSONObject();
|
| | | object.put("count", list.size());
|
| | | object.put("list", gson.toJson(list));
|
| | | out.print(JsonUtil.loadTrueResult(object));
|
| | | } catch (ParseException e) {
|
| | | out.print(JsonUtil.loadFalseResult(1, "查询失败"));
|
| | | e.printStackTrace();
|
| | | LogHelper.errorDetailInfo(e);
|
| | | }
|
| | | }
|
| | |
|
| | | /**
|
| | | * 收益详情
|
| | | * |
| | | * @param acceptData
|
| | | * @param uid
|
| | | * @param datetype
|
| | | * @param type
|
| | | * @param out
|
| | | */
|
| | | @RequestMapping(value = "getIncomeDetail")
|
| | | public void getIncomeDetail(AcceptData acceptData, Long uid, String date, Integer datetype, Integer type,
|
| | | PrintWriter out) {
|
| | | if (uid == null || uid == 0) {
|
| | | out.print(JsonUtil.loadFalseResult(1, "用户未登录"));
|
| | | return;
|
| | | }
|
| | |
|
| | | if (StringUtil.isNullOrEmpty(date) || datetype == null || type == null) {
|
| | | out.print(JsonUtil.loadFalseResult(1, "参数不完整"));
|
| | | return;
|
| | | }
|
| | |
|
| | | Date minDay = new Date();
|
| | | Date maxDay = new Date();
|
| | | if (datetype == 1) {
|
| | | minDay = TimeUtil.parseYYYYMMDD(date);
|
| | | maxDay = TimeUtil.parseYYYYMMDD_HHMMSS(date + " 23:59:59");
|
| | | } else if (datetype == 2) {
|
| | | String firstDay = DateUtil.getFirstDayOfMonth(date);
|
| | | String lastDay = DateUtil.getLastDayOfMonth(date);
|
| | | minDay = TimeUtil.parseYYYYMMDD(firstDay);
|
| | | maxDay = TimeUtil.parseYYYYMMDD_HHMMSS(lastDay + " 23:59:59");
|
| | | }
|
| | |
|
| | | List<OrderMoneyDailyCount> listDailyCount = null;
|
| | | if (type == 1) {
|
| | | listDailyCount = orderMoneyDailyCountService.sumGroupBySourceType(uid, minDay, maxDay);
|
| | | } else if (type == 2) {
|
| | | listDailyCount = orderMoneyDailyCountService.sumTeamGroupBySourceType(uid, minDay, maxDay);
|
| | | }
|
| | |
|
| | | BigDecimal zero = new BigDecimal(0);
|
| | | List<IncomeDetailVO> list = new ArrayList<>();
|
| | |
|
| | | BigDecimal hundred = BigDecimal.valueOf(100);
|
| | | SourceTypeEnum[] arrayEnun = SourceTypeEnum.values();
|
| | | for (int m = 0; m < arrayEnun.length; m++) {
|
| | | SourceTypeEnum typeEnum = arrayEnun[m];
|
| | | IncomeDetailVO detail = new IncomeDetailVO(typeEnum.getIcon(), 0, zero);
|
| | | if (listDailyCount != null && listDailyCount.size() > 0) {
|
| | | for (OrderMoneyDailyCount dailyCount : listDailyCount) {
|
| | | if (dailyCount.getSourceType() == typeEnum) {
|
| | | detail.setNum(detail.getNum() + dailyCount.getOrderNum());
|
| | | detail.setMoney(detail.getMoney()
|
| | | .add(MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getIncome()), hundred)));
|
| | | }
|
| | | }
|
| | | }
|
| | | list.add(detail);
|
| | | }
|
| | |
|
| | | Gson gson = getGson();
|
| | |
|
| | | JSONObject object = new JSONObject();
|
| | | object.put("count", list.size());
|
| | | object.put("list", gson.toJson(list));
|
| | | out.print(JsonUtil.loadTrueResult(object));
|
| | | }
|
| | |
|
| | | /**
|
| | | * 团队分红
|
| | | * @param acceptData
|
| | | * @param uid
|
| | | * @param out
|
| | | */
|
| | | @RequestMapping(value = "getTeamDividendStatistic")
|
| | | public void getTeamDividendStatistic(String callback, AcceptData acceptData, Long uid, PrintWriter out) {
|
| | | if (uid == null || uid == 0) {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("用户未登录"));
|
| | | return;
|
| | | }
|
| | |
|
| | | Date minDate = null;
|
| | | Date maxDate = null;
|
| | | long timeStamp = System.currentTimeMillis();
|
| | | Calendar calendar = Calendar.getInstance();
|
| | | calendar.setTimeInMillis(timeStamp);
|
| | | // 今日预估
|
| | | calendar.add(Calendar.DAY_OF_YEAR, -1);
|
| | | minDate = new Date(TimeUtil.convertDateToTemp(TimeUtil.getGernalTime(timeStamp)));
|
| | | TeamPredictVO todayVO = crateTeamPredictVO(orderMoneyDailyCountService.query(uid, minDate, null));
|
| | |
|
| | | // 本月预估
|
| | | maxDate = new Date(timeStamp);
|
| | | calendar = Calendar.getInstance();
|
| | | minDate = new Date(TimeUtil
|
| | | .convertToTimeTemp(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1), "yyyy-M"));
|
| | | calendar.add(Calendar.MONTH, -1);
|
| | | TeamPredictVO monthVO = crateTeamPredictVO(orderMoneyDailyCountService.query(uid, minDate, maxDate));
|
| | |
|
| | | // 统计已到账分红、补贴
|
| | | BigDecimal subsidy = teamEincomeRecordService.sumRecieveByType(uid, TeamEincomeRecord.TYPE_TEAM_SUBSIDY);
|
| | | BigDecimal reward = teamEincomeRecordService.sumRecieveByType(uid, TeamEincomeRecord.TYPE_TEAM_DIVIDENTS);
|
| | |
|
| | | Gson gson = getGson();
|
| | | JSONObject object = new JSONObject();
|
| | | object.put("total", subsidy.add(reward).setScale(2).toString());
|
| | | object.put("reward", reward.setScale(2).toString());
|
| | | object.put("subsidy", subsidy.setScale(2).toString());
|
| | | object.put("today", gson.toJson(todayVO));
|
| | | object.put("month", gson.toJson(monthVO));
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(object));
|
| | | }
|
| | |
|
| | | private TeamPredictVO crateTeamPredictVO(List<OrderMoneyDailyCount> list) {
|
| | | TeamPredictVO predictVO = new TeamPredictVO(BigDecimal.ZERO, 0, BigDecimal.ZERO, 0, 0);
|
| | | if (list != null && list.size() > 0) {
|
| | | BigDecimal hundred = BigDecimal.valueOf(100);
|
| | | for (OrderMoneyDailyCount dailyCount : list) {
|
| | | if (dailyCount.getTeamRewardNum() != null)
|
| | | predictVO.setRewardNum(predictVO.getRewardNum() + dailyCount.getTeamRewardNum());
|
| | | if (dailyCount.getTeamSubsidyNum() != null)
|
| | | predictVO.setSubsidyNum(predictVO.getSubsidyNum() + dailyCount.getTeamSubsidyNum());
|
| | | if (dailyCount.getTeamReward() != null)
|
| | | predictVO.setReward(predictVO.getReward()
|
| | | .add(MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getTeamReward()), hundred)));
|
| | | if (dailyCount.getTeamSubsidy() != null)
|
| | | predictVO.setSubsidy(predictVO.getSubsidy()
|
| | | .add(MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getTeamSubsidy()), hundred)));
|
| | |
|
| | | if (dailyCount.getTeamDividentsOrderNum() != null)
|
| | | predictVO.setTotalNum(predictVO.getTotalNum() + dailyCount.getTeamDividentsOrderNum());
|
| | |
|
| | | }
|
| | | }
|
| | | predictVO.setTotalNum(predictVO.getTotalNum());
|
| | | predictVO.setTotalMoney(predictVO.getReward().add(predictVO.getSubsidy()));
|
| | | return predictVO;
|
| | | }
|
| | |
|
| | | /**
|
| | | * 历史详情
|
| | | * |
| | | * @param acceptData
|
| | | * @param uid
|
| | | * @param datetype 1-天 - 2月
|
| | | * @param out
|
| | | */
|
| | | @RequestMapping(value = "getTeamDividendHistory")
|
| | | public void getTeamDividendHistory(String callback, AcceptData acceptData, Long uid, String date, Integer datetype,
|
| | | PrintWriter out) {
|
| | | if (uid == null || uid == 0) {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("用户未登录"));
|
| | | return;
|
| | | }
|
| | |
|
| | | if (StringUtil.isNullOrEmpty(date) || datetype == null) {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("参数不完整"));
|
| | | return;
|
| | | }
|
| | |
|
| | | try {
|
| | | Date minDay = new Date();
|
| | | Date maxDay = new Date();
|
| | | BigDecimal zero = new BigDecimal(0);
|
| | | List<OrderMoneyDailyCount> listDailyCount = null;
|
| | | List<TeamPredictVO> list = new ArrayList<>();
|
| | | SimpleDateFormat formatMonth = new SimpleDateFormat("yyyy年MM月");
|
| | | SimpleDateFormat formatDay = new SimpleDateFormat("yyyy年MM月dd日");
|
| | | if (datetype == 1) {
|
| | | // 后退7个月
|
| | | int countNum = 7;
|
| | | Date day = TimeUtil.parseYYYYMMDD(date);
|
| | | for (int i = 0; i < countNum; i++) {
|
| | | TeamPredictVO predictVO = new TeamPredictVO(zero, 0, zero, 0, 0);
|
| | | if (i == 0) {
|
| | | predictVO.setCountDate(formatDay.format(day));
|
| | | } else {
|
| | | predictVO.setCountDate(formatDay.format(DateUtil.reduceDay(i, day)));
|
| | | }
|
| | | list.add(predictVO);
|
| | |
|
| | | if (i == countNum - 1) {
|
| | | minDay = DateUtil.reduceDay(i, day);
|
| | | }
|
| | | }
|
| | | maxDay = TimeUtil.parseYYYYMMDD_HHMMSS(date + " 23:59:59");
|
| | | listDailyCount = orderMoneyDailyCountService.sumTeamGroupByCountDay(uid, minDay, maxDay);
|
| | | } else if (datetype == 2) {
|
| | | // 后退3个月
|
| | | int countNum = 3;
|
| | | Date day = TimeUtil.parseYYYYMMDD(DateUtil.getFirstDayOfMonth(date));
|
| | | for (int i = 0; i < countNum; i++) {
|
| | | TeamPredictVO predictVO = new TeamPredictVO(zero, 0, zero, 0, 0);
|
| | | if (i == 0) {
|
| | | predictVO.setCountDate(formatMonth.format(day));
|
| | | } else {
|
| | | predictVO.setCountDate(formatMonth.format(DateUtil.reduceMonth(day, i)));
|
| | | }
|
| | | list.add(predictVO);
|
| | |
|
| | | if (i == countNum - 1) {
|
| | | minDay = DateUtil.reduceMonth(day, i);
|
| | | }
|
| | | }
|
| | | maxDay = TimeUtil.parseYYYYMMDD_HHMMSS(DateUtil.getLastDayOfMonth(date) + " 23:59:59");
|
| | | listDailyCount = orderMoneyDailyCountService.sumTeamGroupByYearMonth(uid, minDay, maxDay);
|
| | | }
|
| | |
|
| | | BigDecimal hundred = BigDecimal.valueOf(100);
|
| | | for (TeamPredictVO predictVO : list) {
|
| | | String countDate = predictVO.getCountDate();
|
| | |
|
| | | if (listDailyCount != null && listDailyCount.size() > 0) {
|
| | | for (OrderMoneyDailyCount dailyCount : listDailyCount) {
|
| | | Date countDay = dailyCount.getCountDay();
|
| | | if (datetype == 1 && countDay != null && countDate.equals(formatDay.format(countDay))) {
|
| | | predictVO.setRewardNum(dailyCount.getTeamRewardNum());
|
| | | predictVO.setReward(
|
| | | MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getTeamReward()), hundred));
|
| | | predictVO.setSubsidyNum(dailyCount.getTeamSubsidyNum());
|
| | | predictVO.setSubsidy(
|
| | | MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getTeamSubsidy()), hundred));
|
| | | predictVO.setTotalNum(dailyCount.getTeamDividentsOrderNum());
|
| | | break;
|
| | | }
|
| | |
|
| | | String yearMonth = dailyCount.getYearMonth();
|
| | | if (datetype == 2 && !StringUtil.isNullOrEmpty(yearMonth) && countDate.equals(
|
| | | formatMonth.format(TimeUtil.parseYYYYMMDD(DateUtil.getFirstDayOfMonth(yearMonth))))) {
|
| | | predictVO.setRewardNum(dailyCount.getTeamRewardNum());
|
| | | predictVO.setReward(
|
| | | MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getTeamReward()), hundred));
|
| | | predictVO.setSubsidyNum(dailyCount.getTeamSubsidyNum());
|
| | | predictVO.setSubsidy(
|
| | | MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getTeamSubsidy()), hundred));
|
| | |
|
| | | predictVO.setTotalNum(dailyCount.getTeamDividentsOrderNum());
|
| | | break;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | predictVO.setTotalNum(predictVO.getTotalNum());
|
| | | predictVO.setTotalMoney(predictVO.getReward().add(predictVO.getSubsidy()));
|
| | | }
|
| | |
|
| | | Gson gson = getGson();
|
| | |
|
| | | JSONObject object = new JSONObject();
|
| | | object.put("count", list.size());
|
| | | object.put("list", gson.toJson(list));
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(object));
|
| | | } catch (ParseException e) {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("统计失败"));
|
| | | e.printStackTrace();
|
| | | LogHelper.errorDetailInfo(e);
|
| | | }
|
| | | }
|
| | |
|
| | | /**
|
| | | * 分红详情
|
| | | * |
| | | * @param acceptData
|
| | | * @param uid
|
| | | * @param datetype 1-天 - 2月
|
| | | * @param out
|
| | | */
|
| | | @RequestMapping(value = "getTeamDividendDetail")
|
| | | public void getTeamDividendDetail(String callback, AcceptData acceptData, Integer page, Long uid, String date,
|
| | | Integer datetype, String key, PrintWriter out) {
|
| | | if (uid == null || uid == 0) {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("用户未登录"));
|
| | | return;
|
| | | }
|
| | |
|
| | | if (StringUtil.isNullOrEmpty(date) || datetype == null) {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("参数不完整"));
|
| | | return;
|
| | | }
|
| | |
|
| | | if (page == null)
|
| | | page = 1;
|
| | | int pageSize = Constant.PAGE_SIZE;
|
| | |
|
| | | try {
|
| | | Date minDay = new Date();
|
| | | Date maxDay = new Date();
|
| | | if (datetype == 1) {
|
| | | minDay = TimeUtil.parseYYYYMMDD(date);
|
| | | maxDay = TimeUtil.parseYYYYMMDD_HHMMSS(date + " 23:59:59");
|
| | | } else if (datetype == 2) {
|
| | | minDay = TimeUtil.parseYYYYMMDD(DateUtil.getFirstDayOfMonth(date));
|
| | | maxDay = TimeUtil.parseYYYYMMDD_HHMMSS(DateUtil.getLastDayOfMonth(date) + " 23:59:59");
|
| | | }
|
| | | List<TeamDividentsVO> list = teamDividentsSourceOrderUserMapService
|
| | | .listByDateAndTargetUid((page - 1) * pageSize, pageSize, uid, minDay, maxDay, key);
|
| | | if (list == null) {
|
| | | list = new ArrayList<>();
|
| | | }
|
| | | long count = teamDividentsSourceOrderUserMapService.countByDateAndTargetUid(uid, minDay, maxDay, key);
|
| | |
|
| | | GsonBuilder builder = new GsonBuilder();
|
| | | builder.registerTypeAdapter(BigDecimal.class, new JsonSerializer<BigDecimal>() {
|
| | | @Override
|
| | | public JsonElement serialize(BigDecimal value, Type theType, JsonSerializationContext context) {
|
| | | if (value == null) {
|
| | | return new JsonPrimitive("0.00");
|
| | | } else {
|
| | | // 保留3位小数
|
| | | value = value.setScale(3, RoundingMode.DOWN);
|
| | | return new JsonPrimitive(value.toString());
|
| | | }
|
| | | }
|
| | | });
|
| | |
|
| | | Gson gson = builder.create();
|
| | | JSONObject object = new JSONObject();
|
| | |
|
| | | if (page == 1) {
|
| | | TeamDividentsVO teamDividentsVO = teamDividentsSourceOrderUserMapService.sumByDateAndTargetUid(uid,
|
| | | minDay, maxDay, key);
|
| | | if (teamDividentsVO == null) {
|
| | | teamDividentsVO = new TeamDividentsVO();
|
| | | teamDividentsVO.setSubsidy(BigDecimal.ZERO);
|
| | | teamDividentsVO.setDividents(BigDecimal.ZERO);
|
| | | }
|
| | | object.put("subsidy", teamDividentsVO.getSubsidy().setScale(2, RoundingMode.DOWN).toString());
|
| | | object.put("dividents", teamDividentsVO.getDividents().setScale(2, RoundingMode.DOWN).toString());
|
| | | }
|
| | |
|
| | | object.put("count", count);
|
| | | object.put("list", gson.toJson(list));
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(object));
|
| | | } catch (Exception e) {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("查询失败"));
|
| | | e.printStackTrace();
|
| | | LogHelper.errorDetailInfo(e);
|
| | | }
|
| | | }
|
| | |
|
| | | /**
|
| | | * 订单统计-h5
|
| | | * |
| | | * @param acceptData
|
| | | * @param id
|
| | | * @param out
|
| | | */
|
| | | @RequestMapping(value = "countTeamOrderNum")
|
| | | public void countTeamOrderNum(String callback, AcceptData acceptData, Long uid, PrintWriter out) {
|
| | | try {
|
| | |
|
| | | Date minDate = null;
|
| | | Date maxDate = null;
|
| | | long timeStamp = System.currentTimeMillis();
|
| | |
|
| | | Calendar calendar = Calendar.getInstance();
|
| | | calendar.setTimeInMillis(timeStamp);
|
| | |
|
| | | // 今日预估
|
| | | calendar.add(Calendar.DAY_OF_YEAR, -1);
|
| | | minDate = new Date(TimeUtil.convertDateToTemp(TimeUtil.getGernalTime(timeStamp)));
|
| | | OrderMoneyDailyCount todayRecord = createVO(
|
| | | orderMoneyDailyCountService.sumTeamOrderNumGroupByCountDay(uid, minDate, null));
|
| | |
|
| | | // 昨日预估
|
| | | calendar.add(Calendar.DAY_OF_YEAR, -1);
|
| | | maxDate = new Date(TimeUtil.convertDateToTemp(TimeUtil.getGernalTime(timeStamp)));
|
| | | minDate = DateUtil.reduceDay(1, maxDate);
|
| | | OrderMoneyDailyCount yesterdayRecord = createVO(
|
| | | orderMoneyDailyCountService.sumTeamOrderNumGroupByCountDay(uid, minDate, maxDate));
|
| | |
|
| | | // 本月预估
|
| | | maxDate = new Date(timeStamp);
|
| | | calendar = Calendar.getInstance();
|
| | | minDate = new Date(TimeUtil.convertToTimeTemp(
|
| | | calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1), "yyyy-M"));
|
| | | calendar.add(Calendar.MONTH, -1);
|
| | | OrderMoneyDailyCount monthRecord = createVO(
|
| | | orderMoneyDailyCountService.sumTeamOrderNumGroupByYearMonth(uid, minDate, maxDate));
|
| | |
|
| | | // 累计
|
| | | OrderMoneyDailyCount totalityRecord = createVO(
|
| | | orderMoneyDailyCountService.sumTeamOrderNumGroupByUid(uid, null, null));
|
| | |
|
| | | JSONObject today = new JSONObject();
|
| | | today.put("direct", todayRecord.getDirectOrderNum());
|
| | | today.put("indirect", todayRecord.getInDirectOrderNum());
|
| | | today.put("beyond", todayRecord.getBeyondOrderNum());
|
| | |
|
| | | JSONObject yesterday = new JSONObject();
|
| | | yesterday.put("direct", yesterdayRecord.getDirectOrderNum());
|
| | | yesterday.put("indirect", yesterdayRecord.getInDirectOrderNum());
|
| | | yesterday.put("beyond", yesterdayRecord.getBeyondOrderNum());
|
| | |
|
| | | JSONObject month = new JSONObject();
|
| | | month.put("direct", monthRecord.getDirectOrderNum());
|
| | | month.put("indirect", monthRecord.getInDirectOrderNum());
|
| | | month.put("beyond", monthRecord.getBeyondOrderNum());
|
| | |
|
| | | JSONObject totality = new JSONObject();
|
| | | totality.put("direct", totalityRecord.getDirectOrderNum());
|
| | | totality.put("indirect", totalityRecord.getInDirectOrderNum());
|
| | | totality.put("beyond", totalityRecord.getBeyondOrderNum());
|
| | |
|
| | | JSONObject json = new JSONObject();
|
| | | json.put("today", today);
|
| | | json.put("yesterday", yesterday);
|
| | | json.put("month", month);
|
| | | json.put("totality", totality);
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(json));
|
| | | } catch (Exception e) {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("统计失败"));
|
| | | e.printStackTrace();
|
| | | LogHelper.errorDetailInfo(e);
|
| | | }
|
| | | }
|
| | |
|
| | | private OrderMoneyDailyCount createVO(List<OrderMoneyDailyCount> list) {
|
| | | OrderMoneyDailyCount totalityRecord = new OrderMoneyDailyCount(0, 0, 0);
|
| | | if (list != null && list.size() > 0) {
|
| | | for (OrderMoneyDailyCount record : list) {
|
| | | totalityRecord.setDirectOrderNum(totalityRecord.getDirectOrderNum() + record.getDirectOrderNum());
|
| | | totalityRecord.setInDirectOrderNum(totalityRecord.getInDirectOrderNum() + record.getInDirectOrderNum());
|
| | | totalityRecord.setBeyondOrderNum(totalityRecord.getBeyondOrderNum() + record.getBeyondOrderNum());
|
| | | }
|
| | | }
|
| | | return totalityRecord;
|
| | | }
|
| | |
|
| | | /**
|
| | | * 订单排行榜
|
| | | * @param callback
|
| | | * @param acceptData
|
| | | * @param uid
|
| | | * @param dateType
|
| | | * @param out
|
| | | */
|
| | | @RequestMapping(value = "getRanking")
|
| | | public void getRanking(String callback, AcceptData acceptData, Long uid, Integer dateType, PrintWriter out) {
|
| | | if (uid == null || dateType == null) {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("参数缺失"));
|
| | | return;
|
| | | }
|
| | |
|
| | | try {
|
| | | Date minDate = null;
|
| | | Date maxDate = null;
|
| | | long timeStamp = System.currentTimeMillis();
|
| | |
|
| | | Calendar calendar = Calendar.getInstance();
|
| | | calendar.setTimeInMillis(timeStamp);
|
| | |
|
| | | if (dateType == 1) {
|
| | | // 今日
|
| | | calendar.add(Calendar.DAY_OF_YEAR, -1);
|
| | | minDate = new Date(TimeUtil.convertDateToTemp(TimeUtil.getGernalTime(timeStamp)));
|
| | | } else if (dateType == 2) {
|
| | | // 昨日
|
| | | calendar.add(Calendar.DAY_OF_YEAR, -1);
|
| | | maxDate = new Date(TimeUtil.convertDateToTemp(TimeUtil.getGernalTime(timeStamp)));
|
| | | minDate = DateUtil.reduceDay(1, maxDate);
|
| | | } else {
|
| | | // 本月
|
| | | maxDate = new Date(timeStamp);
|
| | | calendar = Calendar.getInstance();
|
| | | minDate = new Date(TimeUtil.convertToTimeTemp(
|
| | | calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1), "yyyy-M"));
|
| | | calendar.add(Calendar.MONTH, -1);
|
| | | }
|
| | |
|
| | | List<OrderRankingVO> list = orderMoneyDailyCountService.getRankingByOrderNum(uid, minDate, maxDate);
|
| | | if (list.size() > 0) {
|
| | | for (int i = 0; i < list.size(); i++) {
|
| | | OrderRankingVO vo = list.get(i);
|
| | | UserInfo user = userInfoService.getUserByIdWithMybatis(vo.getUid());
|
| | | if (user == null) {
|
| | | list.remove(i);
|
| | | i--;
|
| | | continue;
|
| | | }
|
| | | vo.setNickName(user.getNickName());
|
| | | vo.setPortrait(user.getPortrait());
|
| | | }
|
| | | }
|
| | |
|
| | | JSONObject json = new JSONObject();
|
| | | json.put("list", list);
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(json));
|
| | | } catch (Exception e) {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("统计失败"));
|
| | | e.printStackTrace();
|
| | | LogHelper.errorDetailInfo(e);
|
| | | }
|
| | | }
|
| | | }
|
| | | package com.yeshi.fanli.controller.client.v2; |
| | | |
| | | import java.io.PrintWriter; |
| | | import java.lang.reflect.Type; |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.text.ParseException; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.ArrayList; |
| | | import java.util.Calendar; |
| | | 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.yeshi.utils.DateUtil; |
| | | import org.yeshi.utils.JsonUtil; |
| | | |
| | | 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.google.gson.reflect.TypeToken; |
| | | import com.yeshi.fanli.entity.accept.AcceptData; |
| | | import com.yeshi.fanli.entity.bus.user.Extract; |
| | | import com.yeshi.fanli.entity.bus.user.PreviewInfo.PreviewEnum; |
| | | import com.yeshi.fanli.entity.bus.user.UserInfo; |
| | | import com.yeshi.fanli.entity.money.TeamEincomeRecord; |
| | | import com.yeshi.fanli.entity.money.UserMoneyDetail.UserMoneyDetailTypeEnum; |
| | | import com.yeshi.fanli.entity.order.OrderMoneyDailyCount; |
| | | import com.yeshi.fanli.entity.order.SourceTypeEnum; |
| | | import com.yeshi.fanli.entity.system.ConfigKeyEnum; |
| | | import com.yeshi.fanli.log.LogHelper; |
| | | import com.yeshi.fanli.service.inter.config.ConfigService; |
| | | import com.yeshi.fanli.service.inter.count.HongBaoV2CountService; |
| | | import com.yeshi.fanli.service.inter.money.TeamEincomeRecordService; |
| | | import com.yeshi.fanli.service.inter.money.UserMoneyDetailService; |
| | | import com.yeshi.fanli.service.inter.money.extract.ExtractService; |
| | | import com.yeshi.fanli.service.inter.order.HongBaoV2Service; |
| | | import com.yeshi.fanli.service.inter.order.OrderMoneyDailyCountService; |
| | | import com.yeshi.fanli.service.inter.order.dividents.TeamDividentsSourceOrderUserMapService; |
| | | import com.yeshi.fanli.service.inter.user.PreviewInfoService; |
| | | import com.yeshi.fanli.service.inter.user.UserInfoExtraService; |
| | | import com.yeshi.fanli.service.inter.user.UserInfoService; |
| | | import com.yeshi.fanli.util.Constant; |
| | | import org.yeshi.utils.MoneyBigDecimalUtil; |
| | | import com.yeshi.fanli.util.StringUtil; |
| | | import org.yeshi.utils.TimeUtil; |
| | | import com.yeshi.fanli.util.VersionUtil; |
| | | import com.yeshi.fanli.util.account.UserUtil; |
| | | import com.yeshi.fanli.vo.money.IncomeDetailVO; |
| | | import com.yeshi.fanli.vo.money.MoneyPredictVO; |
| | | import com.yeshi.fanli.vo.money.MoneyStatisticVO; |
| | | import com.yeshi.fanli.vo.money.TeamPredictVO; |
| | | import com.yeshi.fanli.vo.order.OrderRankingVO; |
| | | import com.yeshi.fanli.vo.order.TeamDividentsVO; |
| | | |
| | | import net.sf.json.JSONArray; |
| | | import net.sf.json.JSONObject; |
| | | |
| | | /** |
| | | * 账户系统 |
| | | * |
| | | * @author Administrator |
| | | */ |
| | | @Controller |
| | | @RequestMapping("api/v2/usermoney") |
| | | public class UserMoneyControllerV2 { |
| | | |
| | | @Resource |
| | | private UserMoneyDetailService userMoneyDetailService; |
| | | |
| | | @Resource |
| | | private UserInfoService userInfoService; |
| | | |
| | | @Resource |
| | | private HongBaoV2Service hongBaoV2Service; |
| | | |
| | | @Resource |
| | | private ExtractService extractService; |
| | | |
| | | @Resource |
| | | private UserInfoExtraService userInfoExtraService; |
| | | |
| | | @Resource |
| | | private ConfigService configService; |
| | | |
| | | @Resource |
| | | private HongBaoV2CountService hongBaoV2CountService; |
| | | |
| | | @Resource |
| | | private OrderMoneyDailyCountService orderMoneyDailyCountService; |
| | | |
| | | @Resource |
| | | private TeamEincomeRecordService teamEincomeRecordService; |
| | | |
| | | @Resource |
| | | private PreviewInfoService previewInfoService; |
| | | |
| | | @Resource |
| | | private TeamDividentsSourceOrderUserMapService teamDividentsSourceOrderUserMapService; |
| | | |
| | | private Gson getGson() { |
| | | GsonBuilder builder = new GsonBuilder(); |
| | | builder.registerTypeAdapter(BigDecimal.class, new JsonSerializer<BigDecimal>() { |
| | | @Override |
| | | public JsonElement serialize(BigDecimal value, Type theType, JsonSerializationContext context) { |
| | | if (value == null) { |
| | | return new JsonPrimitive(""); |
| | | } else { |
| | | // 保留2位小数 |
| | | value = value.setScale(2, BigDecimal.ROUND_DOWN); |
| | | return new JsonPrimitive(value.toString()); |
| | | } |
| | | } |
| | | }); |
| | | return builder.create(); |
| | | } |
| | | |
| | | /** |
| | | * 用户资金统计 |
| | | * |
| | | * @param acceptData |
| | | * @param uid |
| | | * @param out |
| | | */ |
| | | @RequestMapping(value = "getMoneyStatistic") |
| | | public void getMoneyStatistic(AcceptData acceptData, Long uid, PrintWriter out) { |
| | | if (uid == null || uid == 0) { |
| | | out.print(JsonUtil.loadFalseResult(1, "用户未登录")); |
| | | return; |
| | | } |
| | | |
| | | // VIP数据预览 |
| | | MoneyStatisticVO vo = null; |
| | | String redisContent = previewInfoService.getRedisContent(uid, PreviewEnum.moneyInfo); |
| | | //数据预览,填的假数据 |
| | | if (!StringUtil.isNullOrEmpty(redisContent)) { |
| | | vo = new Gson().fromJson(redisContent, MoneyStatisticVO.class); |
| | | if (vo != null) { |
| | | vo.setLink(configService.getValue(ConfigKeyEnum.autoExtractHelpUrl.getKey(), acceptData.getSystem())); |
| | | vo.setExtractDesc("提现金额就是已成功提现到支付宝的资金"); |
| | | if (VersionUtil.greaterThan_2_1_2(acceptData.getPlatform(), acceptData.getVersion())) { |
| | | vo.setMoneyArrivalDesc("尽早确认收货可以促使资金尽早到账"); |
| | | } else { |
| | | vo.setMoneyArrivalDesc("订单已到账后提现时间和金额均不受限制"); |
| | | } |
| | | |
| | | if (vo.getLastMonthSettleMoney() == null) { |
| | | vo.setLastMonthExtractMoney(BigDecimal.ZERO); |
| | | } |
| | | |
| | | if (vo.getNotSettleMoney() == null) { |
| | | vo.setNotSettleMoney(BigDecimal.ZERO); |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (vo == null) { |
| | | vo = getMoneyStatisticInfo(uid, acceptData); |
| | | } |
| | | |
| | | Gson gson = getGson(); |
| | | out.print(JsonUtil.loadTrueResult(gson.toJson(vo))); |
| | | } |
| | | |
| | | private MoneyStatisticVO getMoneyStatisticInfo(Long uid, AcceptData acceptData) { |
| | | UserInfo user = userInfoService.getUserById(uid); |
| | | |
| | | MoneyStatisticVO vo = new MoneyStatisticVO(); |
| | | vo.setLink(configService.getValue(ConfigKeyEnum.autoExtractHelpUrl.getKey(), acceptData.getSystem())); |
| | | vo.setBalanceMoney(user.getMyHongBao()); |
| | | vo.setExtractDesc("提现金额就是已成功提现到支付宝的资金"); |
| | | |
| | | // 获取提现中的信息 |
| | | BigDecimal extractingMoney = extractService.sumVerifyingMoney(uid); |
| | | if (extractingMoney.compareTo(new BigDecimal(0)) > 0) |
| | | vo.setExtractingMoneyInfo("提现中:¥" + extractingMoney.setScale(2, RoundingMode.HALF_UP)); |
| | | |
| | | Date minDate = null; |
| | | Date maxDate = null; |
| | | long timeStamp = System.currentTimeMillis(); |
| | | List<UserMoneyDetailTypeEnum> typeList = new ArrayList<>(); |
| | | |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.setTimeInMillis(timeStamp); |
| | | |
| | | typeList.clear(); |
| | | typeList.add(UserMoneyDetailTypeEnum.extract); |
| | | typeList.add(UserMoneyDetailTypeEnum.extractNew); |
| | | typeList.add(UserMoneyDetailTypeEnum.extractVerify); |
| | | typeList.add(UserMoneyDetailTypeEnum.extractVerifyNew); |
| | | typeList.add(UserMoneyDetailTypeEnum.extractReject); |
| | | typeList.add(UserMoneyDetailTypeEnum.extractAutoWX); |
| | | |
| | | // 本月提现 |
| | | maxDate = new Date(timeStamp); |
| | | calendar = Calendar.getInstance(); |
| | | minDate = new Date(TimeUtil |
| | | .convertToTimeTemp(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1), "yyyy-M")); |
| | | calendar.add(Calendar.MONTH, -1); |
| | | vo.setMonthExtractMoney( |
| | | userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate, 1).abs()); |
| | | |
| | | // 上月提现 |
| | | calendar = Calendar.getInstance(); |
| | | maxDate = new Date(TimeUtil |
| | | .convertToTimeTemp(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1), "yyyy-M")); |
| | | calendar.add(Calendar.MONTH, -1); |
| | | minDate = new Date(TimeUtil |
| | | .convertToTimeTemp(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1), "yyyy-M")); |
| | | vo.setLastMonthExtractMoney( |
| | | userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate, 1).abs()); |
| | | |
| | | minDate = new Date(0L); |
| | | maxDate = new Date(timeStamp); |
| | | // 累计成功提现 |
| | | vo.setTotalExtractMoney( |
| | | userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate, 1).abs()); |
| | | |
| | | // 累计自购返利 |
| | | typeList.clear(); |
| | | typeList.add(UserMoneyDetailTypeEnum.fanli); |
| | | typeList.add(UserMoneyDetailTypeEnum.fanliNew); |
| | | typeList.add(UserMoneyDetailTypeEnum.fanliWeiQuan); |
| | | typeList.add(UserMoneyDetailTypeEnum.fanliWeiQuanNew); |
| | | typeList.add(UserMoneyDetailTypeEnum.orderReward); |
| | | typeList.add(UserMoneyDetailTypeEnum.orderRewardNew); |
| | | vo.setTotalFanLiMoney( |
| | | userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate).abs()); |
| | | |
| | | // 累计分享赚 |
| | | typeList.clear(); |
| | | typeList.add(UserMoneyDetailTypeEnum.share); |
| | | typeList.add(UserMoneyDetailTypeEnum.shareNew); |
| | | typeList.add(UserMoneyDetailTypeEnum.shareWeiQuan); |
| | | vo.setTotalShareMoney( |
| | | userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate).abs()); |
| | | |
| | | // 累计邀请赚 |
| | | typeList.clear(); |
| | | typeList.add(UserMoneyDetailTypeEnum.invite); |
| | | typeList.add(UserMoneyDetailTypeEnum.inviteWeiQuan); |
| | | typeList.add(UserMoneyDetailTypeEnum.inviteAndShare); |
| | | typeList.add(UserMoneyDetailTypeEnum.subsidy); |
| | | typeList.add(UserMoneyDetailTypeEnum.teamReward); |
| | | vo.setTotalInviteMoney( |
| | | userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate).abs()); |
| | | |
| | | //累计所有 |
| | | typeList.clear(); |
| | | typeList.add(UserMoneyDetailTypeEnum.fanli); |
| | | typeList.add(UserMoneyDetailTypeEnum.fanliNew); |
| | | typeList.add(UserMoneyDetailTypeEnum.fanliWeiQuan); |
| | | typeList.add(UserMoneyDetailTypeEnum.fanliWeiQuanNew); |
| | | typeList.add(UserMoneyDetailTypeEnum.orderReward); |
| | | typeList.add(UserMoneyDetailTypeEnum.orderRewardNew); |
| | | typeList.add(UserMoneyDetailTypeEnum.share); |
| | | typeList.add(UserMoneyDetailTypeEnum.shareNew); |
| | | typeList.add(UserMoneyDetailTypeEnum.shareWeiQuan); |
| | | vo.setTotalMoney( |
| | | userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate).abs()); |
| | | |
| | | |
| | | if (VersionUtil.greaterThan_2_1_2(acceptData.getPlatform(), acceptData.getVersion())) { |
| | | vo.setMoneyArrivalDesc("尽早确认收货可以促使资金尽早到账"); |
| | | |
| | | minDate = new Date(TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(timeStamp, "yyyy-MM"), "yyyy-MM")); |
| | | Calendar ca = Calendar.getInstance(); |
| | | ca.setTime(new Date(timeStamp)); |
| | | ca.add(Calendar.MONTH, 1); |
| | | maxDate = new Date( |
| | | TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(ca.getTimeInMillis(), "yyyy-MM"), "yyyy-MM")); |
| | | // 本月未到账 |
| | | BigDecimal monthUnRecievedMoney = hongBaoV2Service.getUnRecievedMoneyWithPreGetTime(uid, minDate, maxDate); |
| | | vo.setMonthUnRecievedMoney(monthUnRecievedMoney); |
| | | |
| | | // 全部未到账 |
| | | minDate = new Date(timeStamp - 1000 * 60 * 60L * 24 * 365L); |
| | | maxDate = new Date(timeStamp); |
| | | vo.setTotalUnRecievedMoney(hongBaoV2Service.getUnRecievedMoneyWithCreateTime(uid, minDate, maxDate)); |
| | | } else { |
| | | vo.setMoneyArrivalDesc("订单已到账后提现时间和金额均不受限制"); |
| | | // 本月收货 |
| | | maxDate = new Date(timeStamp); |
| | | calendar = Calendar.getInstance(); |
| | | minDate = new Date(TimeUtil |
| | | .convertToTimeTemp(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1), "yyyy-M")); |
| | | calendar.add(Calendar.MONTH, -1); |
| | | vo.setMonthSettleMoney(hongBaoV2CountService.sumMoneyBySettleTimeAndUid(uid, minDate, maxDate)); |
| | | |
| | | // 上月收货 |
| | | maxDate = new Date(TimeUtil |
| | | .convertToTimeTemp(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1), "yyyy-M")); |
| | | calendar.add(Calendar.MONTH, -1); |
| | | minDate = new Date(TimeUtil |
| | | .convertToTimeTemp(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1), "yyyy-M")); |
| | | vo.setLastMonthSettleMoney(hongBaoV2CountService.sumMoneyBySettleTimeAndUid(uid, minDate, maxDate)); |
| | | } |
| | | |
| | | // 待确认收货(180天内) |
| | | vo.setNotSettleMoney(hongBaoV2CountService.sumMoneyByANotSettleAndUid(uid)); |
| | | |
| | | // 今日预估 |
| | | calendar.add(Calendar.DAY_OF_YEAR, -1); |
| | | minDate = new Date(TimeUtil.convertDateToTemp(TimeUtil.getGernalTime(timeStamp))); |
| | | vo.setTodayPredict(cratePredictVO(orderMoneyDailyCountService.query(uid, minDate, null))); |
| | | |
| | | // 本月预估 |
| | | maxDate = new Date(timeStamp); |
| | | calendar = Calendar.getInstance(); |
| | | minDate = new Date(TimeUtil |
| | | .convertToTimeTemp(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1), "yyyy-M")); |
| | | calendar.add(Calendar.MONTH, -1); |
| | | vo.setMonthPredict(cratePredictVO(orderMoneyDailyCountService.query(uid, minDate, maxDate))); |
| | | return vo; |
| | | } |
| | | |
| | | @RequestMapping(value = "getUserMoneyInfo") |
| | | public void getUserMoneyInfo(AcceptData acceptData, Long uid, PrintWriter out) { |
| | | if (uid == null || uid == 0) { |
| | | out.print(JsonUtil.loadFalseResult(1, "用户未登录")); |
| | | return; |
| | | } |
| | | UserInfo user = userInfoService.getUserById(uid); |
| | | |
| | | MoneyStatisticVO vo = new MoneyStatisticVO(); |
| | | vo.setLink(configService.getValue(ConfigKeyEnum.autoExtractHelpUrl.getKey(), acceptData.getSystem())); |
| | | vo.setBalanceMoney(user.getMyHongBao()); |
| | | // 获取提现中的信息 |
| | | BigDecimal extractingMoney = extractService.sumVerifyingMoney(uid); |
| | | if (extractingMoney.compareTo(new BigDecimal(0)) > 0) |
| | | vo.setExtractingMoneyInfo("提现中:¥" + extractingMoney.setScale(2, RoundingMode.HALF_UP)); |
| | | Gson gson = getGson(); |
| | | out.print(JsonUtil.loadTrueResult(gson.toJson(vo))); |
| | | } |
| | | |
| | | private MoneyPredictVO cratePredictVO(List<OrderMoneyDailyCount> list) { |
| | | MoneyPredictVO predictVO = new MoneyPredictVO(); |
| | | predictVO.setMineNum(0); |
| | | predictVO.setTeamNum(0); |
| | | predictVO.setTotalNum(0); |
| | | predictVO.setMineMoney(BigDecimal.valueOf(0)); |
| | | predictVO.setTeamMoney(BigDecimal.valueOf(0)); |
| | | BigDecimal hundred = BigDecimal.valueOf(100); |
| | | if (list != null && list.size() > 0) { |
| | | for (OrderMoneyDailyCount dailyCount : list) { |
| | | if (dailyCount.getOrderNum() != null) |
| | | predictVO.setMineNum(predictVO.getMineNum() + dailyCount.getOrderNum()); |
| | | if (dailyCount.getOrderNumTeam() != null) |
| | | predictVO.setTeamNum(predictVO.getTeamNum() + dailyCount.getOrderNumTeam()); |
| | | |
| | | if (dailyCount.getTeamDividentsOrderNum() != null) |
| | | predictVO.setTotalNum(predictVO.getTotalNum() + dailyCount.getTeamDividentsOrderNum()); |
| | | |
| | | if (dailyCount.getIncome() != null) |
| | | predictVO.setMineMoney(predictVO.getMineMoney() |
| | | .add(MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getIncome()), hundred))); |
| | | if (dailyCount.getIncomeTeam() != null) |
| | | predictVO.setTeamMoney(predictVO.getTeamMoney() |
| | | .add(MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getIncomeTeam()), hundred))); |
| | | } |
| | | } |
| | | predictVO.setTotalNum(predictVO.getTotalNum()); |
| | | predictVO.setTotalMoney(predictVO.getMineMoney().add(predictVO.getTeamMoney())); |
| | | return predictVO; |
| | | } |
| | | |
| | | /** |
| | | * 提现成功记录 |
| | | * |
| | | * @param acceptData |
| | | * @param page |
| | | * @param uid |
| | | * @param out |
| | | */ |
| | | @RequestMapping(value = "getExtractRecord") |
| | | public void getExtractRecord(AcceptData acceptData, Integer page, Long uid, PrintWriter out) { |
| | | if (uid == null || uid == 0) { |
| | | out.print(JsonUtil.loadFalseResult(1, "用户未登录")); |
| | | return; |
| | | } |
| | | |
| | | long count = 0; |
| | | |
| | | List<Extract> list = null; |
| | | String redisContent = previewInfoService.getRedisContent(uid, PreviewEnum.extractRecord); |
| | | if (!StringUtil.isNullOrEmpty(redisContent)) { |
| | | Gson gson = new Gson(); |
| | | list = gson.fromJson(redisContent, new TypeToken<ArrayList<Extract>>() { |
| | | }.getType()); |
| | | } |
| | | |
| | | if (list != null && list.size() > 0) {// 有预览数据 |
| | | count = list.size(); |
| | | } else {// 无预览数据 |
| | | list = extractService.getExtractSucceedRecord(page, Constant.PAGE_SIZE, uid); |
| | | count = extractService.countExtractSucceedRecord(uid); |
| | | } |
| | | |
| | | // 查询真实 |
| | | if (list == null) |
| | | list = new ArrayList<>(); |
| | | |
| | | JSONArray JSONArray = new JSONArray(); |
| | | for (Extract extract : list) { |
| | | Date receiveTime = extract.getReceiveTime(); |
| | | if (receiveTime == null) { |
| | | receiveTime = new Date(extract.getExtractTime()); |
| | | } |
| | | String account = "支付宝:" + UserUtil.filterAlipayAccount(extract.getAccount()); |
| | | account = account + "-姓名:" + UserUtil.filterAlipayName(extract.getName()); |
| | | |
| | | JSONObject object = new JSONObject(); |
| | | object.put("title", "你于" + TimeUtil.formatDate(receiveTime) + "提现成功"); |
| | | object.put("account", account); |
| | | object.put("money", "¥" + extract.getMoney().setScale(2).toString()); |
| | | JSONArray.add(object); |
| | | } |
| | | |
| | | JSONObject json = new JSONObject(); |
| | | json.put("count", count); |
| | | json.put("list", JSONArray); |
| | | out.print(JsonUtil.loadTrueResult(json)); |
| | | } |
| | | |
| | | /** |
| | | * 历史详情 |
| | | * |
| | | * @param acceptData |
| | | * @param uid |
| | | * @param datetype 1-天 - 2月 |
| | | * @param out |
| | | */ |
| | | @RequestMapping(value = "getHistoryDetail") |
| | | public void getHistoryDetail(AcceptData acceptData, Long uid, String date, Integer datetype, PrintWriter out) { |
| | | if (uid == null || uid == 0) { |
| | | out.print(JsonUtil.loadFalseResult(1, "用户未登录")); |
| | | return; |
| | | } |
| | | |
| | | if (StringUtil.isNullOrEmpty(date) || datetype == null) { |
| | | out.print(JsonUtil.loadFalseResult(1, "参数不完整")); |
| | | return; |
| | | } |
| | | |
| | | try { |
| | | Date minDay = new Date(); |
| | | Date maxDay = new Date(); |
| | | BigDecimal zero = new BigDecimal(0); |
| | | List<OrderMoneyDailyCount> listDailyCount = null; |
| | | List<MoneyPredictVO> list = new ArrayList<>(); |
| | | SimpleDateFormat formatMonth = new SimpleDateFormat("yyyy年MM月"); |
| | | SimpleDateFormat formatDay = new SimpleDateFormat("yyyy年MM月dd日"); |
| | | if (datetype == 1) { |
| | | // 后退7个月 |
| | | int countNum = 7; |
| | | Date day = TimeUtil.parseYYYYMMDD(date); |
| | | for (int i = 0; i < countNum; i++) { |
| | | MoneyPredictVO predictVO = new MoneyPredictVO(zero, 0, zero, 0); |
| | | if (i == 0) { |
| | | predictVO.setCountDate(formatDay.format(day)); |
| | | } else { |
| | | predictVO.setCountDate(formatDay.format(DateUtil.reduceDay(i, day))); |
| | | } |
| | | list.add(predictVO); |
| | | |
| | | if (i == countNum - 1) { |
| | | minDay = DateUtil.reduceDay(i, day); |
| | | } |
| | | } |
| | | maxDay = TimeUtil.parseYYYYMMDD_HHMMSS(date + " 23:59:59"); |
| | | listDailyCount = orderMoneyDailyCountService.sumGroupByCountDay(uid, minDay, maxDay); |
| | | } else if (datetype == 2) { |
| | | // 后退3个月 |
| | | int countNum = 3; |
| | | Date day = TimeUtil.parseYYYYMMDD(DateUtil.getFirstDayOfMonth(date)); |
| | | for (int i = 0; i < countNum; i++) { |
| | | MoneyPredictVO predictVO = new MoneyPredictVO(zero, 0, zero, 0); |
| | | if (i == 0) { |
| | | predictVO.setCountDate(formatMonth.format(day)); |
| | | } else { |
| | | predictVO.setCountDate(formatMonth.format(DateUtil.reduceMonth(day, i))); |
| | | } |
| | | list.add(predictVO); |
| | | |
| | | if (i == countNum - 1) { |
| | | minDay = DateUtil.reduceMonth(day, i); |
| | | } |
| | | } |
| | | maxDay = TimeUtil.parseYYYYMMDD_HHMMSS(DateUtil.getLastDayOfMonth(date) + " 23:59:59"); |
| | | listDailyCount = orderMoneyDailyCountService.sumGroupByYearMonth(uid, minDay, maxDay); |
| | | } |
| | | |
| | | BigDecimal hundred = BigDecimal.valueOf(100); |
| | | for (MoneyPredictVO predictVO : list) { |
| | | String countDate = predictVO.getCountDate(); |
| | | |
| | | if (listDailyCount != null && listDailyCount.size() > 0) { |
| | | for (OrderMoneyDailyCount dailyCount : listDailyCount) { |
| | | Date countDay = dailyCount.getCountDay(); |
| | | if (datetype == 1 && countDay != null && countDate.equals(formatDay.format(countDay))) { |
| | | predictVO.setMineNum(dailyCount.getOrderNum()); |
| | | predictVO.setMineMoney( |
| | | MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getIncome()), hundred)); |
| | | predictVO.setTeamNum(dailyCount.getOrderNumTeam()); |
| | | predictVO.setTeamMoney( |
| | | MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getIncomeTeam()), hundred)); |
| | | break; |
| | | } |
| | | |
| | | String yearMonth = dailyCount.getYearMonth(); |
| | | if (datetype == 2 && !StringUtil.isNullOrEmpty(yearMonth) && countDate.equals( |
| | | formatMonth.format(TimeUtil.parseYYYYMMDD(DateUtil.getFirstDayOfMonth(yearMonth))))) { |
| | | predictVO.setMineNum(dailyCount.getOrderNum()); |
| | | predictVO.setMineMoney( |
| | | MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getIncome()), hundred)); |
| | | predictVO.setTeamNum(dailyCount.getOrderNumTeam()); |
| | | predictVO.setTeamMoney( |
| | | MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getIncomeTeam()), hundred)); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | predictVO.setTotalNum(predictVO.getTeamNum() + predictVO.getMineNum()); |
| | | predictVO.setTotalMoney(predictVO.getMineMoney().add(predictVO.getTeamMoney())); |
| | | } |
| | | |
| | | Gson gson = getGson(); |
| | | |
| | | JSONObject object = new JSONObject(); |
| | | object.put("count", list.size()); |
| | | object.put("list", gson.toJson(list)); |
| | | out.print(JsonUtil.loadTrueResult(object)); |
| | | } catch (ParseException e) { |
| | | out.print(JsonUtil.loadFalseResult(1, "查询失败")); |
| | | e.printStackTrace(); |
| | | LogHelper.errorDetailInfo(e); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 收益详情 |
| | | * |
| | | * @param acceptData |
| | | * @param uid |
| | | * @param datetype |
| | | * @param type |
| | | * @param out |
| | | */ |
| | | @RequestMapping(value = "getIncomeDetail") |
| | | public void getIncomeDetail(AcceptData acceptData, Long uid, String date, Integer datetype, Integer type, |
| | | PrintWriter out) { |
| | | if (uid == null || uid == 0) { |
| | | out.print(JsonUtil.loadFalseResult(1, "用户未登录")); |
| | | return; |
| | | } |
| | | |
| | | if (StringUtil.isNullOrEmpty(date) || datetype == null || type == null) { |
| | | out.print(JsonUtil.loadFalseResult(1, "参数不完整")); |
| | | return; |
| | | } |
| | | |
| | | Date minDay = new Date(); |
| | | Date maxDay = new Date(); |
| | | if (datetype == 1) { |
| | | minDay = TimeUtil.parseYYYYMMDD(date); |
| | | maxDay = TimeUtil.parseYYYYMMDD_HHMMSS(date + " 23:59:59"); |
| | | } else if (datetype == 2) { |
| | | String firstDay = DateUtil.getFirstDayOfMonth(date); |
| | | String lastDay = DateUtil.getLastDayOfMonth(date); |
| | | minDay = TimeUtil.parseYYYYMMDD(firstDay); |
| | | maxDay = TimeUtil.parseYYYYMMDD_HHMMSS(lastDay + " 23:59:59"); |
| | | } |
| | | |
| | | List<OrderMoneyDailyCount> listDailyCount = null; |
| | | if (type == 1) { |
| | | listDailyCount = orderMoneyDailyCountService.sumGroupBySourceType(uid, minDay, maxDay); |
| | | } else if (type == 2) { |
| | | listDailyCount = orderMoneyDailyCountService.sumTeamGroupBySourceType(uid, minDay, maxDay); |
| | | } |
| | | |
| | | BigDecimal zero = new BigDecimal(0); |
| | | List<IncomeDetailVO> list = new ArrayList<>(); |
| | | |
| | | BigDecimal hundred = BigDecimal.valueOf(100); |
| | | SourceTypeEnum[] arrayEnun = SourceTypeEnum.values(); |
| | | for (int m = 0; m < arrayEnun.length; m++) { |
| | | SourceTypeEnum typeEnum = arrayEnun[m]; |
| | | IncomeDetailVO detail = new IncomeDetailVO(typeEnum.getIcon(), 0, zero); |
| | | if (listDailyCount != null && listDailyCount.size() > 0) { |
| | | for (OrderMoneyDailyCount dailyCount : listDailyCount) { |
| | | if (dailyCount.getSourceType() == typeEnum) { |
| | | detail.setNum(detail.getNum() + dailyCount.getOrderNum()); |
| | | detail.setMoney(detail.getMoney() |
| | | .add(MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getIncome()), hundred))); |
| | | } |
| | | } |
| | | } |
| | | list.add(detail); |
| | | } |
| | | |
| | | Gson gson = getGson(); |
| | | |
| | | JSONObject object = new JSONObject(); |
| | | object.put("count", list.size()); |
| | | object.put("list", gson.toJson(list)); |
| | | out.print(JsonUtil.loadTrueResult(object)); |
| | | } |
| | | |
| | | /** |
| | | * 团队分红 |
| | | * |
| | | * @param acceptData |
| | | * @param uid |
| | | * @param out |
| | | */ |
| | | @RequestMapping(value = "getTeamDividendStatistic") |
| | | public void getTeamDividendStatistic(String callback, AcceptData acceptData, Long uid, PrintWriter out) { |
| | | if (uid == null || uid == 0) { |
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("用户未登录")); |
| | | return; |
| | | } |
| | | |
| | | Date minDate = null; |
| | | Date maxDate = null; |
| | | long timeStamp = System.currentTimeMillis(); |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.setTimeInMillis(timeStamp); |
| | | // 今日预估 |
| | | calendar.add(Calendar.DAY_OF_YEAR, -1); |
| | | minDate = new Date(TimeUtil.convertDateToTemp(TimeUtil.getGernalTime(timeStamp))); |
| | | TeamPredictVO todayVO = crateTeamPredictVO(orderMoneyDailyCountService.query(uid, minDate, null)); |
| | | |
| | | // 本月预估 |
| | | maxDate = new Date(timeStamp); |
| | | calendar = Calendar.getInstance(); |
| | | minDate = new Date(TimeUtil |
| | | .convertToTimeTemp(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1), "yyyy-M")); |
| | | calendar.add(Calendar.MONTH, -1); |
| | | TeamPredictVO monthVO = crateTeamPredictVO(orderMoneyDailyCountService.query(uid, minDate, maxDate)); |
| | | |
| | | // 统计已到账分红、补贴 |
| | | BigDecimal subsidy = teamEincomeRecordService.sumRecieveByType(uid, TeamEincomeRecord.TYPE_TEAM_SUBSIDY); |
| | | BigDecimal reward = teamEincomeRecordService.sumRecieveByType(uid, TeamEincomeRecord.TYPE_TEAM_DIVIDENTS); |
| | | |
| | | Gson gson = getGson(); |
| | | JSONObject object = new JSONObject(); |
| | | object.put("total", subsidy.add(reward).setScale(2).toString()); |
| | | object.put("reward", reward.setScale(2).toString()); |
| | | object.put("subsidy", subsidy.setScale(2).toString()); |
| | | object.put("today", gson.toJson(todayVO)); |
| | | object.put("month", gson.toJson(monthVO)); |
| | | JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(object)); |
| | | } |
| | | |
| | | private TeamPredictVO crateTeamPredictVO(List<OrderMoneyDailyCount> list) { |
| | | TeamPredictVO predictVO = new TeamPredictVO(BigDecimal.ZERO, 0, BigDecimal.ZERO, 0, 0); |
| | | if (list != null && list.size() > 0) { |
| | | BigDecimal hundred = BigDecimal.valueOf(100); |
| | | for (OrderMoneyDailyCount dailyCount : list) { |
| | | if (dailyCount.getTeamRewardNum() != null) |
| | | predictVO.setRewardNum(predictVO.getRewardNum() + dailyCount.getTeamRewardNum()); |
| | | if (dailyCount.getTeamSubsidyNum() != null) |
| | | predictVO.setSubsidyNum(predictVO.getSubsidyNum() + dailyCount.getTeamSubsidyNum()); |
| | | if (dailyCount.getTeamReward() != null) |
| | | predictVO.setReward(predictVO.getReward() |
| | | .add(MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getTeamReward()), hundred))); |
| | | if (dailyCount.getTeamSubsidy() != null) |
| | | predictVO.setSubsidy(predictVO.getSubsidy() |
| | | .add(MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getTeamSubsidy()), hundred))); |
| | | |
| | | if (dailyCount.getTeamDividentsOrderNum() != null) |
| | | predictVO.setTotalNum(predictVO.getTotalNum() + dailyCount.getTeamDividentsOrderNum()); |
| | | |
| | | } |
| | | } |
| | | predictVO.setTotalNum(predictVO.getTotalNum()); |
| | | predictVO.setTotalMoney(predictVO.getReward().add(predictVO.getSubsidy())); |
| | | return predictVO; |
| | | } |
| | | |
| | | /** |
| | | * 历史详情 |
| | | * |
| | | * @param acceptData |
| | | * @param uid |
| | | * @param datetype 1-天 - 2月 |
| | | * @param out |
| | | */ |
| | | @RequestMapping(value = "getTeamDividendHistory") |
| | | public void getTeamDividendHistory(String callback, AcceptData acceptData, Long uid, String date, Integer datetype, |
| | | PrintWriter out) { |
| | | if (uid == null || uid == 0) { |
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("用户未登录")); |
| | | return; |
| | | } |
| | | |
| | | if (StringUtil.isNullOrEmpty(date) || datetype == null) { |
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("参数不完整")); |
| | | return; |
| | | } |
| | | |
| | | try { |
| | | Date minDay = new Date(); |
| | | Date maxDay = new Date(); |
| | | BigDecimal zero = new BigDecimal(0); |
| | | List<OrderMoneyDailyCount> listDailyCount = null; |
| | | List<TeamPredictVO> list = new ArrayList<>(); |
| | | SimpleDateFormat formatMonth = new SimpleDateFormat("yyyy年MM月"); |
| | | SimpleDateFormat formatDay = new SimpleDateFormat("yyyy年MM月dd日"); |
| | | if (datetype == 1) { |
| | | // 后退7个月 |
| | | int countNum = 7; |
| | | Date day = TimeUtil.parseYYYYMMDD(date); |
| | | for (int i = 0; i < countNum; i++) { |
| | | TeamPredictVO predictVO = new TeamPredictVO(zero, 0, zero, 0, 0); |
| | | if (i == 0) { |
| | | predictVO.setCountDate(formatDay.format(day)); |
| | | } else { |
| | | predictVO.setCountDate(formatDay.format(DateUtil.reduceDay(i, day))); |
| | | } |
| | | list.add(predictVO); |
| | | |
| | | if (i == countNum - 1) { |
| | | minDay = DateUtil.reduceDay(i, day); |
| | | } |
| | | } |
| | | maxDay = TimeUtil.parseYYYYMMDD_HHMMSS(date + " 23:59:59"); |
| | | listDailyCount = orderMoneyDailyCountService.sumTeamGroupByCountDay(uid, minDay, maxDay); |
| | | } else if (datetype == 2) { |
| | | // 后退3个月 |
| | | int countNum = 3; |
| | | Date day = TimeUtil.parseYYYYMMDD(DateUtil.getFirstDayOfMonth(date)); |
| | | for (int i = 0; i < countNum; i++) { |
| | | TeamPredictVO predictVO = new TeamPredictVO(zero, 0, zero, 0, 0); |
| | | if (i == 0) { |
| | | predictVO.setCountDate(formatMonth.format(day)); |
| | | } else { |
| | | predictVO.setCountDate(formatMonth.format(DateUtil.reduceMonth(day, i))); |
| | | } |
| | | list.add(predictVO); |
| | | |
| | | if (i == countNum - 1) { |
| | | minDay = DateUtil.reduceMonth(day, i); |
| | | } |
| | | } |
| | | maxDay = TimeUtil.parseYYYYMMDD_HHMMSS(DateUtil.getLastDayOfMonth(date) + " 23:59:59"); |
| | | listDailyCount = orderMoneyDailyCountService.sumTeamGroupByYearMonth(uid, minDay, maxDay); |
| | | } |
| | | |
| | | BigDecimal hundred = BigDecimal.valueOf(100); |
| | | for (TeamPredictVO predictVO : list) { |
| | | String countDate = predictVO.getCountDate(); |
| | | |
| | | if (listDailyCount != null && listDailyCount.size() > 0) { |
| | | for (OrderMoneyDailyCount dailyCount : listDailyCount) { |
| | | Date countDay = dailyCount.getCountDay(); |
| | | if (datetype == 1 && countDay != null && countDate.equals(formatDay.format(countDay))) { |
| | | predictVO.setRewardNum(dailyCount.getTeamRewardNum()); |
| | | predictVO.setReward( |
| | | MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getTeamReward()), hundred)); |
| | | predictVO.setSubsidyNum(dailyCount.getTeamSubsidyNum()); |
| | | predictVO.setSubsidy( |
| | | MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getTeamSubsidy()), hundred)); |
| | | predictVO.setTotalNum(dailyCount.getTeamDividentsOrderNum()); |
| | | break; |
| | | } |
| | | |
| | | String yearMonth = dailyCount.getYearMonth(); |
| | | if (datetype == 2 && !StringUtil.isNullOrEmpty(yearMonth) && countDate.equals( |
| | | formatMonth.format(TimeUtil.parseYYYYMMDD(DateUtil.getFirstDayOfMonth(yearMonth))))) { |
| | | predictVO.setRewardNum(dailyCount.getTeamRewardNum()); |
| | | predictVO.setReward( |
| | | MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getTeamReward()), hundred)); |
| | | predictVO.setSubsidyNum(dailyCount.getTeamSubsidyNum()); |
| | | predictVO.setSubsidy( |
| | | MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getTeamSubsidy()), hundred)); |
| | | |
| | | predictVO.setTotalNum(dailyCount.getTeamDividentsOrderNum()); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | predictVO.setTotalNum(predictVO.getTotalNum()); |
| | | predictVO.setTotalMoney(predictVO.getReward().add(predictVO.getSubsidy())); |
| | | } |
| | | |
| | | Gson gson = getGson(); |
| | | |
| | | JSONObject object = new JSONObject(); |
| | | object.put("count", list.size()); |
| | | object.put("list", gson.toJson(list)); |
| | | JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(object)); |
| | | } catch (ParseException e) { |
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("统计失败")); |
| | | e.printStackTrace(); |
| | | LogHelper.errorDetailInfo(e); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 分红详情 |
| | | * |
| | | * @param acceptData |
| | | * @param uid |
| | | * @param datetype 1-天 - 2月 |
| | | * @param out |
| | | */ |
| | | @RequestMapping(value = "getTeamDividendDetail") |
| | | public void getTeamDividendDetail(String callback, AcceptData acceptData, Integer page, Long uid, String date, |
| | | Integer datetype, String key, PrintWriter out) { |
| | | if (uid == null || uid == 0) { |
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("用户未登录")); |
| | | return; |
| | | } |
| | | |
| | | if (StringUtil.isNullOrEmpty(date) || datetype == null) { |
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("参数不完整")); |
| | | return; |
| | | } |
| | | |
| | | if (page == null) |
| | | page = 1; |
| | | int pageSize = Constant.PAGE_SIZE; |
| | | |
| | | try { |
| | | Date minDay = new Date(); |
| | | Date maxDay = new Date(); |
| | | if (datetype == 1) { |
| | | minDay = TimeUtil.parseYYYYMMDD(date); |
| | | maxDay = TimeUtil.parseYYYYMMDD_HHMMSS(date + " 23:59:59"); |
| | | } else if (datetype == 2) { |
| | | minDay = TimeUtil.parseYYYYMMDD(DateUtil.getFirstDayOfMonth(date)); |
| | | maxDay = TimeUtil.parseYYYYMMDD_HHMMSS(DateUtil.getLastDayOfMonth(date) + " 23:59:59"); |
| | | } |
| | | List<TeamDividentsVO> list = teamDividentsSourceOrderUserMapService |
| | | .listByDateAndTargetUid((page - 1) * pageSize, pageSize, uid, minDay, maxDay, key); |
| | | if (list == null) { |
| | | list = new ArrayList<>(); |
| | | } |
| | | long count = teamDividentsSourceOrderUserMapService.countByDateAndTargetUid(uid, minDay, maxDay, key); |
| | | |
| | | GsonBuilder builder = new GsonBuilder(); |
| | | builder.registerTypeAdapter(BigDecimal.class, new JsonSerializer<BigDecimal>() { |
| | | @Override |
| | | public JsonElement serialize(BigDecimal value, Type theType, JsonSerializationContext context) { |
| | | if (value == null) { |
| | | return new JsonPrimitive("0.00"); |
| | | } else { |
| | | // 保留3位小数 |
| | | value = value.setScale(3, RoundingMode.DOWN); |
| | | return new JsonPrimitive(value.toString()); |
| | | } |
| | | } |
| | | }); |
| | | |
| | | Gson gson = builder.create(); |
| | | JSONObject object = new JSONObject(); |
| | | |
| | | if (page == 1) { |
| | | TeamDividentsVO teamDividentsVO = teamDividentsSourceOrderUserMapService.sumByDateAndTargetUid(uid, |
| | | minDay, maxDay, key); |
| | | if (teamDividentsVO == null) { |
| | | teamDividentsVO = new TeamDividentsVO(); |
| | | teamDividentsVO.setSubsidy(BigDecimal.ZERO); |
| | | teamDividentsVO.setDividents(BigDecimal.ZERO); |
| | | } |
| | | object.put("subsidy", teamDividentsVO.getSubsidy().setScale(2, RoundingMode.DOWN).toString()); |
| | | object.put("dividents", teamDividentsVO.getDividents().setScale(2, RoundingMode.DOWN).toString()); |
| | | } |
| | | |
| | | object.put("count", count); |
| | | object.put("list", gson.toJson(list)); |
| | | JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(object)); |
| | | } catch (Exception e) { |
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("查询失败")); |
| | | e.printStackTrace(); |
| | | LogHelper.errorDetailInfo(e); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 订单统计-h5 |
| | | * |
| | | * @param acceptData |
| | | * @param out |
| | | */ |
| | | @RequestMapping(value = "countTeamOrderNum") |
| | | public void countTeamOrderNum(String callback, AcceptData acceptData, Long uid, PrintWriter out) { |
| | | try { |
| | | |
| | | Date minDate = null; |
| | | Date maxDate = null; |
| | | long timeStamp = System.currentTimeMillis(); |
| | | |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.setTimeInMillis(timeStamp); |
| | | |
| | | // 今日预估 |
| | | calendar.add(Calendar.DAY_OF_YEAR, -1); |
| | | minDate = new Date(TimeUtil.convertDateToTemp(TimeUtil.getGernalTime(timeStamp))); |
| | | OrderMoneyDailyCount todayRecord = createVO( |
| | | orderMoneyDailyCountService.sumTeamOrderNumGroupByCountDay(uid, minDate, null)); |
| | | |
| | | // 昨日预估 |
| | | calendar.add(Calendar.DAY_OF_YEAR, -1); |
| | | maxDate = new Date(TimeUtil.convertDateToTemp(TimeUtil.getGernalTime(timeStamp))); |
| | | minDate = DateUtil.reduceDay(1, maxDate); |
| | | OrderMoneyDailyCount yesterdayRecord = createVO( |
| | | orderMoneyDailyCountService.sumTeamOrderNumGroupByCountDay(uid, minDate, maxDate)); |
| | | |
| | | // 本月预估 |
| | | maxDate = new Date(timeStamp); |
| | | calendar = Calendar.getInstance(); |
| | | minDate = new Date(TimeUtil.convertToTimeTemp( |
| | | calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1), "yyyy-M")); |
| | | calendar.add(Calendar.MONTH, -1); |
| | | OrderMoneyDailyCount monthRecord = createVO( |
| | | orderMoneyDailyCountService.sumTeamOrderNumGroupByYearMonth(uid, minDate, maxDate)); |
| | | |
| | | // 累计 |
| | | OrderMoneyDailyCount totalityRecord = createVO( |
| | | orderMoneyDailyCountService.sumTeamOrderNumGroupByUid(uid, null, null)); |
| | | |
| | | JSONObject today = new JSONObject(); |
| | | today.put("direct", todayRecord.getDirectOrderNum()); |
| | | today.put("indirect", todayRecord.getInDirectOrderNum()); |
| | | today.put("beyond", todayRecord.getBeyondOrderNum()); |
| | | |
| | | JSONObject yesterday = new JSONObject(); |
| | | yesterday.put("direct", yesterdayRecord.getDirectOrderNum()); |
| | | yesterday.put("indirect", yesterdayRecord.getInDirectOrderNum()); |
| | | yesterday.put("beyond", yesterdayRecord.getBeyondOrderNum()); |
| | | |
| | | JSONObject month = new JSONObject(); |
| | | month.put("direct", monthRecord.getDirectOrderNum()); |
| | | month.put("indirect", monthRecord.getInDirectOrderNum()); |
| | | month.put("beyond", monthRecord.getBeyondOrderNum()); |
| | | |
| | | JSONObject totality = new JSONObject(); |
| | | totality.put("direct", totalityRecord.getDirectOrderNum()); |
| | | totality.put("indirect", totalityRecord.getInDirectOrderNum()); |
| | | totality.put("beyond", totalityRecord.getBeyondOrderNum()); |
| | | |
| | | JSONObject json = new JSONObject(); |
| | | json.put("today", today); |
| | | json.put("yesterday", yesterday); |
| | | json.put("month", month); |
| | | json.put("totality", totality); |
| | | JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(json)); |
| | | } catch (Exception e) { |
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("统计失败")); |
| | | e.printStackTrace(); |
| | | LogHelper.errorDetailInfo(e); |
| | | } |
| | | } |
| | | |
| | | private OrderMoneyDailyCount createVO(List<OrderMoneyDailyCount> list) { |
| | | OrderMoneyDailyCount totalityRecord = new OrderMoneyDailyCount(0, 0, 0); |
| | | if (list != null && list.size() > 0) { |
| | | for (OrderMoneyDailyCount record : list) { |
| | | totalityRecord.setDirectOrderNum(totalityRecord.getDirectOrderNum() + record.getDirectOrderNum()); |
| | | totalityRecord.setInDirectOrderNum(totalityRecord.getInDirectOrderNum() + record.getInDirectOrderNum()); |
| | | totalityRecord.setBeyondOrderNum(totalityRecord.getBeyondOrderNum() + record.getBeyondOrderNum()); |
| | | } |
| | | } |
| | | return totalityRecord; |
| | | } |
| | | |
| | | /** |
| | | * 订单排行榜 |
| | | * |
| | | * @param callback |
| | | * @param acceptData |
| | | * @param uid |
| | | * @param dateType |
| | | * @param out |
| | | */ |
| | | @RequestMapping(value = "getRanking") |
| | | public void getRanking(String callback, AcceptData acceptData, Long uid, Integer dateType, PrintWriter out) { |
| | | if (uid == null || dateType == null) { |
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("参数缺失")); |
| | | return; |
| | | } |
| | | |
| | | try { |
| | | Date minDate = null; |
| | | Date maxDate = null; |
| | | long timeStamp = System.currentTimeMillis(); |
| | | |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.setTimeInMillis(timeStamp); |
| | | |
| | | if (dateType == 1) { |
| | | // 今日 |
| | | calendar.add(Calendar.DAY_OF_YEAR, -1); |
| | | minDate = new Date(TimeUtil.convertDateToTemp(TimeUtil.getGernalTime(timeStamp))); |
| | | } else if (dateType == 2) { |
| | | // 昨日 |
| | | calendar.add(Calendar.DAY_OF_YEAR, -1); |
| | | maxDate = new Date(TimeUtil.convertDateToTemp(TimeUtil.getGernalTime(timeStamp))); |
| | | minDate = DateUtil.reduceDay(1, maxDate); |
| | | } else { |
| | | // 本月 |
| | | maxDate = new Date(timeStamp); |
| | | calendar = Calendar.getInstance(); |
| | | minDate = new Date(TimeUtil.convertToTimeTemp( |
| | | calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1), "yyyy-M")); |
| | | calendar.add(Calendar.MONTH, -1); |
| | | } |
| | | |
| | | List<OrderRankingVO> list = orderMoneyDailyCountService.getRankingByOrderNum(uid, minDate, maxDate); |
| | | if (list.size() > 0) { |
| | | for (int i = 0; i < list.size(); i++) { |
| | | OrderRankingVO vo = list.get(i); |
| | | UserInfo user = userInfoService.getUserByIdWithMybatis(vo.getUid()); |
| | | if (user == null) { |
| | | list.remove(i); |
| | | i--; |
| | | continue; |
| | | } |
| | | vo.setNickName(user.getNickName()); |
| | | vo.setPortrait(user.getPortrait()); |
| | | } |
| | | } |
| | | |
| | | JSONObject json = new JSONObject(); |
| | | json.put("list", list); |
| | | JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(json)); |
| | | } catch (Exception e) { |
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("统计失败")); |
| | | e.printStackTrace(); |
| | | LogHelper.errorDetailInfo(e); |
| | | } |
| | | } |
| | | } |