package com.ibeetl.admin.console.api;
|
|
import cn.hutool.core.lang.Snowflake;
|
import cn.hutool.core.util.IdUtil;
|
import com.ibeetl.admin.console.dao.PayConsoleDao;
|
import com.ibeetl.admin.console.model.*;
|
import com.ibeetl.admin.console.service.*;
|
import com.ibeetl.admin.console.service.pay.utils.entity.TransfersDto;
|
import com.ibeetl.admin.console.util.DoubleUtil;
|
import com.ibeetl.admin.core.entity.CoreUser;
|
import com.ibeetl.admin.core.entity.XzxAccountInfo;
|
import com.ibeetl.admin.core.entity.XzxCityPartner;
|
import com.ibeetl.admin.core.service.CorePlatformService;
|
import com.ibeetl.admin.core.web.JsonResult;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiImplicitParam;
|
import io.swagger.annotations.ApiImplicitParams;
|
import io.swagger.annotations.ApiOperation;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
import org.springframework.web.bind.annotation.RestController;
|
|
import java.math.BigDecimal;
|
import java.text.SimpleDateFormat;
|
import java.util.Date;
|
import java.util.HashMap;
|
import java.util.Map;
|
|
@RestController
|
@Api(value = "资金管理接口类")
|
public class FundManagementApi {
|
private static final String MODEL = "/admin/front/fund";
|
private final Logger log = LoggerFactory.getLogger(this.getClass());
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
@Autowired
|
FundManagementApiService service;
|
@Autowired
|
MoneyConsoleService moneyConsoleService;
|
|
@Autowired
|
CuserConsoleService cuserConsoleService;
|
@Autowired
|
SettingConsoleService settingConsoleService;
|
@Autowired
|
CorePlatformService platformService;
|
@Autowired
|
PayConsoleService payLogService;
|
@Autowired
|
XzxCityPartnerService cityPartnerService;
|
|
@PostMapping(MODEL + "/queryFundManagementList.do")
|
@ResponseBody
|
@ApiOperation(value = "资金管理-提现审核", notes = "test: 仅0有正确返回")
|
@ApiImplicitParams({
|
@ApiImplicitParam(paramType = "query", name = "page", value = "页码", required = true, dataType = "int"),
|
@ApiImplicitParam(paramType = "query", name = "limit", value = "每页条数", required = true, dataType = "int"),
|
@ApiImplicitParam(paramType = "query", name = "startTime", value = "开始时间", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType = "query", name = "endTime", value = "结束时间", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType = "query", name = "nickName", value = "昵称", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType = "query", name = "status", value = "审核状态(1为待审核,2为已审核,3为审核不通过)", required = true, dataType = "String")
|
|
})
|
public JsonResult<Map<String, Object>> queryFundManagementList(@RequestBody MoneyModel moneyModel) {
|
moneyModel.setPayType("4");
|
return service.queryFundManagementList(moneyModel);
|
}
|
|
@PostMapping(MODEL + "/queryPayInfoDetail.json")
|
@ResponseBody
|
@ApiOperation(value = "资金管理-提现审核详情", notes = "test: 仅0有正确返回")
|
@ApiImplicitParams({
|
@ApiImplicitParam(paramType = "query", name = "page", value = "页码", required = true, dataType = "int"),
|
@ApiImplicitParam(paramType = "query", name = "limit", value = "每页条数", required = true, dataType = "int"),
|
@ApiImplicitParam(paramType = "query", name = "payOrderId", value = "金钱表ID", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType = "query", name = "userType", value = "身份类别", required = true, dataType = "String")
|
})
|
public JsonResult<Map<String, Object>> queryPayInfoDetail(@RequestBody MoneyModel moneyModel) {
|
moneyModel.setPayType("4");
|
return service.queryPayInfoDetailApi(moneyModel);
|
}
|
|
@PostMapping(MODEL + "/queryRechangeApiList.do")
|
@ResponseBody
|
@ApiOperation(value = "资金管理-充值记录", notes = "test: 仅0有正确返回")
|
@ApiImplicitParams({
|
@ApiImplicitParam(paramType = "query", name = "page", value = "页码", required = true, dataType = "int"),
|
@ApiImplicitParam(paramType = "query", name = "limit", value = "每页条数", required = true, dataType = "int"),
|
@ApiImplicitParam(paramType = "query", name = "startTime", value = "开始时间", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType = "query", name = "endTime", value = "结束时间", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType = "query", name = "nickName", value = "昵称", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType = "query", name = "status", value = "支付状态(0为合伙人保存充值状态,1为待支付,2为已支付,3为已审核,4为已提现,5为待审核,6审核不通过)", required = true, dataType = "String")
|
})
|
public JsonResult<Map<String, Object>> queryRechangeApiList(@RequestBody MoneyModel moneyModel) {
|
|
Map<String, Object> map = service.queryRechangeApiList(moneyModel);
|
return JsonResult.success(map);
|
}
|
|
@PostMapping(MODEL + "/queryRechangeApiDetail.json")
|
@ResponseBody
|
@ApiOperation(value = "资金管理-充值记录(查看详情)", notes = "test: 仅0有正确返回")
|
@ApiImplicitParams({
|
@ApiImplicitParam(paramType = "query", name = "payOrderId", value = "充值记录Id", required = true, dataType = "String")
|
})
|
public JsonResult<Map<String, Object>> queryRechangeApiDetail(@RequestBody PayInfoModel payInfoModel) {
|
|
Map<String, Object> map = service.queryRechangeApiDetail(payInfoModel);
|
return JsonResult.success(map);
|
}
|
|
|
@PostMapping(MODEL + "/quotaList.do")
|
@ResponseBody
|
@ApiOperation(value = "资金管理-额度申请", notes = "test: 仅0有正确返回")
|
@ApiImplicitParams({
|
@ApiImplicitParam(paramType = "query", name = "page", value = "页码", required = true, dataType = "int"),
|
@ApiImplicitParam(paramType = "query", name = "limit", value = "每页条数", required = true, dataType = "int"),
|
@ApiImplicitParam(paramType = "query", name = "startTime", value = "开始时间", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType = "query", name = "endTime", value = "结束时间", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType = "query", name = "nickName", value = "昵称", required = true, dataType = "String")
|
|
})
|
public JsonResult<Map<String, Object>> quotaList(@RequestBody MoneyModel moneyModel) {
|
moneyModel.setPayType("7");
|
return service.queryFundManagementList(moneyModel);
|
}
|
|
@PostMapping(MODEL + "/quota.json")
|
@ResponseBody
|
@ApiOperation(value = "资金管理-额度申请(通过)", notes = "test: 仅0有正确返回")
|
@ApiImplicitParams({
|
@ApiImplicitParam(paramType = "query", name = "payOrderId", value = "额度申请Id", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType = "query", name = "userId", value = "用户Id", required = true, dataType = "String")
|
})
|
public JsonResult<String> quota(@RequestBody TransfersDto dto) {
|
Map<String, Object> result = new HashMap<>();
|
MoneyModel moneyModel = new MoneyModel();
|
moneyModel.setPayOrderId(dto.getPayOrderId());
|
moneyModel = moneyConsoleService.queryMoney(moneyModel);
|
//
|
UserModel userModel = cuserConsoleService.queryUserById(moneyModel.getCreateUserId());
|
if (userModel == null) {
|
if (moneyModel.getPayType().equals("9")) {
|
userModel = cuserConsoleService.queryRecoveryById(moneyModel.getCreateUserId(), "4");
|
} else {
|
userModel = cuserConsoleService.queryRecoveryById(moneyModel.getCreateUserId(), "2");
|
}
|
}
|
|
if (null != userModel) {
|
UserAccountModel userAccountModel = cuserConsoleService.queryAccountInfo(moneyModel.getCreateUserId(), userModel.getMobilePhone());
|
if (userAccountModel == null) {
|
return JsonResult.success("此用户未查询到账户信息");
|
} else {
|
String money = moneyModel.getMoney();
|
String type = "";
|
if (moneyModel.getPayType().equals("9")) {
|
type = "9";
|
BigDecimal money1 = new BigDecimal(userAccountModel.getFixedLimit()).subtract(new BigDecimal(userAccountModel.getOverdraftLimit()));
|
money = DoubleUtil.roundTwo(money1.toString());
|
settingConsoleService.updateLimitByUserId(userAccountModel.getAccountId(), moneyModel.getMoney());
|
} else {
|
type = "8";
|
settingConsoleService.updateOverdrawPriceByUserId(userAccountModel.getAccountId(), moneyModel.getMoney());
|
}
|
//此处需要扣除合伙人的钱
|
String partnerId = userModel.getPartnerId();
|
XzxCityPartner partner = cityPartnerService.queryById(partnerId);
|
if (partner.getPartnerType().equals("2")) {
|
partner = cityPartnerService.queryById(partner.getPackingStation());
|
}
|
UserAccountModel partnerAccount = cityPartnerService.queryPartnerAccountByUserId(partner.getUserId());
|
PartnerAccountModel partnerAccountModel = cityPartnerService.getPartnerAccountByUserId(partner.getUserId());
|
Snowflake snowflake = IdUtil.getSnowflake(0, 3);
|
String payOrderId = "ZF" + snowflake.nextIdStr();
|
cityPartnerService.insertPartnerAccountLog(partnerAccount, type, new BigDecimal(money), payOrderId, null);
|
System.out.println("=========合伙人人原有环保币======" + partnerAccountModel.getHbb());
|
BigDecimal newPartnerMoney = new BigDecimal(partnerAccountModel.getHbb()).subtract(new BigDecimal(money));
|
if (newPartnerMoney.compareTo(BigDecimal.ZERO) == -1) {
|
return JsonResult.failMessage("所属合伙人需要充值!余额不够分配!");
|
}
|
System.out.println("=========合伙人人现有环保币======" + newPartnerMoney.toString());
|
partnerAccount.setMoney(newPartnerMoney.doubleValue());
|
partnerAccountModel.setMoney(DoubleUtil.roundTwo(newPartnerMoney.toString()));
|
partnerAccountModel.setHbb(DoubleUtil.roundTwo(newPartnerMoney.toString()));
|
cityPartnerService.updateAccountPartner(partnerAccount);
|
cityPartnerService.updatePartnerAccount(partnerAccountModel);
|
CoreUser user = platformService.getCurrentUser();
|
//修改申请状态
|
moneyModel.setStatus("2");
|
moneyModel.setUpdateTime(sdf.format(new Date()));
|
moneyModel.setCreateUserId(String.valueOf(user.getId()));
|
moneyModel.setUnpassReason("");
|
moneyConsoleService.updateMoney(moneyModel);
|
//写入日志
|
AccountLogModel log = new AccountLogModel();
|
log.setAccountId(userAccountModel.getAccountId());
|
log.setChannelType("2");
|
log.setCreateTime(sdf.format(new Date()));
|
log.setCreateUserId(userAccountModel.getUserId());
|
BigDecimal oldFixedLimit = new BigDecimal(String.valueOf(userAccountModel.getFixedLimit()));
|
BigDecimal oldLimit = new BigDecimal(String.valueOf(userAccountModel.getOverdraftLimit()));
|
if(moneyModel.getPayType().equals("9")){
|
log.setNewFixedLimit(oldFixedLimit.toString());
|
|
}else{
|
log.setNewFixedLimit(oldFixedLimit.add(new BigDecimal(moneyModel.getMoney())).toString());
|
|
}
|
log.setNewLimit(oldLimit.add(new BigDecimal(moneyModel.getMoney())).toString());
|
log.setNewMoney(String.valueOf(userAccountModel.getMoney()));
|
log.setOldFixedLimit(oldFixedLimit.toString());
|
log.setOldLimit(oldLimit.toString());
|
log.setOldMoney(String.valueOf(userAccountModel.getMoney()));
|
log.setOrderId(dto.getPayOrderId());
|
//model.setOrderId(payOrderId);
|
payLogService.insertAccountLog(log);
|
|
return JsonResult.success("完成审核");
|
}
|
} else {
|
return JsonResult.success("查不到对应的申请人");
|
}
|
|
}
|
|
@PostMapping(MODEL + "/queryStorageMoneyApi.do")
|
@ResponseBody
|
@ApiOperation(value = "资金管理-支出明细", notes = "test: 仅0有正确返回")
|
@ApiImplicitParams({
|
@ApiImplicitParam(paramType = "query", name = "page", value = "页码", required = true, dataType = "int"),
|
@ApiImplicitParam(paramType = "query", name = "limit", value = "每页条数", required = true, dataType = "int"),
|
@ApiImplicitParam(paramType = "query", name = "startTime", value = "开始时间", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType = "query", name = "endTime", value = "结束时间", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType = "query", name = "storageUserName", value = "入库员", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType = "query", name = "storageUserPhone", value = "入库员手机号", required = true, dataType = "String")
|
})
|
public JsonResult<Map<String, Object>> queryStorageMoneyApi(@RequestBody PayStorageModel model) {
|
Map<String, Object> map = service.queryStorageMoneyApi(model);
|
return JsonResult.success(map);
|
}
|
|
@PostMapping(MODEL + "/queryStorageMoneyDetailApi.json")
|
@ResponseBody
|
@ApiOperation(value = "资金管理-支出明细详情", notes = "test: 仅0有正确返回")
|
@ApiImplicitParams({
|
@ApiImplicitParam(paramType = "query", name = "page", value = "页码", required = true, dataType = "int"),
|
@ApiImplicitParam(paramType = "query", name = "limit", value = "每页条数", required = true, dataType = "int"),
|
@ApiImplicitParam(paramType = "query", name = "storageId", value = "入库Id", required = true, dataType = "String"),
|
})
|
public JsonResult<Map<String, Object>> queryStorageMoneyDetailApi(@RequestBody PayStorageModel model) {
|
Map<String, Object> map = service.queryStorageMoneyDetailApi(model);
|
return JsonResult.success(map);
|
}
|
|
@PostMapping(MODEL + "/quotaCancel.json")
|
@ResponseBody
|
@ApiOperation(value = "资金管理-额度申请(拒绝)", notes = "test: 仅0有正确返回")
|
@ApiImplicitParams({
|
@ApiImplicitParam(paramType = "query", name = "payOrderId", value = "额度申请Id", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType = "query", name = "userId", value = "用户Id", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType = "query", name = "unpassReason", value = "未通过原因", required = true, dataType = "String")
|
})
|
public JsonResult<String> quotaCancel(@RequestBody TransfersDto dto) {
|
Map<String, Object> result = new HashMap<>();
|
MoneyModel moneyModel = new MoneyModel();
|
moneyModel.setPayOrderId(dto.getPayOrderId());
|
moneyModel = moneyConsoleService.queryMoney(moneyModel);
|
moneyModel.setStatus("3");
|
moneyModel.setUnpassReason(dto.getUnpassReason());
|
moneyConsoleService.updateMoney(moneyModel);
|
return JsonResult.success("完成审核");
|
}
|
|
@PostMapping(MODEL + "/quotaDetail.json")
|
@ResponseBody
|
@ApiOperation(value = "资金管理-额度申请(详情)", notes = "test: 仅0有正确返回")
|
@ApiImplicitParams({
|
@ApiImplicitParam(paramType = "query", name = "page", value = "页码", required = true, dataType = "int"),
|
@ApiImplicitParam(paramType = "query", name = "limit", value = "每页条数", required = true, dataType = "int"),
|
@ApiImplicitParam(paramType = "query", name = "startTime", value = "开始时间", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType = "query", name = "endTime", value = "结束时间", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType = "query", name = "userId", value = "回收员Id", required = true, dataType = "String")
|
})
|
public JsonResult<Map<String, Object>> quotaDetail(@RequestBody StorageUserModel storageUserModel) {
|
Map<String, Object> map = service.quotaDetail(storageUserModel);
|
return JsonResult.success(map);
|
}
|
|
@PostMapping(MODEL + "/quotaRecoveryList.do")
|
@ResponseBody
|
@ApiOperation(value = "资金管理-额度恢复(通过接口和拒绝接口与额度审核接口相同)", notes = "test: 仅0有正确返回")
|
@ApiImplicitParams({
|
@ApiImplicitParam(paramType = "query", name = "page", value = "页码", required = true, dataType = "int"),
|
@ApiImplicitParam(paramType = "query", name = "limit", value = "每页条数", required = true, dataType = "int"),
|
@ApiImplicitParam(paramType = "query", name = "startTime", value = "开始时间", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType = "query", name = "endTime", value = "结束时间", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType = "query", name = "nickName", value = "昵称", required = true, dataType = "String"),
|
@ApiImplicitParam(paramType = "query", name = "status", value = "审核状态(1为待审核,2为已审核,3为审核不通过)", required = true, dataType = "String")
|
})
|
public JsonResult<Map<String, Object>> quotaRecoveryList(@RequestBody MoneyModel moneyModel) {
|
moneyModel.setPayType("9");
|
return service.queryFundManagementList(moneyModel);
|
}
|
}
|