Merge remote-tracking branch 'origin/div' into div
New file |
| | |
| | | package com.yeshi.fanli.controller.client.v2;
|
| | |
|
| | | import java.io.PrintWriter;
|
| | | import java.math.BigDecimal;
|
| | |
|
| | | import javax.annotation.Resource;
|
| | |
|
| | | import org.springframework.stereotype.Controller;
|
| | | import org.springframework.web.bind.annotation.RequestMapping;
|
| | | import org.springframework.web.multipart.MultipartFile;
|
| | | import org.yeshi.utils.JsonUtil;
|
| | |
|
| | | import com.yeshi.fanli.entity.accept.AcceptData;
|
| | | import com.yeshi.fanli.entity.bus.user.PreviewInfo;
|
| | | import com.yeshi.fanli.entity.bus.user.PreviewInfo.PreviewEnum;
|
| | | import com.yeshi.fanli.exception.user.PreviewInfoException;
|
| | | import com.yeshi.fanli.log.LogHelper;
|
| | | import com.yeshi.fanli.service.inter.user.PreviewInfoService;
|
| | | import com.yeshi.fanli.service.inter.user.UserInfoService;
|
| | | import com.yeshi.fanli.util.RedisManager;
|
| | | import com.yeshi.fanli.vo.money.MoneyStatisticVO;
|
| | | import com.yeshi.fanli.vo.user.MineInfoVO;
|
| | |
|
| | | import net.sf.json.JSONObject;
|
| | |
|
| | | @Controller
|
| | | @RequestMapping("api/v2/preview")
|
| | | public class PreviewInfoControllerV2 {
|
| | | @Resource
|
| | | private PreviewInfoService previewInfoService;
|
| | | |
| | | @Resource
|
| | | private UserInfoService userInfoService;
|
| | | |
| | | @Resource
|
| | | private RedisManager redisManager;
|
| | | |
| | | |
| | | /**
|
| | | * 保存资金信息
|
| | | * @param callback
|
| | | * @param acceptData
|
| | | * @param uid
|
| | | * @param vo
|
| | | * @param out
|
| | | */
|
| | | @RequestMapping(value = "saveMoneyInfo")
|
| | | public void saveMoneyInfo(String callback, AcceptData acceptData, Long uid, MoneyStatisticVO vo, PrintWriter out) {
|
| | | if (uid == null) {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("用户未登录"));
|
| | | return;
|
| | | }
|
| | | try {
|
| | | previewInfoService.saveMoneyInfo(uid, vo);
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("保存成功"));
|
| | | } catch (PreviewInfoException e) {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg()));
|
| | | }
|
| | | }
|
| | | |
| | | |
| | | /**
|
| | | * 保存提现记录
|
| | | * @param callback
|
| | | * @param acceptData
|
| | | * @param uid
|
| | | * @param vo
|
| | | * @param out
|
| | | */
|
| | | @RequestMapping(value = "saveExtractRecord")
|
| | | public void saveExtractRecord(String callback, AcceptData acceptData, Long uid, String time, BigDecimal money, PrintWriter out) {
|
| | | if (uid == null) {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("用户未登录"));
|
| | | return;
|
| | | }
|
| | | try {
|
| | | previewInfoService.saveExtractRecord(uid, time, money);
|
| | | } catch (PreviewInfoException e) {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg()));
|
| | | }
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("保存成功"));
|
| | | }
|
| | | |
| | | |
| | | |
| | | /**
|
| | | * 删除提现记录
|
| | | * @param callback
|
| | | * @param acceptData
|
| | | * @param uid
|
| | | * @param vo
|
| | | * @param out
|
| | | */
|
| | | @RequestMapping(value = "deleteExtractRecord")
|
| | | public void deleteExtractRecord(String callback, AcceptData acceptData, Long uid, Long id, PrintWriter out) {
|
| | | if (uid == null || id == null) {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("参数不完整"));
|
| | | return;
|
| | | }
|
| | | previewInfoService.deleteExtractRecord(uid, id);
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("删除成功"));
|
| | | }
|
| | | |
| | | |
| | | |
| | | /**
|
| | | * 保存我的信息
|
| | | * @param callback
|
| | | * @param acceptData
|
| | | * @param infoVO
|
| | | * @param file
|
| | | * @param out
|
| | | */
|
| | | @RequestMapping(value = "saveMineInfo")
|
| | | public void saveMineInfo(String callback, AcceptData acceptData, MineInfoVO infoVO, MultipartFile file, PrintWriter out) {
|
| | | if (infoVO == null || infoVO.getUid() == null) {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("用户未登录"));
|
| | | return;
|
| | | }
|
| | | try {
|
| | | previewInfoService.saveMineInfo(infoVO, file);
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("保存成功"));
|
| | | } catch (Exception e) {
|
| | | LogHelper.errorDetailInfo(e);
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("保存失败"));
|
| | | }
|
| | | }
|
| | | |
| | | |
| | | /**
|
| | | * 到账预览-生产图片
|
| | | * @param callback
|
| | | * @param acceptData
|
| | | * @param uid
|
| | | * @param money
|
| | | * @param time
|
| | | * @param orderNo
|
| | | * @param out
|
| | | */
|
| | | @RequestMapping(value = "saveMoneyArrival")
|
| | | public void saveMoneyArrival(String callback, AcceptData acceptData, Long uid, BigDecimal money, String time,
|
| | | String orderNo, PrintWriter out) {
|
| | | if (uid == null) {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("用户未登录"));
|
| | | return;
|
| | | }
|
| | | |
| | | try {
|
| | | String link = previewInfoService.saveMoneyArrival(uid, money, time, orderNo);
|
| | | JSONObject object = new JSONObject();
|
| | | object.put("link",link);
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(object));
|
| | | } catch (Exception e) {
|
| | | LogHelper.errorDetailInfo(e);
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("保存失败"));
|
| | | }
|
| | | }
|
| | | |
| | | @RequestMapping(value = "getMoneyInfo")
|
| | | public void getMoneyInfo(String callback, AcceptData acceptData, Long uid, PrintWriter out) {
|
| | | getInfo(callback, acceptData, uid, out, PreviewEnum.moneyInfo);
|
| | | }
|
| | | |
| | | @RequestMapping(value = "getExtractRecord")
|
| | | public void getExtractRecord(String callback, AcceptData acceptData, Long uid, PrintWriter out) {
|
| | | getInfo(callback, acceptData, uid, out, PreviewEnum.extractRecord);
|
| | | }
|
| | | |
| | | @RequestMapping(value = "getMineInfo")
|
| | | public void getMineInfo(String callback, AcceptData acceptData, Long uid, PrintWriter out) {
|
| | | getInfo(callback, acceptData, uid, out, PreviewEnum.mineInfo);
|
| | | }
|
| | | |
| | | private void getInfo(String callback, AcceptData acceptData, Long uid, PrintWriter out, PreviewEnum previewEnum) {
|
| | | PreviewInfo previewInfo = previewInfoService.get(uid, previewEnum);
|
| | | if (previewInfo == null) {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无数据"));
|
| | | return;
|
| | | }
|
| | | JSONObject object = new JSONObject();
|
| | | object.put("result", previewInfo.getContent());
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(object));
|
| | | }
|
| | | }
|
| | |
| | | import com.yeshi.fanli.entity.accept.AcceptData;
|
| | | import com.yeshi.fanli.entity.bus.user.Extract;
|
| | | 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.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.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;
|
| | |
| | |
|
| | | @Resource
|
| | | private OrderMoneyDailyCountService orderMoneyDailyCountService;
|
| | | |
| | | @Resource
|
| | | private TeamEincomeRecordService teamEincomeRecordService;
|
| | |
|
| | |
|
| | | private Gson getGson() {
|
| | |
| | | predictVO.setTeamNum(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)
|
| | |
| | | if (dailyCount.getOrderNumTeam() != null)
|
| | | predictVO.setTeamNum(predictVO.getTeamNum() + dailyCount.getOrderNumTeam());
|
| | | if (dailyCount.getIncome() != null)
|
| | | predictVO.setMineMoney(predictVO.getMineMoney().add(BigDecimal.valueOf(dailyCount.getIncome()/100)));
|
| | | predictVO.setMineMoney(predictVO.getMineMoney().add(MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getIncome()), hundred)));
|
| | | if (dailyCount.getIncomeTeam() != null)
|
| | | predictVO.setTeamMoney(predictVO.getTeamMoney().add(BigDecimal.valueOf(dailyCount.getIncomeTeam()/100)));
|
| | | predictVO.setTeamMoney(predictVO.getTeamMoney().add(MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getIncomeTeam()), hundred)));
|
| | | }
|
| | | }
|
| | | predictVO.setTotalNum(predictVO.getTeamNum() + predictVO.getMineNum());
|
| | |
| | | listDailyCount = orderMoneyDailyCountService.sumGroupByYearMonth(uid, minDay, maxDay);
|
| | | }
|
| | |
|
| | | BigDecimal hundred = BigDecimal.valueOf(100);
|
| | | for (MoneyPredictVO predictVO : list) {
|
| | | String countDate = predictVO.getCountDate();
|
| | |
|
| | |
| | | Date countDay = dailyCount.getCountDay();
|
| | | if (datetype == 1 && countDay != null && countDate.equals(formatDay.format(countDay))) {
|
| | | predictVO.setMineNum(dailyCount.getOrderNum());
|
| | | predictVO.setMineMoney(BigDecimal.valueOf(dailyCount.getIncome()/100));
|
| | | predictVO.setMineMoney(MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getIncome()), hundred));
|
| | | predictVO.setTeamNum(dailyCount.getOrderNumTeam());
|
| | | predictVO.setTeamMoney(BigDecimal.valueOf(dailyCount.getIncomeTeam()/100));
|
| | | predictVO.setTeamMoney(MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getIncomeTeam()), hundred));
|
| | | break;
|
| | | }
|
| | |
|
| | |
| | | if (datetype == 2 && !StringUtil.isNullOrEmpty(yearMonth)
|
| | | && countDate.equals(formatMonth.format(TimeUtil.parseYYYYMMDD(DateUtil.getFirstDayOfMonth(yearMonth))))) {
|
| | | predictVO.setMineNum(dailyCount.getOrderNum());
|
| | | predictVO.setMineMoney(BigDecimal.valueOf(dailyCount.getIncome()/100));
|
| | | predictVO.setMineMoney(MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getIncome()), hundred));
|
| | | predictVO.setTeamNum(dailyCount.getOrderNumTeam());
|
| | | predictVO.setTeamMoney(BigDecimal.valueOf(dailyCount.getIncomeTeam()/100));
|
| | | predictVO.setTeamMoney(MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getIncomeTeam()), hundred));
|
| | | break;
|
| | | }
|
| | | }
|
| | |
| | | List<OrderMoneyDailyCount> listDailyCount = null;
|
| | | if (type == 1) {
|
| | | listDailyCount = orderMoneyDailyCountService.sumGroupBySourceType(uid, minDay, maxDay);
|
| | | } else if (type == 1) {
|
| | | } 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];
|
| | |
| | | for (OrderMoneyDailyCount dailyCount : listDailyCount) {
|
| | | if (dailyCount.getSourceType() == typeEnum) {
|
| | | detail.setNum(detail.getNum() + dailyCount.getOrderNum());
|
| | | detail.setMoney(detail.getMoney().add(BigDecimal.valueOf(dailyCount.getIncome()/100)));
|
| | | detail.setMoney(detail.getMoney().add(MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getIncome()), hundred)));
|
| | | }
|
| | | }
|
| | | }
|
| | |
| | | // 今日预估
|
| | | calendar.add(Calendar.DAY_OF_YEAR, -1);
|
| | | minDate = new Date(TimeUtil.convertDateToTemp(TimeUtil.getGernalTime(timeStamp)));
|
| | | MoneyPredictVO todayVO = cratePredictVO(orderMoneyDailyCountService.query(uid, minDate, null));
|
| | | TeamPredictVO todayVO = crateTeamPredictVO(orderMoneyDailyCountService.query(uid, minDate, null));
|
| | |
|
| | | // 本月预估
|
| | | maxDate = new Date(timeStamp);
|
| | |
| | | minDate = new Date(TimeUtil
|
| | | .convertToTimeTemp(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1), "yyyy-M"));
|
| | | calendar.add(Calendar.MONTH, -1);
|
| | | MoneyPredictVO monthVO = cratePredictVO(orderMoneyDailyCountService.query(uid, minDate, maxDate));
|
| | | 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", "0.00"); //TODO
|
| | | object.put("reward", "0.00");
|
| | | object.put("subsidy", "0.00");
|
| | | 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));
|
| | | out.print(JsonUtil.loadTrueResult(object));
|
| | | }
|
| | |
|
| | |
|
| | | private TeamPredictVO crateTeamPredictVO(List<OrderMoneyDailyCount> list) {
|
| | | TeamPredictVO predictVO = new TeamPredictVO(BigDecimal.ZERO,0,BigDecimal.ZERO,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)));
|
| | |
|
| | | |
| | | }
|
| | | }
|
| | | predictVO.setTotalNum(predictVO.getRewardNum() + predictVO.getSubsidyNum());
|
| | | predictVO.setTotalMoney(predictVO.getReward().add(predictVO.getSubsidy()));
|
| | | return predictVO;
|
| | | }
|
| | |
|
| | |
|
| | |
|
| | |
| | | listDailyCount = orderMoneyDailyCountService.sumTeamGroupByYearMonth(uid, minDay, maxDay);
|
| | | }
|
| | |
|
| | | BigDecimal hundred = BigDecimal.valueOf(100);
|
| | | for (TeamPredictVO predictVO : list) {
|
| | | String countDate = predictVO.getCountDate();
|
| | |
|
| | |
| | | Date countDay = dailyCount.getCountDay();
|
| | | if (datetype == 1 && countDay != null && countDate.equals(formatDay.format(countDay))) {
|
| | | predictVO.setRewardNum(dailyCount.getTeamRewardNum());
|
| | | predictVO.setReward(BigDecimal.valueOf(dailyCount.getTeamReward()/100));
|
| | | predictVO.setReward(MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getTeamReward()), hundred));
|
| | | predictVO.setSubsidyNum(dailyCount.getTeamSubsidyNum());
|
| | | predictVO.setSubsidy(BigDecimal.valueOf(dailyCount.getTeamSubsidy()/100));
|
| | | predictVO.setSubsidy(MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getTeamSubsidy()), hundred));
|
| | | break;
|
| | | }
|
| | |
|
| | |
| | | if (datetype == 2 && !StringUtil.isNullOrEmpty(yearMonth)
|
| | | && countDate.equals(formatMonth.format(TimeUtil.parseYYYYMMDD(DateUtil.getFirstDayOfMonth(yearMonth))))) {
|
| | | predictVO.setRewardNum(dailyCount.getTeamRewardNum());
|
| | | predictVO.setReward(BigDecimal.valueOf(dailyCount.getTeamReward()/100));
|
| | | predictVO.setReward(MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getTeamReward()), hundred));
|
| | | predictVO.setSubsidyNum(dailyCount.getTeamSubsidyNum());
|
| | | predictVO.setSubsidy(BigDecimal.valueOf(dailyCount.getTeamSubsidy()/100));
|
| | | predictVO.setSubsidy(MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getTeamSubsidy()), hundred));
|
| | | break;
|
| | | }
|
| | | }
|
| | |
| | | e.printStackTrace();
|
| | | }
|
| | | }
|
| | | |
| | |
|
| | |
|
| | | }
|
| | |
| | | package com.yeshi.fanli.dao.mybatis.money; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | |
| | | public long countCanRecieveUid(@Param("preRecieveTime") Date preRecieveTime, |
| | | @Param("typeList") List<Integer> typeList); |
| | | |
| | | |
| | | /** |
| | | * 统计类型已领取金额 |
| | | * @param uid |
| | | * @param type |
| | | * @return |
| | | */ |
| | | BigDecimal sumRecieveByType(@Param("uid") Long uid,@Param("type") int type); |
| | | } |
New file |
| | |
| | | package com.yeshi.fanli.dao.user;
|
| | |
|
| | | import org.springframework.stereotype.Repository;
|
| | |
|
| | | import com.yeshi.fanli.dao.MongodbBaseDao;
|
| | | import com.yeshi.fanli.entity.bus.user.PreviewInfo;
|
| | |
|
| | | @Repository
|
| | | public class PreviewInfoDao extends MongodbBaseDao<PreviewInfo> {
|
| | |
|
| | | }
|
| | |
| | | import com.yeshi.fanli.dto.user.ThreeSaleFocusDTO;
|
| | | import com.yeshi.fanli.entity.bus.user.TeamFansInfo;
|
| | | import com.yeshi.fanli.util.StringUtil;
|
| | | import com.yeshi.fanli.util.TimeUtil;
|
| | |
|
| | | @Repository
|
| | | public class TeamFansInfoDao extends MongodbBaseDao<TeamFansInfo> {
|
| | |
| | | }
|
| | |
|
| | | private Query createQuery(int type, Long uid, ThreeSaleFocusDTO focusDTO) {
|
| | | Query query = new Query();
|
| | | List<Criteria> list = new ArrayList<Criteria>();
|
| | |
|
| | | if (type == 1) {
|
| | | list.add(Criteria.where("bossId").is(uid));
|
| | | } else {
|
| | |
| | | if (focusDTO.getMaxFansNum() != null)
|
| | | list.add(Criteria.where("fansNum").lte(focusDTO.getMaxFansNum()));
|
| | |
|
| | | if (!StringUtil.isNullOrEmpty(focusDTO.getMinJoinTime()))
|
| | | list.add(Criteria.where("joinTime").gte(focusDTO.getMinJoinTime()));
|
| | |
|
| | | if (!StringUtil.isNullOrEmpty(focusDTO.getMaxJoinTime()))
|
| | | list.add(Criteria.where("joinTime").lte(focusDTO.getMaxJoinTime()));
|
| | |
|
| | | if (!StringUtil.isNullOrEmpty(focusDTO.getMinActiveTime()))
|
| | | list.add(Criteria.where("activeTime").gte(focusDTO.getMinActiveTime()));
|
| | |
|
| | | if (!StringUtil.isNullOrEmpty(focusDTO.getMaxActiveTime()))
|
| | | list.add(Criteria.where("activeTime").lte(focusDTO.getMaxActiveTime()));
|
| | |
|
| | | if (focusDTO.getMinIncome() != null) {
|
| | | int income = focusDTO.getMinIncome().multiply(BigDecimal.valueOf(100)).setScale(2, BigDecimal.ROUND_DOWN).intValue();
|
| | | list.add(Criteria.where("income").lte(income));
|
| | | list.add(Criteria.where("income").gte(income));
|
| | | }
|
| | |
|
| | | if (focusDTO.getMaxIncome() != null) {
|
| | |
| | | list.add(Criteria.where("income").lte(income));
|
| | | }
|
| | |
|
| | | if (!StringUtil.isNullOrEmpty(focusDTO.getMinJoinTime())) {
|
| | | Date date = TimeUtil.parseDotYYYYMMDD(focusDTO.getMinJoinTime());
|
| | | list.add(Criteria.where("joinTime").gte(date));
|
| | | }
|
| | |
|
| | | if (!StringUtil.isNullOrEmpty(focusDTO.getMaxJoinTime())) {
|
| | | Date date = TimeUtil.parseDotCommon(focusDTO.getMaxJoinTime() + " 23:59:59");
|
| | | list.add(Criteria.where("joinTime").lte(date));
|
| | | }
|
| | | |
| | | if (!StringUtil.isNullOrEmpty(focusDTO.getMinActiveTime())) {
|
| | | Date date = TimeUtil.parseDotYYYYMMDD(focusDTO.getMinActiveTime());
|
| | | list.add(Criteria.where("joinTime").gte(date));
|
| | | }
|
| | |
|
| | | if (!StringUtil.isNullOrEmpty(focusDTO.getMaxActiveTime())) {
|
| | | Date date = TimeUtil.parseDotCommon(focusDTO.getMaxActiveTime() + " 23:59:59");
|
| | | list.add(Criteria.where("activeTime").lte(date));
|
| | | }
|
| | |
|
| | | if (!StringUtil.isNullOrEmpty(focusDTO.getKey())) {
|
| | | if (type == 1) {
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | Query query = new Query();
|
| | | if (list.size() > 0) {
|
| | | Criteria[] cas = new Criteria[list.size()];
|
| | | for (int i = 0; i < list.size(); i++)
|
New file |
| | |
| | | package com.yeshi.fanli.entity.bus.user;
|
| | |
|
| | | import java.util.Date;
|
| | |
|
| | | import org.springframework.data.annotation.Id;
|
| | | import org.springframework.data.mongodb.core.index.Indexed;
|
| | | import org.springframework.data.mongodb.core.mapping.Document;
|
| | | import org.springframework.data.mongodb.core.mapping.Field;
|
| | |
|
| | | /**
|
| | | * 预览信息
|
| | | * |
| | | * @author Administrator
|
| | | *
|
| | | */
|
| | | @Document(collection = "previewInfo ")
|
| | | public class PreviewInfo {
|
| | |
|
| | | public enum PreviewEnum {
|
| | | mineInfo("我的页面预览"), |
| | | moneyInfo("资金信息"),
|
| | | moneyArrival("资金到账"),
|
| | | extractRecord("提现记录");
|
| | |
|
| | | private String desc;
|
| | |
|
| | | private PreviewEnum(String desc) {
|
| | | this.desc = desc;
|
| | | }
|
| | |
|
| | | public String getDesc() {
|
| | | return desc;
|
| | | }
|
| | | }
|
| | |
|
| | | @Id
|
| | | private String id;
|
| | | @Field
|
| | | @Indexed
|
| | | private Long uid;
|
| | | @Field
|
| | | private PreviewEnum type; // 类型
|
| | | @Field
|
| | | private String content; // json内容
|
| | | @Field
|
| | | private Date updateTime;
|
| | |
|
| | | public String getId() {
|
| | | return id;
|
| | | }
|
| | |
|
| | | public void setId(String id) {
|
| | | this.id = id;
|
| | | }
|
| | |
|
| | | public Long getUid() {
|
| | | return uid;
|
| | | }
|
| | |
|
| | | public void setUid(Long uid) {
|
| | | this.uid = uid;
|
| | | }
|
| | |
|
| | | public PreviewEnum getType() {
|
| | | return type;
|
| | | }
|
| | |
|
| | | public void setType(PreviewEnum type) {
|
| | | this.type = type;
|
| | | }
|
| | |
|
| | | public String getContent() {
|
| | | return content;
|
| | | }
|
| | |
|
| | | public void setContent(String content) {
|
| | | this.content = content;
|
| | | }
|
| | |
|
| | | public Date getUpdateTime() {
|
| | | return updateTime;
|
| | | }
|
| | |
|
| | | public void setUpdateTime(Date updateTime) {
|
| | | this.updateTime = updateTime;
|
| | | }
|
| | |
|
| | | }
|
New file |
| | |
| | | package com.yeshi.fanli.exception.user;
|
| | |
|
| | | import com.yeshi.fanli.exception.BaseException;
|
| | |
|
| | | public class PreviewInfoException extends BaseException {
|
| | |
|
| | | private static final long serialVersionUID = 1L;
|
| | |
|
| | | public PreviewInfoException(int code, String msg) {
|
| | | super(code, msg);
|
| | | }
|
| | |
|
| | | public PreviewInfoException() {
|
| | | super();
|
| | | }
|
| | | }
|
| | |
| | | </if> |
| | | </select> |
| | | |
| | | <select id="sumRecieveByType" resultType="BigDecimal"> |
| | | SELECT SUM(ti_money) FROM yeshi_ec_team_income |
| | | WHERE ti_uid=#{uid} AND ti_type=#{type} AND ti_state=1 |
| | | </select> |
| | | |
| | | |
| | | </mapper> |
| | |
| | | public long countCanRecieveUid(Date preRecieveTime, List<Integer> typeList) {
|
| | | return teamEincomeRecordMapper.countCanRecieveUid(preRecieveTime, typeList);
|
| | | }
|
| | | |
| | | |
| | | @Override
|
| | | public BigDecimal sumRecieveByType(Long uid, int type) {
|
| | | BigDecimal money = teamEincomeRecordMapper.sumRecieveByType(uid, type);
|
| | | if (money == null) {
|
| | | money = new BigDecimal(0);
|
| | | }
|
| | | return money;
|
| | | }
|
| | | |
| | | |
| | |
|
| | | }
|
New file |
| | |
| | | package com.yeshi.fanli.service.impl.user; |
| | | |
| | | import java.io.File; |
| | | import java.math.BigDecimal; |
| | | import java.util.ArrayList; |
| | | import java.util.Collections; |
| | | import java.util.Comparator; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.UUID; |
| | | |
| | | import javax.annotation.Resource; |
| | | |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | import org.yeshi.utils.FileUtil; |
| | | import org.yeshi.utils.tencentcloud.COSManager; |
| | | |
| | | import com.google.gson.Gson; |
| | | import com.google.gson.reflect.TypeToken; |
| | | import com.yeshi.fanli.dao.user.PreviewInfoDao; |
| | | import com.yeshi.fanli.entity.bus.user.BindingAccount; |
| | | import com.yeshi.fanli.entity.bus.user.Extract; |
| | | import com.yeshi.fanli.entity.bus.user.PreviewInfo; |
| | | import com.yeshi.fanli.entity.bus.user.PreviewInfo.PreviewEnum; |
| | | import com.yeshi.fanli.exception.user.PreviewInfoException; |
| | | import com.yeshi.fanli.service.inter.money.extract.BindingAccountService; |
| | | import com.yeshi.fanli.service.inter.user.PreviewInfoService; |
| | | import com.yeshi.fanli.util.FilePathEnum; |
| | | import com.yeshi.fanli.util.StringUtil; |
| | | import com.yeshi.fanli.util.TimeUtil; |
| | | import com.yeshi.fanli.vo.money.MoneyStatisticVO; |
| | | import com.yeshi.fanli.vo.user.MineInfoVO; |
| | | |
| | | import net.coobird.thumbnailator.Thumbnails; |
| | | |
| | | @Service |
| | | public class PreviewInfoServiceImpl implements PreviewInfoService { |
| | | |
| | | @Resource |
| | | private PreviewInfoDao previewInfoDao; |
| | | |
| | | @Resource |
| | | private BindingAccountService bindingAccountService; |
| | | |
| | | |
| | | |
| | | @Override |
| | | public void save(Long uid, PreviewEnum type, String content) { |
| | | String id = StringUtil.Md5(uid + "#" + type.name()); |
| | | |
| | | PreviewInfo info = new PreviewInfo(); |
| | | info.setId(id); |
| | | info.setUid(uid); |
| | | info.setContent(content); |
| | | info.setType(type); |
| | | info.setUpdateTime(new Date()); |
| | | previewInfoDao.save(info); |
| | | } |
| | | |
| | | @Override |
| | | public PreviewInfo get(Long uid, PreviewEnum previewEnum) { |
| | | String id = StringUtil.Md5(uid + "#" + previewEnum.name()); |
| | | return previewInfoDao.get(id); |
| | | } |
| | | |
| | | @Override |
| | | public void saveMoneyInfo(Long uid, MoneyStatisticVO vo) throws PreviewInfoException { |
| | | if (vo == null) |
| | | throw new PreviewInfoException(1, "请完善页面信息"); |
| | | save(uid, PreviewEnum.moneyInfo, new Gson().toJson(vo)); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public void saveExtractRecord(Long uid, String time, BigDecimal money) throws PreviewInfoException { |
| | | BindingAccount alipay = bindingAccountService.getBindingAccountByUidAndType(uid, BindingAccount.TYPE_ALIPAY); |
| | | if (alipay == null) |
| | | throw new PreviewInfoException(1, "未绑定提现账号"); |
| | | if (StringUtil.isNullOrEmpty(time)) |
| | | throw new PreviewInfoException(1, "提现时间不能为空"); |
| | | if (money.compareTo(BigDecimal.ZERO) <= 0) |
| | | throw new PreviewInfoException(1, "提现金额不能小于0"); |
| | | |
| | | Gson gson = new Gson(); |
| | | List<Extract> list = null; |
| | | |
| | | Extract extract = new Extract(); |
| | | extract.setName(alipay.getName()); |
| | | extract.setAccount(alipay.getAccount()); |
| | | extract.setMoney(money); |
| | | extract.setReceiveTime(TimeUtil.parseDotCommon(time)); |
| | | extract.setId(java.lang.System.currentTimeMillis()); |
| | | |
| | | String id = StringUtil.Md5(uid + "#" + PreviewEnum.extractRecord.name()); |
| | | PreviewInfo previewInfo = previewInfoDao.get(id); |
| | | if (previewInfo == null) { |
| | | list = new ArrayList<Extract>(); |
| | | list.add(extract); |
| | | } else { |
| | | String content = previewInfo.getContent(); |
| | | if (!StringUtil.isNullOrEmpty(content)) { |
| | | list = gson.fromJson(content, new TypeToken<ArrayList<Extract>>() {}.getType()); |
| | | } |
| | | |
| | | if (list == null) { |
| | | list = new ArrayList<>(); |
| | | } |
| | | list.add(extract); |
| | | |
| | | // 与之前数据比对排序 |
| | | if (list.size() > 1) { |
| | | Comparator<Extract> cm = new Comparator<Extract>() { |
| | | @Override |
| | | public int compare(Extract o1, Extract o2) { |
| | | return (int) (o2.getReceiveTime().getTime() - o1.getReceiveTime().getTime()); |
| | | } |
| | | }; |
| | | Collections.sort(list, cm); |
| | | } |
| | | } |
| | | save(uid, PreviewEnum.extractRecord, gson.toJson(list)); |
| | | } |
| | | |
| | | |
| | | |
| | | @Override |
| | | public void deleteExtractRecord(Long uid, long tid) { |
| | | String id = StringUtil.Md5(uid + "#" + PreviewEnum.extractRecord.name()); |
| | | PreviewInfo previewInfo = previewInfoDao.get(id); |
| | | if (previewInfo == null) { |
| | | return; |
| | | } |
| | | |
| | | String content = previewInfo.getContent(); |
| | | if (StringUtil.isNullOrEmpty(content)) { |
| | | return; |
| | | } |
| | | |
| | | Gson gson = new Gson(); |
| | | List<Extract> list = gson.fromJson(content, new TypeToken<ArrayList<Extract>>() {}.getType()); |
| | | if (list == null || list.size() == 0) { |
| | | return; |
| | | } |
| | | |
| | | for (Extract extract: list) { |
| | | if (extract.getId() == tid) { |
| | | list.remove(extract); |
| | | break; |
| | | } |
| | | } |
| | | save(uid, PreviewEnum.extractRecord, gson.toJson(list)); |
| | | } |
| | | |
| | | |
| | | |
| | | @Override |
| | | public void saveMineInfo(MineInfoVO infoVO, MultipartFile file) throws Exception { |
| | | Long uid = infoVO.getUid(); |
| | | if (file != null) { |
| | | // 谷歌压缩图片 |
| | | String targetPath = FileUtil.getCacheDir() + "/preview" + uid + "_" + System.currentTimeMillis()+ ".jpg"; |
| | | Thumbnails.of(file.getInputStream()).size(200, 200).toFile(targetPath); |
| | | // 执行上传 |
| | | String filePath =FilePathEnum.userPreview.getPath() + UUID.randomUUID().toString().replace("-", "") + ".jpg"; |
| | | String fileLink = COSManager.getInstance().uploadFile(new File(targetPath), filePath).getUrl(); |
| | | // 删除本地图片 |
| | | if (new File(targetPath).exists()) { |
| | | new File(targetPath).delete(); |
| | | } |
| | | infoVO.setPortrait(fileLink); |
| | | |
| | | // 删除之前上传图 |
| | | String id = StringUtil.Md5(uid + "#" + PreviewEnum.mineInfo.name()); |
| | | PreviewInfo previewInfo = previewInfoDao.get(id); |
| | | if (previewInfo != null && !StringUtil.isNullOrEmpty(previewInfo.getContent())) { |
| | | MineInfoVO dto = new Gson().fromJson(previewInfo.getContent(), MineInfoVO.class); |
| | | if (dto != null && StringUtil.isNullOrEmpty(dto.getPortrait())); |
| | | COSManager.getInstance().deleteFile(dto.getPortrait()); |
| | | } |
| | | } |
| | | Gson gson = new Gson(); |
| | | save(uid, PreviewEnum.mineInfo, gson.toJson(infoVO)); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public String saveMoneyArrival(Long uid, BigDecimal money, String time,String orderNo) throws PreviewInfoException { |
| | | if (uid == null ) |
| | | throw new PreviewInfoException(1, "请先登录"); |
| | | if (money == null ) |
| | | throw new PreviewInfoException(1, "请输入金额"); |
| | | if(StringUtil.isNullOrEmpty(time)) |
| | | throw new PreviewInfoException(1, "请输入创建时间"); |
| | | if(StringUtil.isNullOrEmpty(time)) |
| | | throw new PreviewInfoException(1, "请输入订单号"); |
| | | String content = ""; // TODO |
| | | // save(uid, PreviewEnum.moneyArrival, gson.toJson(infoVO)); |
| | | return content; |
| | | } |
| | | } |
| | |
| | | */
|
| | | public BigDecimal getEstimateDividents(Date preGetTime, Long uid);
|
| | |
|
| | | /**
|
| | | * 统计已到账金额
|
| | | * @param uid
|
| | | * @param type
|
| | | * @return
|
| | | */
|
| | | public BigDecimal sumRecieveByType(Long uid, int type);
|
| | |
|
| | | }
|
New file |
| | |
| | | package com.yeshi.fanli.service.inter.user;
|
| | |
|
| | | import java.math.BigDecimal;
|
| | |
|
| | | import org.springframework.web.multipart.MultipartFile;
|
| | |
|
| | | import com.yeshi.fanli.entity.bus.user.PreviewInfo;
|
| | | import com.yeshi.fanli.entity.bus.user.PreviewInfo.PreviewEnum;
|
| | | import com.yeshi.fanli.exception.user.PreviewInfoException;
|
| | | import com.yeshi.fanli.vo.money.MoneyStatisticVO;
|
| | | import com.yeshi.fanli.vo.user.MineInfoVO;
|
| | |
|
| | | public interface PreviewInfoService {
|
| | |
|
| | | /**
|
| | | * 保存信息
|
| | | * @param uid
|
| | | * @param type
|
| | | * @param content
|
| | | */
|
| | | public void save(Long uid, PreviewEnum type, String content);
|
| | |
|
| | | /**
|
| | | * 根据用户+类型查询
|
| | | * @param uid
|
| | | * @param type
|
| | | * @return
|
| | | */
|
| | | public PreviewInfo get(Long uid, PreviewEnum previewEnum);
|
| | |
|
| | | /**
|
| | | * 保存提现记录
|
| | | * @param uid
|
| | | * @param time
|
| | | * @param money
|
| | | * @throws PreviewInfoException
|
| | | */
|
| | | public void saveExtractRecord(Long uid, String time, BigDecimal money) throws PreviewInfoException;
|
| | |
|
| | | /**
|
| | | * 删除提现记录
|
| | | * @param uid
|
| | | * @param tid
|
| | | * @throws PreviewInfoException
|
| | | */
|
| | | public void deleteExtractRecord(Long uid, long tid);
|
| | |
|
| | | /**
|
| | | * 保存个人信息
|
| | | * @param infoVO
|
| | | * @param file
|
| | | * @throws PreviewInfoException
|
| | | */
|
| | | public void saveMineInfo(MineInfoVO infoVO, MultipartFile file) throws Exception;
|
| | |
|
| | | /**
|
| | | * 保存到账信息
|
| | | * @param uid
|
| | | * @param money
|
| | | * @param time
|
| | | * @param orderNo
|
| | | * @throws PreviewInfoException
|
| | | */
|
| | | public String saveMoneyArrival(Long uid, BigDecimal money, String time, String orderNo) throws PreviewInfoException;
|
| | |
|
| | | public void saveMoneyInfo(Long uid, MoneyStatisticVO vo) throws PreviewInfoException;
|
| | |
|
| | | |
| | | }
|
| | |
| | | public enum FilePathEnum {
|
| | | // 用户相关
|
| | | userPortrait("/user/img/portrait/", "用户头像"),
|
| | | userPreview("/user/img/preview/", "用户预览头像"),
|
| | | userWXPortrait("/user/img/portrait_wx/", "用户微信头像"),
|
| | | userERcode("/user/img/ercode/", "用户上传微信二维码"),
|
| | | userComplaint("/user/img/user_complaint/", "用户吐槽图片"),
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | public static Date parseDotYYYYMMDD(String st) {
|
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");
|
| | | try {
|
| | | return sdf.parse(st);
|
| | | } catch (Exception e) {
|
| | | e.printStackTrace();
|
| | | return null;
|
| | | }
|
| | | }
|
| | | |
| | | public static Date parseDotCommon(String st) {
|
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");
|
| | | try {
|
| | | return sdf.parse(st);
|
| | | } catch (Exception e) {
|
| | | e.printStackTrace();
|
| | | return null;
|
| | | }
|
| | | }
|
| | | |
| | | public static long convertAllTimeToTemp(String st) {
|
| | | Date date = new Date();
|
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
|
New file |
| | |
| | | package com.yeshi.fanli.vo.user;
|
| | |
|
| | | public class MineInfoVO {
|
| | |
|
| | | private Long uid;
|
| | | |
| | | private String nickName;// 昵称
|
| | |
|
| | | private String portrait;// 头像
|
| | |
|
| | | private String level;// 等级
|
| | |
|
| | | private String balance;// 余额
|
| | |
|
| | | private String selfRebate;// 返利
|
| | |
|
| | | private String shareBonus;// 分享
|
| | |
|
| | | private String teamBonus;// 团队
|
| | |
|
| | | public String getNickName() {
|
| | | return nickName;
|
| | | }
|
| | |
|
| | | public void setNickName(String nickName) {
|
| | | this.nickName = nickName;
|
| | | }
|
| | |
|
| | | public String getPortrait() {
|
| | | return portrait;
|
| | | }
|
| | |
|
| | | public void setPortrait(String portrait) {
|
| | | this.portrait = portrait;
|
| | | }
|
| | |
|
| | | public String getLevel() {
|
| | | return level;
|
| | | }
|
| | |
|
| | | public void setLevel(String level) {
|
| | | this.level = level;
|
| | | }
|
| | |
|
| | | public String getBalance() {
|
| | | return balance;
|
| | | }
|
| | |
|
| | | public void setBalance(String balance) {
|
| | | this.balance = balance;
|
| | | }
|
| | |
|
| | | public String getSelfRebate() {
|
| | | return selfRebate;
|
| | | }
|
| | |
|
| | | public void setSelfRebate(String selfRebate) {
|
| | | this.selfRebate = selfRebate;
|
| | | }
|
| | |
|
| | | public String getShareBonus() {
|
| | | return shareBonus;
|
| | | }
|
| | |
|
| | | public void setShareBonus(String shareBonus) {
|
| | | this.shareBonus = shareBonus;
|
| | | }
|
| | |
|
| | | public String getTeamBonus() {
|
| | | return teamBonus;
|
| | | }
|
| | |
|
| | | public void setTeamBonus(String teamBonus) {
|
| | | this.teamBonus = teamBonus;
|
| | | }
|
| | |
|
| | | public Long getUid() {
|
| | | return uid;
|
| | | }
|
| | |
|
| | | public void setUid(Long uid) {
|
| | | this.uid = uid;
|
| | | }
|
| | |
|
| | | }
|