hasMany('app\\common\\model\\agent\\Client','agent_id','agent_id'); } /** * 获取应用信息 */ public static function detail($agent_id) { return (new static())->find($agent_id); } /** * 从缓存中获取app信息 */ public static function getAgentCache($agent_id = null) { if (is_null($agent_id)) { $self = new static(); $agent_id = $self::$agent_id; } if (!$data = Cache::get('app_' . $agent_id)) { $data = self::detail($agent_id); if (empty($data)) throw new BaseException(['msg' => '未找到当前应用信息']); Cache::tag('cache')->set('app_' . $agent_id, $data); } return $data; } /** * 启用商城 * @return bool */ public function updateStatus() { return $this->save([ 'status' => !$this['status'], ]); } /** * 所有商城 */ public static function getAll(){ return (new self())->where('is_delete', '=', 0) ->where('is_recycle', '=', 0) ->select(); } /** * 用户充值 */ public function recharge($storeUserName, $source, $data) { if ($source == 0) { return $this->rechargeToBalance($storeUserName, $data['balance']); } elseif ($source == 1) { return $this->rechargeToPoints($storeUserName, $data['points']); } return false; } /** * 用户充值:余额 */ private function rechargeToBalance($storeUserName, $data) { if (!isset($data['money']) || $data['money'] === '' || $data['money'] < 0) { $this->error = '请输入正确的金额'; return false; } // 判断充值方式,计算最终金额 $money = 0; if ($data['mode'] === 'inc') { $diffMoney = $this['balance'] + $data['money']; $money = $data['money']; } elseif ($data['mode'] === 'dec') { $diffMoney = $this['balance'] - $data['money'] <= 0 ? 0 : $this['balance'] - $data['money']; $money = -$data['money']; } else { $diffMoney = $data['money']; $money = $diffMoney - $this['balance']; } // 更新记录 $this->transaction(function () use ($storeUserName, $data, $diffMoney, $money) { // 更新账户余额 $this->where('agent_id', '=', $this['agent_id'])->update(['balance' => $diffMoney]); // 新增余额变动记录 BalanceLogModel::add(30, [ 'agent_id' => $this['agent_id'], 'money' => $money, 'remark' => $data['remark'], ], [$storeUserName]); }); return true; } }