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<CoreSetMoney> {
|
|
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<Map<String, Object>> queryFundManagementList(MoneyModel moneyModel){
|
|
List<String> partnerIds = cityPartnerService.queryPartnerByCurrent();
|
moneyModel.setPartnerIds(partnerIds);
|
Map<String, Object> 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<MoneyModel> list = dao.queryMoneyList(moneyModel);
|
List<String> 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<String,Object> 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<Map<String,Object>> queryPayInfoDetailApi(MoneyModel moneyModel){
|
Map<String,Object> 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<PayRequestInfoModel> 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<Map<String,Object>> totalMap = dao.queryUserOrderMoneyAndWeight(model);
|
BigDecimal totalmoney = new BigDecimal("0");
|
BigDecimal totalweight = new BigDecimal("0");
|
for (Map<String,Object> 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<String, Object> queryRechangeApiList(MoneyModel moneyModel){
|
List<String> 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<String, Object> m = new HashMap<>();
|
//queryRechangeMoney
|
String startTime =sdf2.format(new Date())+" 00:00:00";
|
String endTime =sdf2.format(new Date())+" 23:59:59";
|
List<String> statusList = new ArrayList<>();
|
List<String> 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<MoneyModel> 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<String, Object> queryRechangeApiDetail(PayInfoModel model){
|
PayInfoModel result = dao.queryRechangeApiDetail(model);
|
Map<String, Object> 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<String,Object> 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<String> orderList = new ArrayList<>();
|
for (String orderId:orderIdList) {
|
orderList.add(orderId);
|
}
|
List<PayRequestInfoModel> list = dao.queryStorageMoneyDetailApi(orderList,model.getLimit(),p);
|
Map<String,Object> remap = new HashMap<>();
|
|
List<Map<String,Object>> totalMap = dao.queryMoneyAndWeightByOrderIds(orderList);
|
BigDecimal totalmoney = new BigDecimal("0");
|
//BigDecimal totalweight = new BigDecimal("0");
|
for (Map<String,Object> 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<String,Object> quotaDetail(StorageUserModel model) {
|
int p = model.getPage();
|
p = (p - 1) * model.getLimit();
|
model.setPage(p);
|
List<StorageUserModel> list = dao.quotaDetail(model);
|
Map<String,Object> map = new HashMap<>();
|
map.put("data",list);
|
map.put("code",0);
|
map.put("count",dao.quotaDetailCount(model));
|
return map;
|
}
|
|
public Map<String,Object> queryStorageMoneyApi(PayStorageModel model){
|
List<String> partnerIds = cityPartnerService.queryPartnerByCurrent();
|
int p = model.getPage();
|
p = (p - 1) * model.getLimit();
|
model.setPage(p);
|
model.setPartnerIds(partnerIds);
|
List<PayStorageModel> modelList = dao.queryStorageMoneyApi(model);
|
Map<String,Object> 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;
|
|
}
|
}
|