<?php namespace app\repository; use app\exception\RepositoryException; use app\model\Account; use app\service\Repository; use app\traits\account\ApplyStaffTrait; use app\traits\account\BusinessFlowTrait; use app\traits\CommentTrait; use app\traits\CouponBillTrait; use app\traits\CouponTrait; use think\db\exception\DataNotFoundException; use think\db\exception\DbException; use think\db\exception\ModelNotFoundException; use think\Model; /** * 账户域 相关操作(客户账号) * * Class AccountRepository * @package app\repository * @method self getInstance(Model $model = null) static */ class AccountRepository extends Repository { use CommentTrait; use BusinessFlowTrait; use CouponTrait; use CouponBillTrait; use ApplyStaffTrait; /** * 获取指定账户记录By手机号 * * @param string $phone * @param array $fields * @return Model|null * @throws DataNotFoundException * @throws DbException * @throws ModelNotFoundException */ public function infoByPhone(string $phone, array $fields = []): ?Model { $where[] = ['mobile', '=', $phone]; return $this->findOneByWhere($where, $fields); } /** * 获取指定账户记录By用户名 * * @param string $username * @param array $fields * @return Model|null * @throws DataNotFoundException * @throws DbException * @throws ModelNotFoundException */ public function infoByUsername(string $username, array $fields = []): ?Model { $where[] = ['username', '=', $username]; return $this->findOneByWhere($where, $fields); } /** * 通过微信小程序的openID查询 * * @param string $openID * @return array|Model|null * @throws DataNotFoundException * @throws DbException * @throws ModelNotFoundException */ public function findByOpenID(string $openID) { return $this->model->where('open_id', $openID)->find(); } /** * 修改密码 * * @param int $accountId * @param string $oldPwd * @param string $newPwd * @return bool * @throws RepositoryException */ public function modifyPwd(int $accountId, string $oldPwd, string $newPwd): bool { if (!$user = $this->findById($accountId)) { throw new RepositoryException('用户不存在'); } if ($user['password'] != md5($oldPwd)) { throw new RepositoryException('原密码错误'); } $user->password = md5($newPwd); return $user->save(); } }