package com.sp2p.action.app;
import java.io.IOException;
import java.sql.SQLException;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.hehenian.biz.common.account.dataobject.AccountUserDo;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.shove.Convert;
import com.shove.data.DataException;
import com.shove.security.Encrypt;
import com.shove.web.util.JSONUtils;
import com.sp2p.constants.IConstants;
import com.sp2p.service.AssignmentDebtService;
import com.sp2p.service.AuctionDebtService;
import com.sp2p.service.FinanceService;
import com.sp2p.service.SelectedService;
import com.sp2p.service.UserService;
import com.sp2p.util.DateUtil;
/**
* 债权转让
*/
public class DebtAppAction extends BaseAppAction {
public static Log log = LogFactory.getLog(DebtAppAction.class);
private static final long serialVersionUID = 1L;
private AssignmentDebtService assignmentDebtService;
private AuctionDebtService auctionDebtService;
private FinanceService financeService;
private SelectedService selectedService;
private UserService userService;
public UserService getUserService() {
return userService;
}
public void setUserService(UserService userService) {
this.userService = userService;
}
public SelectedService getSelectedService() {
return selectedService;
}
/**
* 查询前台的债权转让
*
* @return
* @throws IOException
*/
public String queryFrontAllDebt() throws IOException {
Map<String, Object> jsonMap = new HashMap<String, Object>();
try {
Map<String, String> appInfoMap = getAppInfoMap();
pageBean.setPageNum(appInfoMap.get("curPage"));
long debtSum = Convert.strToLong(appInfoMap.get("debtSum"), -1);
long auctionBasePrice = Convert.strToLong(appInfoMap.get("auctionBasePrice"), -1);
long auctionMode = Convert.strToLong(appInfoMap.get("auctionMode"), -1);
long isLate = Convert.strToLong(appInfoMap.get("isLate"), -1);
long publishDays = Convert.strToLong(appInfoMap.get("publishDays"), -1);
String borrowTitle = appInfoMap.get("borrowTitle");
assignmentDebtService.queryAllDebt(borrowTitle,debtSum, auctionBasePrice,
auctionMode, isLate, publishDays, "2,1,3", pageBean);
List<Map<String, Object>> list = pageBean.getPage();
Date nowDate = new Date();
if (list != null) {
for (Map<String, Object> map : list) {
Date date = (Date) map.get("actionTime");
String remainDays = DateUtil.remainDateToString(nowDate,
date);
map.put("remainDays", remainDays);
}
}
jsonMap.put("pageBean", pageBean);
jsonMap.put("error", "-1");
jsonMap.put("msg", "成功");
JSONUtils.printObject(jsonMap);
} catch (Exception e) {
jsonMap.put("error", "1");
jsonMap.put("msg", "未知异常");
JSONUtils.printObject(jsonMap);
e.printStackTrace();
log.error(e);
}
return null;
}
/**
* 查询前台的成功的债权转让
*
* @return
* @throws IOException
*/
public String queryFrontSuccessDebt() throws IOException {
Map<String, Object> jsonMap = new HashMap<String, Object>();
try {
Map<String, String> appInfoMap = getAppInfoMap();
pageBean.setPageNum(appInfoMap.get("curPage"));
long debtSum = Convert.strToLong(appInfoMap.get("debtSum"), -1);
long auctionBasePrice = Convert.strToLong(appInfoMap.get("auctionBasePrice"), -1);
long auctionMode = Convert.strToLong(appInfoMap.get("auctionMode"), -1);
long isLate = Convert.strToLong(appInfoMap.get("isLate"), -1);
long publishDays = Convert.strToLong(appInfoMap.get("publishDays"), -1);
String borrowTitle = appInfoMap.get("borrowTitle");
assignmentDebtService.queryAllDebt(borrowTitle,debtSum, auctionBasePrice,
auctionMode, isLate, publishDays, "3", pageBean);
jsonMap.put("pageBean", pageBean);
jsonMap.put("error", "-1");
jsonMap.put("msg", "成功");
JSONUtils.printObject(jsonMap);
} catch (Exception e) {
jsonMap.put("error", "1");
jsonMap.put("msg", "未知异常");
JSONUtils.printObject(jsonMap);
e.printStackTrace();
log.error(e);
}
return null;
}
/**
* 查询债权债权详情
*
* @return
* @throws IOException
*/
public String queryDebtDetail() throws IOException {
Map<String, Object> jsonMap = new HashMap<String, Object>();
try {
Map<String, String> appInfoMap = getAppInfoMap();
long id = Convert.strToLong(appInfoMap.get("id"), -1);
Map<String, String> map = assignmentDebtService
.getAssignmentDebt(id);
if (map != null) {
long viewCount = Convert.strToLong(map.get("viewCount"), 0);
viewCount++;
paramMap.putAll(map);
long borrowId = Convert.strToLong(map.get("borrowId"), -1);
long borrowerId = auctionDebtService.queryBorrowerByBorrowId(borrowId);
Map<String, String> borrow = financeService.queryBorrowDetailById(borrowId);
Map<String, String> person = userService.queryPersonById(borrowerId);
paramMap.put("nativePlacePro", "-1");
paramMap.put("nativePlaceCity", "-1");
paramMap.put("borrowerId", borrowerId+"");
paramMap.put("viewCount", viewCount + "");
map = new HashMap<String, String>();
map.put("viewCount", viewCount + "");
assignmentDebtService.updateAssignmentDebt(id,-1, map);
String publishTime = paramMap.get("publishTime");
long auctionDays = Convert.strToLong(paramMap
.get("auctionDays"), 0);
String remainDays = DateUtil.remainDateToString(new Date(),
DateUtil.dateAddDay(DateUtil.strToDate(publishTime),
(int) auctionDays));
paramMap.put("remainDays", remainDays);
long debtId = Convert.strToLong(paramMap.get("id"), -1);
paramMap.put("debtId", paramMap.get("id"));
paramMap.putAll(auctionDebtService
.queryAuctionMaxPriceAndCount(debtId));
long alienatorId = Convert.strToLong(paramMap
.get("alienatorId"), -1);
Map<String, String> userMap = auctionDebtService
.getUserAddressById(alienatorId);
if(person!= null && person.size()>0){
userMap.put("nativePlacePro", person.get("nativePlacePro"));
userMap.put("nativePlaceCity", person.get("nativePlaceCity"));
}
// request().setAttribute("userMap", userMap);
jsonMap.put("borrow", borrow);
jsonMap.put("userMap", userMap);
jsonMap.put("paramMap", paramMap);
}
jsonMap.put("error", "-1");
jsonMap.put("msg", "成功");
JSONUtils.printObject(jsonMap);
} catch (Exception e) {
jsonMap.put("error", "1");
jsonMap.put("msg", "未知异常");
JSONUtils.printObject(jsonMap);
e.printStackTrace();
log.error(e);
}
return null;
}
/**
*
* 添加债权留言
*
*/
public String addDebtMSG() throws IOException, SQLException {
Map<String, Object> jsonMap = new HashMap<String, Object>();
try {
Map<String, String> appInfoMap = getAppInfoMap();
Map<String, String> appAuthMap = getAppAuthMap();
String uid = appAuthMap.get("uid");
if(StringUtils.isBlank(uid)){
jsonMap.put("error", "4");
jsonMap.put("msg", "请先登陆");
JSONUtils.printObject(jsonMap);
return null;
}
long userId = Convert.strToLong(uid, -1l);
String id = appInfoMap.get("id") == null ? "" : appInfoMap.get("id");
long idLong = Convert.strToLong(id, -1);
String msgContent = appInfoMap.get("msg") == null ? "" : appInfoMap
.get("msg");
long returnId = -1;
returnId = assignmentDebtService.addDebtMsg(idLong, userId,
msgContent);
if (returnId <= 0) {
jsonMap.put("error", "2");
jsonMap.put("msg", IConstants.ACTION_FAILURE);
JSONUtils.printObject(jsonMap);
} else {
// 添加成功返回值
jsonMap.put("error", "-1");
jsonMap.put("msg", "成功");
JSONUtils.printObject(jsonMap);
}
} catch (Exception e) {
jsonMap.put("error", "1");
jsonMap.put("msg", "未知异常");
JSONUtils.printObject(jsonMap);
e.printStackTrace();
log.error(e);
}
return null;
}
/**
* 留言初始化
* @throws IOException
*
*/
public String debtMSGInit() throws SQLException, DataException, IOException {
Map<String, Object> jsonMap = new HashMap<String, Object>();
try {
Map<String, String> appInfoMap = getAppInfoMap();
String id = appInfoMap.get("id") == null ? "" : appInfoMap.get("id");
long idLong = Convert.strToLong(id, -1);
String pageNum = appInfoMap.get("curPage");
if (StringUtils.isNotBlank(pageNum)) {
pageBean.setPageNum(pageNum);
}
pageBean.setPageSize(IConstants.PAGE_SIZE_6);
if (idLong == -1) {
jsonMap.put("error", "2");
jsonMap.put("msg", "没有债权ID");
JSONUtils.printObject(jsonMap);
return null;
}
assignmentDebtService.queryDebtMSGBord(idLong, pageBean);
jsonMap.put("pageBean", pageBean);
jsonMap.put("id", id);
jsonMap.put("error", "-1");
jsonMap.put("msg", "成功");
JSONUtils.printObject(jsonMap);
} catch (Exception e) {
jsonMap.put("error", "1");
jsonMap.put("msg", "未知异常");
JSONUtils.printObject(jsonMap);
e.printStackTrace();
log.error(e);
}
return null;
}
/**
* 竞拍初始化
*
* @return
* @throws IOException
*/
public String auctingDebtInit() throws IOException {
Map<String, Object> jsonMap = new HashMap<String, Object>();
try {
Map<String, String> appInfoMap = getAppInfoMap();
Map<String, String> appAuthMap = getAppAuthMap();
String uid = appAuthMap.get("uid");
if(StringUtils.isBlank(uid)){
jsonMap.put("error", "4");
jsonMap.put("msg", "请先登陆");
JSONUtils.printObject(jsonMap);
return null;
}
long userId = Convert.strToLong(uid, -1l);
paramMap.put("debtId", appInfoMap.get("debtId"));
Map<String, String> map = auctionDebtService.getUserById(userId);
if (map != null) {
paramMap.put("usableSum", map.get("usableSum"));
paramMap.put("totalSum", String.format("%.2f", Convert
.strToDouble(map.get("freezeSum"), 0.0)
+ Convert.strToDouble(map.get("usableSum"), 0.0)));
}
Map<String,String> debtMap = assignmentDebtService.getAssignmentDebt(Convert.strToLong(request("debtId"), -1));
if(debtMap != null){
paramMap.putAll(debtMap);
}
jsonMap.put("paramMap", paramMap);
jsonMap.put("error", "-1");
jsonMap.put("msg", "成功");
JSONUtils.printObject(jsonMap);
} catch (Exception e) {
jsonMap.put("error", "1");
jsonMap.put("msg", "未知异常");
JSONUtils.printObject(jsonMap);
e.printStackTrace();
log.error(e);
}
return null;
}
/**
* 参与竞拍
*
* @return
* @throws IOException
*/
public String addAuctingDebt() throws IOException {
Map<String, Object> jsonMap = new HashMap<String, Object>();
try {
Map<String, String> appInfoMap = getAppInfoMap();
Map<String, String> appAuthMap = getAppAuthMap();
String uid = appAuthMap.get("uid");
if(StringUtils.isBlank(uid)){
jsonMap.put("error", "1");
jsonMap.put("msg", "请先登陆");
JSONUtils.printObject(jsonMap);
return null;
}
long userId = Convert.strToLong(uid, -1l);
long debtId = Convert.strToLong(appInfoMap.get("debtId"), -1);
Map<String, String> debtMap = assignmentDebtService
.getAssignmentDebt(debtId);
Map<String, String> userMap = auctionDebtService
.getUserById(userId);
if (debtMap != null && userMap != null) {
if (debtMap.get("alienatorId").equals(userId + "")) {
jsonMap.put("error", "2");
jsonMap.put("msg", " 不能投自己转让的的债权");
JSONUtils.printObject(jsonMap); // 不能投自己转让的的债权
return null;
}
long borrowId = Convert.strToLong(debtMap.get("borrowId"), -1);
String pwd = appInfoMap.get("pwd");
pwd = Encrypt.MD5(pwd).toLowerCase();
if (!pwd.equals(userMap.get("dealpwd").toLowerCase())) {
jsonMap.put("error", "3");
jsonMap.put("msg", " 交易密码不对");
JSONUtils.printObject(jsonMap); // 交易密码不对
return null;
}
Map<String,String> aucctionMap = auctionDebtService.getAuctionDebt(debtId,userId);
double oldAuctionPrice = 0.0;
if(aucctionMap != null){
oldAuctionPrice = Convert.strToDouble(aucctionMap.get("auctionPrice"),0.0);
}
double auctionPrice = Convert.strToDouble(appInfoMap
.get("auctionPrice"), 0.0);
double usableSum = Convert.strToDouble(
userMap.get("usableSum"), 0.0);
if (usableSum < (auctionPrice-oldAuctionPrice)) {
jsonMap.put("error", "4");
jsonMap.put("msg", "可用余额不足");
JSONUtils.printObject(jsonMap); // 可用余额不足
return null;
}
double debtSum = Convert.strToDouble(debtMap.get("debtSum"),
0.0);
if (debtSum < auctionPrice) {
jsonMap.put("error", "5");
jsonMap.put("msg", "大于债权金额");
JSONUtils.printObject(jsonMap); // 大于债权金额
return null;
}
double auctionBasePrice = Convert.strToDouble(debtMap
.get("auctionBasePrice"), 0.0);
if (auctionBasePrice > auctionPrice) {
jsonMap.put("error", "6");
jsonMap.put("msg", "小于最小竞拍金额");
JSONUtils.printObject(jsonMap); // 小于最小竞拍金额
return null;
}
long actionTimes = auctionDebtService.queryAuctionUserTimes(debtId, userId);
if (actionTimes >= 2) {
jsonMap.put("error", "7");
jsonMap.put("msg", "该债权您只能竞拍两次");
JSONUtils.printObject(jsonMap); // 该债权您只能竞拍两次
return null;
}
long borrowerId = auctionDebtService.queryBorrowerByBorrowId(borrowId);
if(borrowerId==userId){
jsonMap.put("error", "8");
jsonMap.put("msg", "借款者不能竞拍该债权");
JSONUtils.printObject(jsonMap); // 借款者不能竞拍该债权
return null;
}
if(oldAuctionPrice >= auctionPrice){
jsonMap.put("error", "9");
jsonMap.put("msg", "第二次竞拍金额应大于第一次竞拍金额");
JSONUtils.printObject(jsonMap); // 第二次竞拍金额应大于第一次竞拍金额
return null;
}
double auctionHighPrice = Convert.strToDouble(debtMap.get("auctionHighPrice"), -1);
if(auctionHighPrice != -1 && auctionHighPrice > auctionPrice){
jsonMap.put("error", "10");
jsonMap.put("msg", "竞拍金额要大于最高竞拍金额");
JSONUtils.printObject(jsonMap); // 竞拍金额要大于最高竞拍金额
return null;
}
if(!"2".equals(debtMap.get("debtStatus"))){
jsonMap.put("error", "11");
jsonMap.put("msg", "竞拍失败");
JSONUtils.printObject(jsonMap); //竞拍失败
return null;
}
paramMap.put("userId", userId + "");
paramMap.put("auctionTime", DateUtil.dateToString(new Date()));
paramMap.put("userName", ((AccountUserDo)session().getAttribute(IConstants.SESSION_USER)).getUsername());
paramMap.put("basePath", this.getBasePath());
long result = -1;
if (actionTimes==1) {
paramMap.put("oldAuctionPrice",oldAuctionPrice+"");
result = auctionDebtService.upadteAuctionDebt(paramMap,Convert.strToLong(aucctionMap.get("id"), -1),userMap);
}else{
result = auctionDebtService.addAuctionDebt(paramMap, userMap);
}
if(result != -1){
jsonMap.put("error", "-1");
jsonMap.put("msg", "成功");
JSONUtils.printObject(jsonMap);
}else{
jsonMap.put("error", "11");
jsonMap.put("msg", "竞拍失败");
JSONUtils.printObject(jsonMap);
}
}
} catch (Exception e) {
jsonMap.put("error", "12");
jsonMap.put("msg", "未知异常");
JSONUtils.printObject(jsonMap);
e.printStackTrace();
log.error(e);
}
return null;
}
/**
* 查询竞拍记录
*
* @return
* @throws IOException
*/
public String queryAcutionRecordInfo() throws IOException {
Map<String, Object> jsonMap = new HashMap<String, Object>();
try {
Map<String, String> appInfoMap = getAppInfoMap();
long id = Convert.strToLong(appInfoMap.get("id"), -1);
List<Map<String, Object>> list = auctionDebtService
.queryAuctionDebtByDebtId(id);
Map<String, String> debt = assignmentDebtService.getAssignmentDebt(id);
if(list == null && list.size() <= 0){
jsonMap.put("error", "2");
jsonMap.put("msg", "没有竞拍记录");
JSONUtils.printObject(jsonMap);
return null;
}
jsonMap.put("auctionHighPrice", debt.get("auctionHighPrice"));
jsonMap.put("auctionDays", debt.get("auctionDays"));
jsonMap.put("publishTime", debt.get("publishTime"));
String remainDays = DateUtil.remainDateToString(new Date(),
DateUtil.dateAddDay(DateUtil.strToDate(debt.get("publishTime")),
Convert.strToInt(debt.get("auctionDays"), 0)));
jsonMap.put("remainDays", remainDays);
jsonMap.put("list", list);
jsonMap.put("error", "-1");
jsonMap.put("msg", "查询成功");
JSONUtils.printObject(jsonMap);
} catch (Exception e) {
jsonMap.put("error", "1");
jsonMap.put("msg", "未知异常");
JSONUtils.printObject(jsonMap);
log.error(e);
e.printStackTrace();
}
return null;
}
public void setAssignmentDebtService(
AssignmentDebtService assignmentDebtService) {
this.assignmentDebtService = assignmentDebtService;
}
public void setAuctionDebtService(AuctionDebtService auctionDebtService) {
this.auctionDebtService = auctionDebtService;
}
public void setSelectedService(SelectedService selectedService) {
this.selectedService = selectedService;
}
public FinanceService getFinanceService() {
return financeService;
}
public void setFinanceService(FinanceService financeService) {
this.financeService = financeService;
}
}