'待签约', self::STATUS_SIGNED => '已签约', self::STATUS_WAIT_RECHARGE => '待充值', self::STATUS_RECHARGE_ING => '充值中', self::STATUS_RECHARGE_SUCCESS => '已完成', self::STATUS_RECHARGE_FAIL => '充值失败', self::STATUS_RECHARGE_CLOSE => '已取消' ]; /** * 根据userId获取连续包月的订单数 * @param int $userId * @return int * @throws \think\db\exception\DbException */ public static function getMonthOrderCountByUserId(int $userId): int { return self::where(['user_id' => $userId, 'type' => self::PRODUCT_TYPE_BAO_YUE, 'pay_status' => self::PAY_STATUS_PAID])->count(); } public static function updateChangeData($data, $orderNumber) { return self::where('order_number', $orderNumber)->update($data); } /** * 根据用户id查询已支付连续扣款订单 * @param int $userId * @return Order|array|mixed|Model * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\ModelNotFoundException */ public static function getOneMonthByUserId(int $userId) { return self::where(['user_id' => $userId, 'type' => self::PRODUCT_TYPE_BAO_YUE, 'pay_status' => self::PAY_STATUS_PAID ])->findOrFail(); } /** * 根据订单号获取订单信息 * @param string $orderNumber * @param string $field * @return Order|array|mixed|Model */ public static function getByOrderNumber(string $orderNumber, string $field = '*') { return self::where('order_number', $orderNumber)->field($field)->findOrEmpty(); } public function searchOrderNumberAttr($query, $value, $data) { if (!empty($value)) { $query->where('order_number', $value); } } public function searchTypeAttr($query, $value, $data) { if (!empty($value)) { $query->where('type', $value); } } public function getWaitSignOrderByUserId(int $userId) { return self::where(['user_id' => $userId, 'order_status' => Order::STATUS_WAIT_SIGN])->findOrEmpty(); } public function searchUserIdAttr($query, $value, $data) { if (!empty($value)) { $query->where('user_id', $value); } } /** * 根据账号获取该账号近一年是否已经签约扣过款 * @param string $account * @return int * @throws \think\db\exception\DbException */ public static function getAgreeOrderLastYearByAccount(string $account) { return self::where('account', $account)->whereIn('order_status', [2,3,4])->whereTime('create_time', '-1 year')->count(); } /** * 根据userId 获取该账号近一年是否已经扣过款 * @param int $userId * @return int * @throws \think\db\exception\DbException */ public static function getAgreeOrderLastYearByUserId(int $userId) { return self::where('user_id', $userId)->whereIn('order_status', [2,3,4])->whereTime('create_time', '-1 year')->count(); } /** * 根据协议号获取待签约订单 * @param string $agreementId * @return Order|array|mixed|Model */ public static function getWaitSignByAgreementId(string $agreementId) { return self::where(['agreement_id' => $agreementId, 'order_status' => Order::STATUS_WAIT_SIGN])->findOrEmpty(); } /** * 根据协议号获取最近一次扣款订单 * @param string $agreementId * @return Order|array|mixed|Mode */ public static function getPaidOrderByAgreementId(string $agreementId) { return self::where(['agreement_id' => $agreementId])->order('id', 'desc')->findOrEmpty(); } /** * 获取该签约生成扣款订单次数 * @param string $agreementId * @return int * @throws \think\db\exception\DbException */ public static function getCountByAgreementId(string $agreementId) { return self::where(['agreement_id' => $agreementId])->count(); } /** * 最近一个月订单数量 * @return int * @throws \think\db\exception\DbException */ public function getCountLastMonth() { return self::where('order_status', Order::STATUS_RECHARGE_SUCCESS)->whereTime('create_time', '-1 month')->count(); } public static function getByAgreementId(string $agreementId) { return self::where(['agreement_id' => $agreementId])->findOrEmpty(); } }