package com.hehenian.biz.service.trade.impl; import com.hehenian.biz.common.account.dataobject.AccountUserDo; import com.hehenian.biz.common.activity.IActivityOrderService; import com.hehenian.biz.common.activity.dataobject.ActivityOrderDo; import com.hehenian.biz.common.base.result.IResult; import com.hehenian.biz.common.base.result.ResultSupport; import com.hehenian.biz.common.contant.FundConstant; import com.hehenian.biz.common.exception.BusinessException; import com.hehenian.biz.common.trade.INewRechargeService; import com.hehenian.biz.common.trade.dataobject.FundrecordDo; import com.hehenian.biz.common.trade.dataobject.RechargeDo; import com.hehenian.biz.common.util.DateUtil; import com.hehenian.biz.common.util.JsonUtil; import com.hehenian.biz.component.account.IUserComponent; import com.hehenian.biz.component.activity.IActivityOrderComponent; import com.hehenian.biz.component.trade.IFundrecordComponent; import com.hehenian.biz.component.trade.IInvestComponent; import com.hehenian.biz.component.trade.IRechargeComponent; import com.hehenian.biz.facade.account.AccountType; import com.hehenian.biz.facade.account.IAccountManagerService; import com.hehenian.biz.facade.account.parameter.InParameter; import com.hehenian.biz.facade.account.parameter.OutParameter; import com.hehenian.biz.facade.colorlife.IColorOrderFacade; import com.ibm.icu.text.DecimalFormat; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Date; import java.util.List; import java.util.Map; /** * User: liuwtmf * Date: 2014/9/23 * Time: 10:47 */ @Service("newRechargeService") public class NewRechargeServiceImpl implements INewRechargeService { private static final Logger LOGGER = Logger.getLogger(NewRechargeServiceImpl.class); @Autowired private IRechargeComponent rechargeComponent; @Autowired private IUserComponent userComponent; @Autowired private IAccountManagerService accountManagerService; @Autowired private IFundrecordComponent fundrecordComponent; @Autowired private IInvestComponent investComponent; @Autowired IActivityOrderComponent activityOrderComponent; @Autowired private IColorOrderFacade colorOrderFacade; @Autowired private IActivityOrderService activityOrderService; @Override public IResult<?> addRecharge(RechargeDo rechargeDo) { int i = rechargeComponent.addRecharge(rechargeDo); if (i > 0) { IResult<String> result = new ResultSupport<String>(); InParameter inParameter = new InParameter(); inParameter.getParams().put("userId", rechargeDo.getUserId() + ""); inParameter.setOrdId(rechargeDo.getId() + ""); inParameter.setRetUrl("addRechargeCallback1.do"); inParameter.setBgRetUrl("addRechargeCallback1.do"); AccountUserDo accountUserDo = userComponent.getById(rechargeDo .getUserId()); inParameter.getParams().put("usrCustId", accountUserDo.getUsrCustId() + ""); inParameter.getParams().put("transAmt", new DecimalFormat("#0.00").format(rechargeDo.getRechargeMoney())); inParameter.getParams().put("DcFlag", "D"); inParameter.getParams().put("OrdDate", DateUtil.dateToYMD(new Date())); inParameter.getParams().put("OpenBankId", rechargeDo.getBankName()); inParameter.getParams().put("gateBusiId", rechargeDo.getGateBusiId()); inParameter.getParams().put("MerPriv", rechargeDo.getInfo()); try { OutParameter outParameter = accountManagerService.netSave(inParameter, AccountType.CHINAPNR); if (outParameter.isSuccess()) { result.setSuccess(true); result.setModel((String) outParameter.getParams().get("htmlText")); } else { result.setSuccess(false); result.setErrorMessage(outParameter.getRespDesc()); } } catch (BusinessException e){ result.setSuccess(false); result.setErrorMessage(e.getMessage()); LOGGER.error(e.getMessage(), e); } catch (Exception e) { result.setSuccess(false); result.setErrorMessage("操作失败,请稍后再试!"); LOGGER.error(e.getMessage(), e); } return result; } return null; } @Override public IResult<?> addRechargeCallback(RechargeDo rechargeDo) { IResult<Integer> result = new ResultSupport<Integer>(); RechargeDo localRechargeDo = rechargeComponent.getById(rechargeDo.getId()); if (localRechargeDo == null){ //记录不存在 result.setSuccess(false); result.setErrorMessage("操作失败,请稍后再试!"); }else if (localRechargeDo.getResult()==1){ //记录已处理 // result.setSuccess(false); // result.setErrorMessage("重复操作!"); result.setSuccess(true); }else{ rechargeDo.setResult(1); rechargeDo.setUserId(localRechargeDo.getUserId()); int i = rechargeComponent.updateRecharge(rechargeDo); if (i>0){ try { userComponent.updateAmount(rechargeDo.getRechargeMoney(), 0.0,localRechargeDo.getUserId()); }catch (Exception e){ LOGGER.error(e.getMessage(),e); } //添加资金流水 FundrecordDo fundrecordDo = new FundrecordDo(); fundrecordDo.setUserId(localRechargeDo.getUserId()); fundrecordDo.setFundMode(FundConstant.RECHARGE); fundrecordDo.setHandleSum(rechargeDo.getRechargeMoney()); fundrecordDo.setOperateType(-1); AccountUserDo userDo = userComponent.getById(localRechargeDo.getUserId()); fundrecordDo.setUsableSum(userDo.getUsableSum()); fundrecordDo.setFreezeSum(userDo.getFreezeSum()); Double dueinSum = investComponent.getDueinSum(localRechargeDo.getUserId()); fundrecordDo.setDueinSum(dueinSum == null ? 0.00 : dueinSum); fundrecordDo.setRecordTime(new Date()); String remark = "充值成功"; fundrecordDo.setRemarks(remark); fundrecordDo.setIncome(rechargeDo.getRechargeMoney()); fundrecordDo.setSpending(0.0); try { fundrecordComponent.addFundrecord(fundrecordDo); }catch (Exception e){ LOGGER.error("插入资金记录失败"); LOGGER.error(e.getMessage(),e); } result.setSuccess(true); if (StringUtils.isNotBlank(rechargeDo.getInfo())){ LOGGER.info("-------rechargeDo.getInfo:"+rechargeDo.getInfo()); //JSONObject jsonObject = JSONObject.fromObject(rechargeDo.getInfo()); Map<String,Object> jsonObject =(Map) JsonUtil.json2Bean(rechargeDo.getInfo(),Map.class); if (jsonObject!=null){ if ("wyf".equals(jsonObject.get("type"))){ long wyfOrdId = Long.parseLong(jsonObject.get("id").toString()); int i1 = activityOrderComponent.addRechargeMoney(wyfOrdId, rechargeDo.getRechargeMoney(), localRechargeDo.getUserId()); if (i1<=0){ LOGGER.error("修改订单充值金额失败!wyfOrdId:"+wyfOrdId+",localRechargeDo:"+localRechargeDo); }else { ActivityOrderDo activityOrderDo = activityOrderComponent.getById(wyfOrdId); if (activityOrderDo!=null && rechargeDo.getRechargeMoney()>=activityOrderDo.getInvestAmount()){ //彩富一号订单充值完成 int j = activityOrderService.updateStatus(userDo,activityOrderDo); if (j<=0){ //修改订单状态失败 LOGGER.error("修改订单状态失败.activityOrderDo:"+activityOrderDo); } } } } } } }else{ result.setSuccess(false); result.setErrorMessage("操作失败,请稍后再试!"); } } return result; } @Override public List<RechargeDo> selectRecharges(Map<String, Object> parameterMap) { return null; } @Override public RechargeDo getById(long id) { RechargeDo rechargeDo = rechargeComponent.getById(id); return rechargeDo; } public void setRechargeComponent(IRechargeComponent rechargeComponent) { this.rechargeComponent = rechargeComponent; } public void setUserComponent(IUserComponent userComponent) { this.userComponent = userComponent; } public void setAccountManagerService(IAccountManagerService accountManagerService) { this.accountManagerService = accountManagerService; } }