| | |
| | | package com.yeshi.fanli.controller.client.v1;
|
| | |
|
| | | import java.io.IOException;
|
| | | import java.io.PrintWriter;
|
| | | import java.lang.reflect.Type;
|
| | | import java.math.BigDecimal;
|
| | | import java.math.RoundingMode;
|
| | | 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.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.TypeAdapter;
|
| | | import com.google.gson.stream.JsonReader;
|
| | | import com.google.gson.stream.JsonWriter;
|
| | | import com.yeshi.fanli.entity.accept.AcceptData;
|
| | | import com.yeshi.fanli.entity.bus.user.UserInfo;
|
| | | import com.yeshi.fanli.entity.money.UserMoneyDetail.UserMoneyDetailTypeEnum;
|
| | | 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.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.StringUtil;
|
| | | import com.yeshi.fanli.util.TimeUtil;
|
| | | import com.yeshi.fanli.util.VersionUtil;
|
| | | import com.yeshi.fanli.vo.money.UserMoneyDetailHistoryVO;
|
| | | import com.yeshi.fanli.vo.money.UserMoneyStatisticVO;
|
| | |
|
| | | import net.sf.json.JSONObject;
|
| | |
|
| | | /**
|
| | | * 账户系统
|
| | | * |
| | | * @author Administrator
|
| | | *
|
| | | */
|
| | | @Controller
|
| | | @RequestMapping("api/v1/usermoney")
|
| | | public class UserMoneyController {
|
| | |
|
| | | @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;
|
| | |
|
| | | /**
|
| | | * 新版资金详情(1.4.9)
|
| | | * |
| | | * @param acceptData
|
| | | * @param uid
|
| | | * @param index
|
| | | * List最末的主键ID
|
| | | * @param year
|
| | | * 年份
|
| | | * @param month
|
| | | * 月份
|
| | | * @param type
|
| | | * 1-收入 2-支出 0-全部
|
| | | * |
| | | * @param out
|
| | | */
|
| | | @RequestMapping(value = "getUserMoneyDetailList")
|
| | | public void getUserMoneyDetailList(AcceptData acceptData, Long uid, Long index, Integer year, Integer month,
|
| | | Integer type, PrintWriter out) {
|
| | | if (uid == null || uid == 0) {
|
| | | out.print(JsonUtil.loadFalseResult(1, "用户未登录"));
|
| | | return;
|
| | | }
|
| | |
|
| | | if ((year == null && month != null) || (year != null && month == null)) {
|
| | | out.print(JsonUtil.loadFalseResult(1, "日期不完整"));
|
| | | return;
|
| | | }
|
| | |
|
| | | Date date = null;
|
| | |
|
| | | if (year != null && month != null) {
|
| | | date = new Date(TimeUtil.convertToTimeTemp(year + "-" + month, "yyyy-M"));
|
| | | Calendar ca = Calendar.getInstance();
|
| | | ca.setTime(date);
|
| | | ca.add(Calendar.MONTH, 1);
|
| | | date = new Date(ca.getTimeInMillis() - 1);
|
| | | }
|
| | |
|
| | | List<UserMoneyDetailHistoryVO> list = userMoneyDetailService.listUserMoneyDetailForClient(uid, index, type,
|
| | | date);
|
| | | long count = userMoneyDetailService.countUserMoneyDetailForClient(uid, index, type, date);
|
| | | GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation();
|
| | | gsonBuilder.registerTypeAdapter(UserMoneyDetailTypeEnum.class, new TypeAdapter<UserMoneyDetailTypeEnum>() {
|
| | | @Override
|
| | | public UserMoneyDetailTypeEnum read(JsonReader arg0) throws IOException {
|
| | | return null;
|
| | | }
|
| | |
|
| | | @Override
|
| | | public void write(JsonWriter out, UserMoneyDetailTypeEnum arg1) throws IOException {
|
| | | out.beginObject();
|
| | | out.name("portrait").value(arg1.getPicture());
|
| | | if (!StringUtil.isNullOrEmpty(arg1.getHelpUrl()))
|
| | | out.name("helpUrl").value(arg1.getHelpUrl());
|
| | | out.endObject();
|
| | | }
|
| | | }).registerTypeAdapter(Date.class, new JsonSerializer<Date>() {
|
| | | @Override
|
| | | public JsonElement serialize(Date value, Type theType, JsonSerializationContext context) {
|
| | | if (value == null) {
|
| | | return new JsonPrimitive("");
|
| | | } else {
|
| | | return new JsonPrimitive(TimeUtil.getGernalTime(value.getTime(), "yyyy.MM.dd HH:mm"));
|
| | | }
|
| | | }
|
| | | }).registerTypeAdapter(BigDecimal.class, new JsonSerializer<BigDecimal>() {
|
| | | @Override
|
| | | public JsonElement serialize(BigDecimal value, Type theType, JsonSerializationContext context) {
|
| | | if (value == null) {
|
| | | return new JsonPrimitive("");
|
| | | } else {
|
| | | value = value.setScale(2);
|
| | | return new JsonPrimitive(value.toString());
|
| | | }
|
| | | }
|
| | | });
|
| | |
|
| | | Gson gson = gsonBuilder.create();
|
| | |
|
| | | JSONObject data = new JSONObject();
|
| | | data.put("data", gson.toJson(list));
|
| | | data.put("count", count);
|
| | | out.print(JsonUtil.loadTrueResult(data));
|
| | | }
|
| | |
|
| | | /**
|
| | | * 用户资金统计
|
| | | * |
| | | * @param acceptData
|
| | | * @param uid
|
| | | * @param out
|
| | | */
|
| | | @RequestMapping(value = "getUserMoneyStatistic")
|
| | | public void getUserMoneyStatistic(AcceptData acceptData, Long uid, PrintWriter out) {
|
| | | if (uid == null || uid == 0) {
|
| | | out.print(JsonUtil.loadFalseResult(1, "用户未登录"));
|
| | | return;
|
| | | }
|
| | | UserInfo user = userInfoService.getUserById(uid);
|
| | |
|
| | | BigDecimal balance = user.getMyHongBao();
|
| | |
|
| | | UserMoneyStatisticVO vo = new UserMoneyStatisticVO();
|
| | | vo.setBalanceMoney(balance);
|
| | | Date minDate = null;
|
| | | Date maxDate = null;
|
| | | List<UserMoneyDetailTypeEnum> typeList = new ArrayList<>();
|
| | |
|
| | | // 上月提现
|
| | | 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);
|
| | | long timeStamp = System.currentTimeMillis();
|
| | | Calendar calendar = Calendar.getInstance();
|
| | | calendar.setTimeInMillis(timeStamp);
|
| | | 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());
|
| | |
|
| | | // 本月提现
|
| | | 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);
|
| | | 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);
|
| | | vo.setMonthExtractMoney(
|
| | | userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate, 1).abs());
|
| | |
|
| | | if (!VersionUtil.greaterThan_2_1(acceptData.getPlatform(), acceptData.getVersion())) {
|
| | | // 上月收入
|
| | | typeList.clear();
|
| | | typeList.add(UserMoneyDetailTypeEnum.fanli);
|
| | | typeList.add(UserMoneyDetailTypeEnum.fanliNew);
|
| | | typeList.add(UserMoneyDetailTypeEnum.fanliWeiQuan);
|
| | | typeList.add(UserMoneyDetailTypeEnum.fanliWeiQuanNew);
|
| | | typeList.add(UserMoneyDetailTypeEnum.share);
|
| | | typeList.add(UserMoneyDetailTypeEnum.shareNew);
|
| | | typeList.add(UserMoneyDetailTypeEnum.shareWeiQuan);
|
| | | typeList.add(UserMoneyDetailTypeEnum.invite);
|
| | | typeList.add(UserMoneyDetailTypeEnum.inviteWeiQuan);
|
| | | typeList.add(UserMoneyDetailTypeEnum.inviteAndShare);
|
| | | typeList.add(UserMoneyDetailTypeEnum.teamReward);
|
| | | typeList.add(UserMoneyDetailTypeEnum.weiQuan);
|
| | | typeList.add(UserMoneyDetailTypeEnum.hongbao);
|
| | | typeList.add(UserMoneyDetailTypeEnum.hongbaoDeduct);
|
| | |
|
| | | vo.setLastMonthRecievedMoney(
|
| | | userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate).abs());
|
| | | // 最近三个月收入
|
| | | maxDate = new Date(timeStamp);
|
| | | minDate = new Date(timeStamp - 1000 * 60 * 60 * 24 * 90L);
|
| | |
|
| | | vo.setLatestThreeMonthRecievedMoney(
|
| | | 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.share);
|
| | | typeList.add(UserMoneyDetailTypeEnum.shareNew);
|
| | | typeList.add(UserMoneyDetailTypeEnum.shareWeiQuan);
|
| | | typeList.add(UserMoneyDetailTypeEnum.invite);
|
| | | typeList.add(UserMoneyDetailTypeEnum.inviteWeiQuan);
|
| | | typeList.add(UserMoneyDetailTypeEnum.inviteAndShare);
|
| | | typeList.add(UserMoneyDetailTypeEnum.teamReward);
|
| | | typeList.add(UserMoneyDetailTypeEnum.weiQuan);
|
| | | typeList.add(UserMoneyDetailTypeEnum.hongbao);
|
| | | typeList.add(UserMoneyDetailTypeEnum.hongbaoDeduct);
|
| | | vo.setMonthRecievedMoney(
|
| | | userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate).abs());
|
| | |
|
| | | 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(0);
|
| | | maxDate = new Date(timeStamp);
|
| | | vo.setTotalUnRecievedMoney(hongBaoV2Service.getUnRecievedMoneyWithCreateTime(uid, minDate, maxDate));
|
| | |
|
| | | // 总的到账
|
| | | 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);
|
| | | typeList.add(UserMoneyDetailTypeEnum.invite);
|
| | | typeList.add(UserMoneyDetailTypeEnum.inviteWeiQuan);
|
| | | typeList.add(UserMoneyDetailTypeEnum.inviteAndShare);
|
| | | typeList.add(UserMoneyDetailTypeEnum.teamReward);
|
| | | typeList.add(UserMoneyDetailTypeEnum.weiQuan);
|
| | | typeList.add(UserMoneyDetailTypeEnum.hongbao);
|
| | | typeList.add(UserMoneyDetailTypeEnum.hongbaoDeduct);
|
| | | typeList.add(UserMoneyDetailTypeEnum.subsidy);
|
| | | typeList.add(UserMoneyDetailTypeEnum.teamReward);
|
| | | vo.setTotalRecievedMoney(
|
| | | userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate).abs());
|
| | | }
|
| | |
|
| | | minDate = new Date(0L);
|
| | | maxDate = new Date(timeStamp);
|
| | |
|
| | | if (VersionUtil.greaterThan_2_1(acceptData.getPlatform(), acceptData.getVersion())) {
|
| | | // 总的自购返利
|
| | | 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.extract);
|
| | | typeList.add(UserMoneyDetailTypeEnum.extractNew);
|
| | | typeList.add(UserMoneyDetailTypeEnum.extractVerify);
|
| | | typeList.add(UserMoneyDetailTypeEnum.extractVerifyNew);
|
| | | typeList.add(UserMoneyDetailTypeEnum.extractAutoWX);
|
| | | typeList.add(UserMoneyDetailTypeEnum.extractReject);
|
| | | vo.setTotalExtractMoney(
|
| | | userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate, 1).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);
|
| | | if (VersionUtil.greaterThan_2_1(acceptData.getPlatform(), acceptData.getVersion())) {
|
| | | typeList.add(UserMoneyDetailTypeEnum.subsidy);
|
| | | typeList.add(UserMoneyDetailTypeEnum.teamReward);
|
| | | }
|
| | | |
| | | vo.setTotalInviteMoney(
|
| | | userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate).abs());
|
| | |
|
| | | 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);
|
| | | return new JsonPrimitive(value.toString());
|
| | | }
|
| | | }
|
| | | });
|
| | |
|
| | | // 获取提现中的信息
|
| | | BigDecimal extractingMoney = extractService.sumVerifyingMoney(uid);
|
| | | if (extractingMoney.compareTo(new BigDecimal(0)) > 0)
|
| | | vo.setExtractingMoneyInfo("提现中:¥" + extractingMoney.setScale(2, RoundingMode.HALF_UP));
|
| | |
|
| | | if (VersionUtil.greaterThan_2_0(acceptData.getPlatform(), acceptData.getVersion())
|
| | | && !VersionUtil.greaterThan_2_1(acceptData.getPlatform(), acceptData.getVersion())) {
|
| | | // 获取是否绑定了微信
|
| | | if (!StringUtil.isNullOrEmpty(user.getWxUnionId())) {
|
| | | vo.setBindingWX(true);
|
| | | } else
|
| | | vo.setBindingWX(false);
|
| | | vo.setAutoExtract(false);
|
| | | vo.setAutoExtractHelpUrl(configService.getValue(ConfigKeyEnum.autoExtractHelpUrl.getKey(),acceptData.getSystem()));
|
| | | vo.setOpenAutoExtractMsg("自动提现必须要微信授权,当账户中的余额≥2元时,系统在保障你资金安全的情况下,以微信红包的形式完成提现");
|
| | | vo.setCloseAutoExtractMsg("关闭自动提现后,60天以内将不自动提现,60天后系统将会自动开启,敬请知晓");
|
| | | }
|
| | |
|
| | | out.print(JsonUtil.loadTrueResult(builder.create().toJson(vo)));
|
| | | }
|
| | |
|
| | | /**
|
| | | * 自动提现
|
| | | * |
| | | * @param acceptData
|
| | | * @param type
|
| | | * @param out
|
| | | */
|
| | | @RequestMapping("autoExtract")
|
| | | public void autoExtract(AcceptData acceptData, Long uid, Integer type, PrintWriter out) {
|
| | | out.print(JsonUtil.loadFalseResult("该功能已下架"));
|
| | | }
|
| | |
|
| | | }
|
| | | package com.yeshi.fanli.controller.client.v1; |
| | | |
| | | import java.io.IOException; |
| | | import java.io.PrintWriter; |
| | | import java.lang.reflect.Type; |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | 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.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.TypeAdapter; |
| | | import com.google.gson.stream.JsonReader; |
| | | import com.google.gson.stream.JsonWriter; |
| | | import com.yeshi.fanli.entity.accept.AcceptData; |
| | | import com.yeshi.fanli.entity.bus.user.UserInfo; |
| | | import com.yeshi.fanli.entity.money.UserMoneyDetail.UserMoneyDetailTypeEnum; |
| | | 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.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.StringUtil; |
| | | import org.yeshi.utils.TimeUtil; |
| | | import com.yeshi.fanli.util.VersionUtil; |
| | | import com.yeshi.fanli.vo.money.UserMoneyDetailHistoryVO; |
| | | import com.yeshi.fanli.vo.money.UserMoneyStatisticVO; |
| | | |
| | | import net.sf.json.JSONObject; |
| | | |
| | | /** |
| | | * 账户系统 |
| | | * |
| | | * @author Administrator |
| | | * |
| | | */ |
| | | @Controller |
| | | @RequestMapping("api/v1/usermoney") |
| | | public class UserMoneyController { |
| | | |
| | | @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; |
| | | |
| | | /** |
| | | * 新版资金详情(1.4.9) |
| | | * |
| | | * @param acceptData |
| | | * @param uid |
| | | * @param index |
| | | * List最末的主键ID |
| | | * @param year |
| | | * 年份 |
| | | * @param month |
| | | * 月份 |
| | | * @param type |
| | | * 1-收入 2-支出 0-全部 |
| | | * |
| | | * @param out |
| | | */ |
| | | @RequestMapping(value = "getUserMoneyDetailList") |
| | | public void getUserMoneyDetailList(AcceptData acceptData, Long uid, Long index, Integer year, Integer month, |
| | | Integer type, PrintWriter out) { |
| | | if (uid == null || uid == 0) { |
| | | out.print(JsonUtil.loadFalseResult(1, "用户未登录")); |
| | | return; |
| | | } |
| | | |
| | | if ((year == null && month != null) || (year != null && month == null)) { |
| | | out.print(JsonUtil.loadFalseResult(1, "日期不完整")); |
| | | return; |
| | | } |
| | | |
| | | Date date = null; |
| | | |
| | | if (year != null && month != null) { |
| | | date = new Date(TimeUtil.convertToTimeTemp(year + "-" + month, "yyyy-M")); |
| | | Calendar ca = Calendar.getInstance(); |
| | | ca.setTime(date); |
| | | ca.add(Calendar.MONTH, 1); |
| | | date = new Date(ca.getTimeInMillis() - 1); |
| | | } |
| | | |
| | | List<UserMoneyDetailHistoryVO> list = userMoneyDetailService.listUserMoneyDetailForClient(uid, index, type, |
| | | date); |
| | | long count = userMoneyDetailService.countUserMoneyDetailForClient(uid, index, type, date); |
| | | GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation(); |
| | | gsonBuilder.registerTypeAdapter(UserMoneyDetailTypeEnum.class, new TypeAdapter<UserMoneyDetailTypeEnum>() { |
| | | @Override |
| | | public UserMoneyDetailTypeEnum read(JsonReader arg0) throws IOException { |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | | public void write(JsonWriter out, UserMoneyDetailTypeEnum arg1) throws IOException { |
| | | out.beginObject(); |
| | | out.name("portrait").value(arg1.getPicture()); |
| | | if (!StringUtil.isNullOrEmpty(arg1.getHelpUrl())) |
| | | out.name("helpUrl").value(arg1.getHelpUrl()); |
| | | out.endObject(); |
| | | } |
| | | }).registerTypeAdapter(Date.class, new JsonSerializer<Date>() { |
| | | @Override |
| | | public JsonElement serialize(Date value, Type theType, JsonSerializationContext context) { |
| | | if (value == null) { |
| | | return new JsonPrimitive(""); |
| | | } else { |
| | | return new JsonPrimitive(TimeUtil.getGernalTime(value.getTime(), "yyyy.MM.dd HH:mm")); |
| | | } |
| | | } |
| | | }).registerTypeAdapter(BigDecimal.class, new JsonSerializer<BigDecimal>() { |
| | | @Override |
| | | public JsonElement serialize(BigDecimal value, Type theType, JsonSerializationContext context) { |
| | | if (value == null) { |
| | | return new JsonPrimitive(""); |
| | | } else { |
| | | value = value.setScale(2); |
| | | return new JsonPrimitive(value.toString()); |
| | | } |
| | | } |
| | | }); |
| | | |
| | | Gson gson = gsonBuilder.create(); |
| | | |
| | | JSONObject data = new JSONObject(); |
| | | data.put("data", gson.toJson(list)); |
| | | data.put("count", count); |
| | | out.print(JsonUtil.loadTrueResult(data)); |
| | | } |
| | | |
| | | /** |
| | | * 用户资金统计 |
| | | * |
| | | * @param acceptData |
| | | * @param uid |
| | | * @param out |
| | | */ |
| | | @RequestMapping(value = "getUserMoneyStatistic") |
| | | public void getUserMoneyStatistic(AcceptData acceptData, Long uid, PrintWriter out) { |
| | | if (uid == null || uid == 0) { |
| | | out.print(JsonUtil.loadFalseResult(1, "用户未登录")); |
| | | return; |
| | | } |
| | | UserInfo user = userInfoService.getUserById(uid); |
| | | |
| | | BigDecimal balance = user.getMyHongBao(); |
| | | |
| | | UserMoneyStatisticVO vo = new UserMoneyStatisticVO(); |
| | | vo.setBalanceMoney(balance); |
| | | Date minDate = null; |
| | | Date maxDate = null; |
| | | List<UserMoneyDetailTypeEnum> typeList = new ArrayList<>(); |
| | | |
| | | // 上月提现 |
| | | 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); |
| | | long timeStamp = System.currentTimeMillis(); |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.setTimeInMillis(timeStamp); |
| | | 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()); |
| | | |
| | | // 本月提现 |
| | | 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); |
| | | 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); |
| | | vo.setMonthExtractMoney( |
| | | userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate, 1).abs()); |
| | | |
| | | if (!VersionUtil.greaterThan_2_1(acceptData.getPlatform(), acceptData.getVersion())) { |
| | | // 上月收入 |
| | | typeList.clear(); |
| | | typeList.add(UserMoneyDetailTypeEnum.fanli); |
| | | typeList.add(UserMoneyDetailTypeEnum.fanliNew); |
| | | typeList.add(UserMoneyDetailTypeEnum.fanliWeiQuan); |
| | | typeList.add(UserMoneyDetailTypeEnum.fanliWeiQuanNew); |
| | | typeList.add(UserMoneyDetailTypeEnum.share); |
| | | typeList.add(UserMoneyDetailTypeEnum.shareNew); |
| | | typeList.add(UserMoneyDetailTypeEnum.shareWeiQuan); |
| | | typeList.add(UserMoneyDetailTypeEnum.invite); |
| | | typeList.add(UserMoneyDetailTypeEnum.inviteWeiQuan); |
| | | typeList.add(UserMoneyDetailTypeEnum.inviteAndShare); |
| | | typeList.add(UserMoneyDetailTypeEnum.teamReward); |
| | | typeList.add(UserMoneyDetailTypeEnum.weiQuan); |
| | | typeList.add(UserMoneyDetailTypeEnum.hongbao); |
| | | typeList.add(UserMoneyDetailTypeEnum.hongbaoDeduct); |
| | | |
| | | vo.setLastMonthRecievedMoney( |
| | | userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate).abs()); |
| | | // 最近三个月收入 |
| | | maxDate = new Date(timeStamp); |
| | | minDate = new Date(timeStamp - 1000 * 60 * 60 * 24 * 90L); |
| | | |
| | | vo.setLatestThreeMonthRecievedMoney( |
| | | 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.share); |
| | | typeList.add(UserMoneyDetailTypeEnum.shareNew); |
| | | typeList.add(UserMoneyDetailTypeEnum.shareWeiQuan); |
| | | typeList.add(UserMoneyDetailTypeEnum.invite); |
| | | typeList.add(UserMoneyDetailTypeEnum.inviteWeiQuan); |
| | | typeList.add(UserMoneyDetailTypeEnum.inviteAndShare); |
| | | typeList.add(UserMoneyDetailTypeEnum.teamReward); |
| | | typeList.add(UserMoneyDetailTypeEnum.weiQuan); |
| | | typeList.add(UserMoneyDetailTypeEnum.hongbao); |
| | | typeList.add(UserMoneyDetailTypeEnum.hongbaoDeduct); |
| | | vo.setMonthRecievedMoney( |
| | | userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate).abs()); |
| | | |
| | | 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(0); |
| | | maxDate = new Date(timeStamp); |
| | | vo.setTotalUnRecievedMoney(hongBaoV2Service.getUnRecievedMoneyWithCreateTime(uid, minDate, maxDate)); |
| | | |
| | | // 总的到账 |
| | | 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); |
| | | typeList.add(UserMoneyDetailTypeEnum.invite); |
| | | typeList.add(UserMoneyDetailTypeEnum.inviteWeiQuan); |
| | | typeList.add(UserMoneyDetailTypeEnum.inviteAndShare); |
| | | typeList.add(UserMoneyDetailTypeEnum.teamReward); |
| | | typeList.add(UserMoneyDetailTypeEnum.weiQuan); |
| | | typeList.add(UserMoneyDetailTypeEnum.hongbao); |
| | | typeList.add(UserMoneyDetailTypeEnum.hongbaoDeduct); |
| | | typeList.add(UserMoneyDetailTypeEnum.subsidy); |
| | | typeList.add(UserMoneyDetailTypeEnum.teamReward); |
| | | vo.setTotalRecievedMoney( |
| | | userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate).abs()); |
| | | } |
| | | |
| | | minDate = new Date(0L); |
| | | maxDate = new Date(timeStamp); |
| | | |
| | | if (VersionUtil.greaterThan_2_1(acceptData.getPlatform(), acceptData.getVersion())) { |
| | | // 总的自购返利 |
| | | 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.extract); |
| | | typeList.add(UserMoneyDetailTypeEnum.extractNew); |
| | | typeList.add(UserMoneyDetailTypeEnum.extractVerify); |
| | | typeList.add(UserMoneyDetailTypeEnum.extractVerifyNew); |
| | | typeList.add(UserMoneyDetailTypeEnum.extractAutoWX); |
| | | typeList.add(UserMoneyDetailTypeEnum.extractReject); |
| | | vo.setTotalExtractMoney( |
| | | userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate, 1).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); |
| | | if (VersionUtil.greaterThan_2_1(acceptData.getPlatform(), acceptData.getVersion())) { |
| | | typeList.add(UserMoneyDetailTypeEnum.subsidy); |
| | | typeList.add(UserMoneyDetailTypeEnum.teamReward); |
| | | } |
| | | |
| | | vo.setTotalInviteMoney( |
| | | userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate).abs()); |
| | | |
| | | 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); |
| | | return new JsonPrimitive(value.toString()); |
| | | } |
| | | } |
| | | }); |
| | | |
| | | // 获取提现中的信息 |
| | | BigDecimal extractingMoney = extractService.sumVerifyingMoney(uid); |
| | | if (extractingMoney.compareTo(new BigDecimal(0)) > 0) |
| | | vo.setExtractingMoneyInfo("提现中:¥" + extractingMoney.setScale(2, RoundingMode.HALF_UP)); |
| | | |
| | | if (VersionUtil.greaterThan_2_0(acceptData.getPlatform(), acceptData.getVersion()) |
| | | && !VersionUtil.greaterThan_2_1(acceptData.getPlatform(), acceptData.getVersion())) { |
| | | // 获取是否绑定了微信 |
| | | if (!StringUtil.isNullOrEmpty(user.getWxUnionId())) { |
| | | vo.setBindingWX(true); |
| | | } else |
| | | vo.setBindingWX(false); |
| | | vo.setAutoExtract(false); |
| | | vo.setAutoExtractHelpUrl(configService.getValue(ConfigKeyEnum.autoExtractHelpUrl.getKey(),acceptData.getSystem())); |
| | | vo.setOpenAutoExtractMsg("自动提现必须要微信授权,当账户中的余额≥2元时,系统在保障你资金安全的情况下,以微信红包的形式完成提现"); |
| | | vo.setCloseAutoExtractMsg("关闭自动提现后,60天以内将不自动提现,60天后系统将会自动开启,敬请知晓"); |
| | | } |
| | | |
| | | out.print(JsonUtil.loadTrueResult(builder.create().toJson(vo))); |
| | | } |
| | | |
| | | /** |
| | | * 自动提现 |
| | | * |
| | | * @param acceptData |
| | | * @param type |
| | | * @param out |
| | | */ |
| | | @RequestMapping("autoExtract") |
| | | public void autoExtract(AcceptData acceptData, Long uid, Integer type, PrintWriter out) { |
| | | out.print(JsonUtil.loadFalseResult("该功能已下架")); |
| | | } |
| | | |
| | | } |