package com.ibeetl.admin.console.service; import com.google.gson.Gson; import com.ibeetl.admin.console.dao.FundManagementApiDao; import com.ibeetl.admin.console.dao.MoneyConsoleDao; import com.ibeetl.admin.console.dao.OperateManageDao; import com.ibeetl.admin.console.dao.SettingConsoleDao; import com.ibeetl.admin.console.model.*; import com.ibeetl.admin.console.util.DateUtil; import com.ibeetl.admin.console.util.DoubleUtil; import com.ibeetl.admin.core.entity.CoreSetMoney; import com.ibeetl.admin.core.entity.CoreUser; import com.ibeetl.admin.core.entity.XzxCityPartner; import com.ibeetl.admin.core.service.CoreBaseService; import com.ibeetl.admin.core.service.CorePlatformService; import com.ibeetl.admin.core.web.JsonResult; import org.apache.commons.codec.binary.Base64; import org.apache.commons.lang3.StringUtils; import org.beetl.sql.core.engine.PageQuery; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.RequestBody; import java.io.UnsupportedEncodingException; import java.math.BigDecimal; import java.math.RoundingMode; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; @Service @Transactional public class FundManagementApiService extends CoreBaseService { Logger log = LoggerFactory.getLogger(this.getClass()); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); static SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd"); @Autowired FundManagementApiDao dao; @Autowired RedisService redisService; @Autowired CuserConsoleService service; @Autowired MoneyConsoleDao moneyConsoleDao; @Autowired XzxCityPartnerService cityPartnerService; @Autowired CorePlatformService platformService; final Base64 base64 = new Base64(); /** * 查询提现列表 * @param moneyModel * @return */ public JsonResult> queryFundManagementList(MoneyModel moneyModel){ List partnerIds = cityPartnerService.queryPartnerByCurrent(); moneyModel.setPartnerIds(partnerIds); Map map = new HashMap<>(); int p = moneyModel.getPage(); p = (p - 1) * moneyModel.getLimit(); moneyModel.setPage(p); if(!StringUtils.isEmpty(moneyModel.getNickName())){ moneyModel.setNickName(new String(Base64.encodeBase64(moneyModel.getNickName().getBytes()))); } List list = dao.queryMoneyList(moneyModel); List payOrderIds = new ArrayList<>(); for (MoneyModel model:list) { payOrderIds.add(model.getPayOrderId()); } CoreUser currentUser = platformService.getCurrentUser(); XzxCityPartner pa = cityPartnerService.queryById(currentUser.getId()); String todaySuccess ="0"; String today="0"; if(moneyModel.getPayType()!="9"){ MoneyModel m1 = new MoneyModel(); m1.setStartTime(sdf2.format(new Date())+" 00:00:00"); m1.setEndTime(sdf2.format(new Date())+" 23:59:59"); m1.setStatus("2"); if(payOrderIds.size()>0){ m1.setPayOrderIds(payOrderIds); todaySuccess = dao.queryMoneyTodayList(m1); } if(null!=todaySuccess&&!"".equals(todaySuccess)){ map.put("todaySuccess",DoubleUtil.roundTwo(todaySuccess)); }else{ map.put("todaySuccess",0); } MoneyModel m2 = new MoneyModel(); m2.setStartTime(sdf2.format(new Date())+" 00:00:00"); m2.setEndTime(sdf2.format(new Date())+" 23:59:59"); if(payOrderIds.size()>0){ m2.setPayOrderIds(payOrderIds); today = dao.queryMoneyTodayList(m2); } if(null!=today&&!"".equals(today)){ map.put("today",DoubleUtil.roundTwo(today)); }else{ map.put("today",0); } } //APPROVAL_TYPE String approvalType = dao.queryApprovalType(); for (MoneyModel model:list) { model.setApprovalType(approvalType); String userId = model.getCreateUserId(); //查询当前额度 UserAccountModel model1 = dao.getAccountByUserId(userId); if(null!=model1){ if(model.getPayType().equals("9")){ if(null!=model.getOrderId()&&!"".equals(model.getOrderId())){ AccountLogModel accountLogModel = dao.getAccountLogByOrderId(model.getPayOrderId()); model.setOverdraftLimit(accountLogModel.getOldLimit()); }else{ model.setOverdraftLimit(model1.getOverdraftLimit()); } model.setFixedLimit(model1.getFixedLimit()); }else{ model.setFixedLimit(model1.getFixedLimit()); model.setOverdraftLimit(model1.getOverdraftLimit()); } }else{ model.setFixedLimit("0"); model.setOverdraftLimit("0"); } //Map accountlog = dao.queryOldLimitMap(model1.getAccountId()); try { String nickName = ""; if(model.getUserType().equals("1")){ if(model.getNickName()!=null){ nickName =new String(base64.decode(model.getNickName()), "UTF-8"); } }else{ nickName = model.getNickName(); } model.setNickName(nickName); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } if(model.getPayType().equals("7")){ UserModel userModel = service.queryUserById(userId); if (userModel == null) { userModel = service.queryUserOtherInfoById(userId); } if(userModel!=null){ model.setName(userModel.getName()); model.setMobilePhone(userModel.getMobilePhone()); }else{ model.setName("--"); model.setMobilePhone("--"); } }else if(model.getPayType().equals("9")){ //查询回收员名称和手机号 String userType = ""; UserModel userModel = service.queryUserById(userId); if (userModel == null) { userModel = service.queryUserOtherInfoById(userId); } if(!"1".equals(userType)){ String roleName = moneyConsoleDao.queryPayInfoUserRole(userType); model.setRoleName(roleName); }else{ model.setRoleName("普通用户"); } if(null!=userModel){ model.setName(userModel.getName()); model.setMobilePhone(userModel.getMobilePhone()); }else{ model.setName("--"); model.setMobilePhone("--"); } } } int count = dao.queryMoneyListCount(moneyModel); map.put("data", list); map.put("count", count); map.put("code", 0); return JsonResult.success(map); } public JsonResult> queryPayInfoDetailApi(MoneyModel moneyModel){ Map map = new HashMap<>(); if(moneyModel.getUserType().equals("1")){ map = dao.queryPayInfoDetail(moneyModel.getPayOrderId()); }else{ map = dao.queryPayInfoDetailHS(moneyModel.getPayOrderId()); } String userId = map.get("createUserId").toString(); UserModel userModel = new UserModel(); PayRequestInfoModel model = new PayRequestInfoModel(); //提现审核详情需要查询用户订单列表(只能手机号关联) if(moneyModel.getUserType().equals("1")){ userModel = service.queryUserById(userId); }else{ userModel = service.queryUserOtherById(userId); model.setReceiverPhone(userModel.getMobilePhone()); } String phone = userModel.getMobilePhone(); if(null!=model.getReceiverPhone()&&!"".equals(model.getReceiverPhone())){ model.setPhone(""); }else{ model.setPhone(phone); } int p = moneyModel.getPage(); p = (p - 1) * moneyModel.getLimit(); model.setPage(p); model.setLimit(moneyModel.getLimit()); List orderList = dao.queryUserOrderList(model); for (PayRequestInfoModel reqModel:orderList) { reqModel.setWeight(DoubleUtil.roundThree(reqModel.getWeight())); reqModel.setMoney(DoubleUtil.roundTwo(reqModel.getMoney())); } map.put("data",orderList); map.put("count",dao.queryUserOrderCount(model)); map.put("code",0); List> totalMap = dao.queryUserOrderMoneyAndWeight(model); BigDecimal totalmoney = new BigDecimal("0"); BigDecimal totalweight = new BigDecimal("0"); for (Map mw:totalMap) { totalmoney = new BigDecimal(mw.get("money").toString()).add(totalmoney); totalweight = new BigDecimal(mw.get("weight").toString()).add(totalweight); } map.put("totalMoney", DoubleUtil.roundTwo(totalmoney.toString())); map.put("totalWeight",DoubleUtil.roundThree(totalweight.toString())); if(!"1".equals(map.get("usertype"))){ String roleName = dao.queryPayInfoUserRole(map.get("usertype").toString()); map.put("roleName",roleName); }else{ map.put("roleName","普通用户"); } if(map.get("status").equals("2")){ map.put("statusName","已审核"); }else if(map.get("status").equals("3")){ map.put("statusName","审核未通过"); }else{ map.put("statusName","待审核"); } //订单号,时间,重量,金额 return JsonResult.success(map); } /** * 查询充值记录 * @param moneyModel */ public Map queryRechangeApiList(MoneyModel moneyModel){ List partnerIds = cityPartnerService.queryPartnerByCurrent(); moneyModel.setPartnerIds(partnerIds); int p = moneyModel.getPage(); p = (p - 1) * moneyModel.getLimit(); moneyModel.setPage(p); if(!StringUtils.isEmpty(moneyModel.getNickName())){ moneyModel.setPartnerName(moneyModel.getNickName()); moneyModel.setMobilePhone(moneyModel.getNickName()); moneyModel.setNickName(new String(Base64.encodeBase64(moneyModel.getNickName().getBytes()))); } moneyModel.setPayType("1"); Map m = new HashMap<>(); //queryRechangeMoney String startTime =sdf2.format(new Date())+" 00:00:00"; String endTime =sdf2.format(new Date())+" 23:59:59"; List statusList = new ArrayList<>(); List statusList1 = new ArrayList<>(); statusList.add("1"); statusList.add("2"); statusList.add("3"); statusList.add("4"); statusList.add("5"); //statusList.add("") String today = dao.queryRechangeMoney(statusList,"1",startTime,endTime,partnerIds); statusList1.add("2"); statusList1.add("3"); String todaySuccess = dao.queryRechangeMoney(statusList1,"1",startTime,endTime,partnerIds);; if( today==null || today.equals("")){ today="0"; } if( todaySuccess==null || todaySuccess.equals("")){ todaySuccess="0"; } //String todayT =new BigDecimal(today).add(new BigDecimal(todaySuccess)).toString(); m.put("today",DoubleUtil.roundTwo(today)); m.put("todaySuccess",DoubleUtil.roundTwo(todaySuccess)); List list1 = dao.queryRechangeApiList(moneyModel); for (MoneyModel model:list1) { String nickName = ""; model.setMoney(DoubleUtil.roundTwo(model.getMoney())); if(null!=model.getPartnerName()&&!"".equals(model.getPartnerName())){ String payOrderId=model.getPayOrderId(); nickName = model.getPartnerName(); model.setMobilePhone(model.getPartnerPhone()); if(model.getPartnerType().equals("1")){ model.setRoleName("城市合伙人"); }else{ model.setRoleName("打包站"); } RemittanceModel remittanceModel = dao.queryRemittanceInfo(payOrderId); model.setRemittanceModel(remittanceModel); if(null==model.getFee()){ model.setFee("0"); } BigDecimal fee = new BigDecimal(model.getFee()); model.setFee(DoubleUtil.roundTwo(fee.toString())); }else{ try { if(model.getNickName()!=null){ nickName = new String(base64.decode(model.getNickName()), "UTF-8"); } if(null==model.getFee()){ model.setFee("0"); } BigDecimal fee = new BigDecimal(model.getFee()); BigDecimal tMoney = new BigDecimal(model.getMoney()); model.setMoney(DoubleUtil.roundTwo(tMoney.toString())); model.setFee(DoubleUtil.roundTwo(fee.toString())); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } model.setNickName(nickName); } m.put("data", list1); m.put("count", dao.queryRechangeListApiCount(moneyModel)); m.put("code", 0); return m; } public Map queryRechangeApiDetail(PayInfoModel model){ PayInfoModel result = dao.queryRechangeApiDetail(model); Map map = new HashMap<>(); if(null!=result){ map.put("data",result); map.put("code",0); map.put("msg","查询成功"); }else{ map.put("code",-1); map.put("msg","查询失败"); } return map; } public Map queryStorageMoneyDetailApi(PayStorageModel model) { int p = model.getPage(); p = (p - 1) * model.getLimit(); model.setPage(p); //查询订单列表 String orderIds = dao.queryUserOrderByStorageId(model.getStorageId()); String[] orderIdList = orderIds.split(","); List orderList = new ArrayList<>(); for (String orderId:orderIdList) { orderList.add(orderId); } List list = dao.queryStorageMoneyDetailApi(orderList,model.getLimit(),p); Map remap = new HashMap<>(); List> totalMap = dao.queryMoneyAndWeightByOrderIds(orderList); BigDecimal totalmoney = new BigDecimal("0"); //BigDecimal totalweight = new BigDecimal("0"); for (Map mw:totalMap) { totalmoney = new BigDecimal(mw.get("money").toString()).add(totalmoney); //totalweight = new BigDecimal(mw.get("weight").toString()).add(totalweight); } remap.put("totalmoney",totalmoney); remap.put("code",0); remap.put("data",list); remap.put("count",orderList.size()); return remap; } public Map quotaDetail(StorageUserModel model) { int p = model.getPage(); p = (p - 1) * model.getLimit(); model.setPage(p); List list = dao.quotaDetail(model); Map map = new HashMap<>(); map.put("data",list); map.put("code",0); map.put("count",dao.quotaDetailCount(model)); return map; } public Map queryStorageMoneyApi(PayStorageModel model){ List partnerIds = cityPartnerService.queryPartnerByCurrent(); int p = model.getPage(); p = (p - 1) * model.getLimit(); model.setPage(p); model.setPartnerIds(partnerIds); List modelList = dao.queryStorageMoneyApi(model); Map remap = new HashMap<>(); //今日支出 日均支出 总支出 PayStorageModel todayModel = new PayStorageModel(); todayModel.setStartTime(sdf2.format(new Date())+" 00:00:00"); todayModel.setEndTime(sdf2.format(new Date())+" 23:59:59"); todayModel.setPartnerIds(partnerIds); String today = dao.queryStorageMoneyToday(todayModel); PayStorageModel todayModel1 = new PayStorageModel(); todayModel1.setPartnerIds(partnerIds); String totalPay = dao.queryStorageMoneyToday(todayModel1); //计算日均支出 String endTimeStr = dao.endStorageTime(); int num = 0; BigDecimal avel = new BigDecimal("0"); try { if(null!=endTimeStr&&!"".equals(endTimeStr)){ num = DateUtil.daysBetween(endTimeStr,sdf2.format(new Date())); }else{ num = 0 ; } if(null!=totalPay){ if(num!=0){ avel = new BigDecimal(totalPay).divide(new BigDecimal(num), 2, RoundingMode.HALF_UP); }else{ avel = new BigDecimal(totalPay).divide(new BigDecimal("1"), 2, RoundingMode.HALF_UP); } }else{ totalPay = "0"; } } catch (ParseException e) { e.printStackTrace(); } if(today==null){ today="0"; } remap.put("todayPay",today); remap.put("totalPay",totalPay); remap.put("averagePay",avel); if(null!=modelList&&modelList.size()>0){ for (PayStorageModel resModel:modelList) { if(!StringUtils.isEmpty(resModel.getStorageUserName())){ try { if(DateUtil.isBase64(resModel.getStorageUserName())){ resModel.setStorageUserName(new String(base64.decode(resModel.getStorageUserName()), "UTF-8")); }else{ resModel.setStorageUserName(resModel.getStorageUserName()); } } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } } remap.put("code",0); remap.put("data",modelList); remap.put("count",dao.queryStorageMoneyApiCount(model)); remap.put("msg","返回成功"); }else{ remap.put("code",-1); remap.put("msg","没有记录"); } return remap; } }