* @version : HUOSDK 8.0 */ namespace huo\model\finance; use huo\model\common\CommonModel; use huo\model\user\AgentExtModel; use huo\model\user\UserModel; use huolib\constant\SettleConst; use huomp\model\member\UnusualMemModel; class SettleModel extends CommonModel { protected $name = 'settle'; // 开启自动写入时间戳字段 protected $autoWriteTimestamp = true; public function agent() { return $this->belongsTo('huo\model\user\UserModel', 'agent_id', 'id'); } /** * 获取余额 * * @return \think\model\relation\HasOne */ public function remain() { return $this->hasOne(AgentExtModel::className(), 'agent_id', 'agent_id') ->field('agent_id, share_total,frozen_amount,share_remain'); } /** * 获取用户标记 * * @return \think\model\relation\HasOne */ public function memtag() { return $this->hasOne(UnusualMemModel::className(), 'agent_id', 'agent_id') ->field('agent_id, type'); } /** * 创建提现订单 * * @param array $data * * @return bool|string */ public function createOrder($data = []) { $_data = $data; $_data['failreason'] = !empty($data['failreason']) ? $data['failreason'] : ''; if (empty($data)) { return false; } if ($_obj = self::create($_data, true)) { $_sh_data['s_id'] = $_obj->id; $_sh_data['u_id'] = $data['agent_id']; $_sh_data['content'] = '创建提现订单'; (new SettleHistoryModel())->addLog($_sh_data); return $_obj->id; } else { return false; } } /** * 更新单条记录 * * @param array $data * @param int $id * * @return bool */ public function updateData($data, $id) { $_map['id'] = $id; $_data = $data; $_rs = self::update($_data, $_map, true); if (false == $_rs) { return false; } else { return true; } } /** * @param int $id * * @return array|false */ public function getDetail($id) { $_map['id'] = $id; $_data = $this->where($_map)->find(); if (false == $_data) { return false; } if (is_object($_data)) { $_data = $_data->toArray(); } return $_data; } /** * 获取提现总金额 * * @param $agent_id * * @return float|int */ public function getTotalAmount($agent_id) { $_status = [SettleConst::SETTLE_STATUS_OP_CHECK, SettleConst::SETTLE_STATUS_FIN_CHECK, SettleConst::SETTLE_STATUS_OK]; return $this->where('agent_id', '=', $agent_id) ->where('status', 'in', $_status) ->sum('amount'); } /** * 获取提现总金额 * * @param $agent_id * * @return float|int */ public function getSubTotalAmount($agent_id) { $_sub_ids = (new UserModel())->getIdsByParentId($agent_id); if (empty($_sub_ids)) { return 0.00; } $_status = [SettleConst::SETTLE_STATUS_OP_CHECK, SettleConst::SETTLE_STATUS_FIN_CHECK, SettleConst::SETTLE_STATUS_OK]; return $this->where('agent_id', '=', $agent_id) ->where('status', 'in', $_status) ->sum('amount'); } /** * 获取提现次数 * * @param $agent_id * * @return int|string */ public function getCnt($agent_id) { $_map = []; $_map['status'] = ['in', [SettleConst::SETTLE_STATUS_OP_CHECK, SettleConst::SETTLE_STATUS_FIN_CHECK, SettleConst::SETTLE_STATUS_OK, SettleConst::SETTLE_STATUS_QUEUE]]; $_map['agent_id'] = $agent_id; return $this->where($_map)->count(); } }