package com.nq.service.impl; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.nq.common.ServerResponse; import com.nq.dao.*; import com.nq.pojo.*; import com.nq.service.IFundsApplyService; import com.nq.service.IFundsSettingService; import com.nq.service.IUserService; import com.nq.utils.timeutil.DateTimeUtil; import com.nq.utils.KeyUtils; 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 javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; /** * 配资申请 * @author lr * @date 2020/07/24 */ @Service("IFundsApplyService") public class FundsApplyServiceImpl implements IFundsApplyService { private static final Logger log = LoggerFactory.getLogger(FundsApplyServiceImpl.class); @Resource private FundsApplyMapper fundsApplyMapper; @Resource UserMapper userMapper; @Resource UserCashDetailMapper userCashDetailMapper; @Autowired FundsTradingAccountMapper fundsTradingAccountMapper; @Autowired IUserService iUserService; @Autowired IFundsSettingService iFundsSettingService; @Transactional(rollbackFor = Exception.class) public ServerResponse insert(FundsApply model, HttpServletRequest request) throws Exception { int ret = 0; if (model == null) { return ServerResponse.createBySuccessMsg("操作异常,请稍后重试!"); } User user = this.iUserService.getCurrentRefreshUser(request); if(user == null){ return ServerResponse.createBySuccessMsg("请登录后操作"); } //支付金额=保证金+管理费 BigDecimal pay_amount = model.getMargin().add(model.getManageFee()); //自动生成订单编号 model.setOrderNumber(KeyUtils.getUniqueKey()); model.setPayAmount(pay_amount); ret = fundsApplyMapper.insert(model); if(ret>0){ //修改用户可用余额= 当前余额-支付金额 int updateUserCount = this.userMapper.updateById(user); if (updateUserCount > 0) { log.info("【用户交易下单】修改用户金额成功"); UserCashDetail ucd = new UserCashDetail(); ucd.setPositionId(model.getId()); ucd.setAgentId(user.getAgentId()); ucd.setAgentName(user.getAgentName()); ucd.setUserId(user.getId()); ucd.setUserName(user.getRealName()); ucd.setDeType("配资冻结"); ucd.setDeAmt(model.getPayAmount().multiply(new BigDecimal("-1"))); ucd.setDeSummary("申请按天配资:" + model.getOrderNumber() + ",冻结金额:" + model.getPayAmount().multiply(new BigDecimal("-1")) ); ucd.setAddTime(new Date()); ucd.setIsRead(Integer.valueOf(0)); int insertSxfCount = this.userCashDetailMapper.insert(ucd); if (insertSxfCount > 0) { log.info("【按天配资】申请成功"); } } else { log.error("【按天配资】修改用户金额出错"); throw new Exception("【按天配资】修改用户金额出错"); } return ServerResponse.createBySuccessMsg("申请成功!"); } else { return ServerResponse.createBySuccessMsg("申请失败,请稍后重试!"); } } @Override public int update(FundsApply model) { int ret = fundsApplyMapper.update(model); return ret>0 ? ret: 0; } /** * 配资申请-保存 */ @Override public ServerResponse save(FundsApply model) { int ret = 0; if(model!=null && model.getId()>0){ ret = fundsApplyMapper.update(model); } else{ ret = fundsApplyMapper.insert(model); } if(ret>0){ return ServerResponse.createBySuccessMsg("操作成功"); } return ServerResponse.createByErrorMsg("操作失败"); } /** * 配资申请-审核 */ @Transactional(rollbackFor = Exception.class) public ServerResponse audit(FundsApply model, HttpServletRequest request) throws Exception { return ServerResponse.createByErrorMsg("操作失败"); } /*配资申请-查询列表*/ @Override public ServerResponse getList(int pageNum, int pageSize, String keyword, Integer status, HttpServletRequest request){ PageHelper.startPage(pageNum, pageSize); List listData = this.fundsApplyMapper.pageList(pageNum, pageSize, keyword, status); PageInfo pageInfo = new PageInfo(listData); pageInfo.setList(listData); return ServerResponse.createBySuccess(pageInfo); } /*配资申请-查询详情*/ @Override public ServerResponse getDetail(int id) { return ServerResponse.createBySuccess(this.fundsApplyMapper.load(id)); } /** * 配资申请-用户配资列表 */ @Override public ServerResponse getUserApplyList(int pageNum, int pageSize, int userId, HttpServletRequest request){ User user = this.iUserService.getCurrentRefreshUser(request); if (user == null){ return ServerResponse.createBySuccessMsg("請先登錄"); } PageHelper.startPage(pageNum, pageSize); List listData = this.fundsApplyMapper.getUserApplyList(pageNum, pageSize, user.getId()); PageInfo pageInfo = new PageInfo(listData); pageInfo.setList(listData); return ServerResponse.createBySuccess(pageInfo); } /** * 配资申请-用户操盘中子账户 */ @Override public ServerResponse getUserEnabledSubaccount(HttpServletRequest request){ User user = this.iUserService.getCurrentRefreshUser(request); List listData = this.fundsApplyMapper.getUserEnabledSubaccount(user.getId()); PageInfo pageInfo = new PageInfo(); pageInfo.setList(listData); return ServerResponse.createBySuccess(pageInfo); } }