From 98da00e975886a34d91de99ec59fae9d5d05c966 Mon Sep 17 00:00:00 2001 From: liuchaofu <1873441552@qq.com> Date: Tue, 4 Jun 2024 23:15:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=85=E5=80=BC=E5=92=8C=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E6=9F=A5=E8=AF=A2=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/controller/order/OrderController.php | 16 +++--- app/api/controller/user/UserController.php | 58 ++++++++++++++++---- app/api/lists/order/OrderList.php | 4 +- app/api/logic/order/OrderLogic.php | 1 + app/api/logic/user/UserLogic.php | 15 ++++- app/api/validate/UserValidate.php | 11 ++++ app/common/enum/OrderEnum.php | 6 ++ app/common/model/user/UserRecharge.php | 21 +++++++ 8 files changed, 111 insertions(+), 21 deletions(-) create mode 100644 app/common/model/user/UserRecharge.php diff --git a/app/api/controller/order/OrderController.php b/app/api/controller/order/OrderController.php index 24fe98529..a018b6f11 100644 --- a/app/api/controller/order/OrderController.php +++ b/app/api/controller/order/OrderController.php @@ -2,8 +2,6 @@ namespace app\api\controller\order; -//use app\admin\logic\order\CartLogic; -//use app\admin\logic\retail\StoreOrderLogic; use app\api\logic\order\OrderLogic; use app\api\controller\BaseApiController; use app\api\lists\order\OrderList; @@ -12,12 +10,8 @@ use app\api\validate\OrderValidate; use app\common\enum\PayEnum; use app\common\logic\PaymentLogic; use app\common\logic\PayNotifyLogic; -use app\common\model\order\Cart; use app\common\model\store_order\StoreOrder; -use app\common\model\user\User; use app\common\model\user\UserAddress; -use app\common\service\wechat\WeChatConfigService; -use support\Log; use Webman\RedisQueue\Redis; use hg\apidoc\annotation as ApiDoc; @@ -350,7 +344,15 @@ class OrderController extends BaseApiController } } - //核销 + #[ + ApiDoc\Title('核销'), + ApiDoc\url('/api/order/order/writeoff_order'), + ApiDoc\Method('POST'), + ApiDoc\Param(name: "verify_code", type: "string", require: true, desc: "验证码"), + ApiDoc\NotHeaders(), + ApiDoc\Header(name: "token", type: "string", require: true, desc: "token"), + ApiDoc\ResponseSuccess("data", type: "array"), + ] public function writeoff_order() { $params = (new OrderValidate())->post()->goCheck('check'); diff --git a/app/api/controller/user/UserController.php b/app/api/controller/user/UserController.php index a634504e7..bafb2f34d 100644 --- a/app/api/controller/user/UserController.php +++ b/app/api/controller/user/UserController.php @@ -4,11 +4,13 @@ namespace app\api\controller\user; use app\api\controller\BaseApiController; use app\api\logic\user\UserLogic; -use app\api\validate\PasswordValidate; -use app\api\validate\SetUserInfoValidate; use app\api\validate\UserValidate; +use app\common\enum\PayEnum; +use app\common\logic\PaymentLogic; use hg\apidoc\annotation as ApiDoc; -#[ApiDoc\NotParse()] +use taoser\Validate; + +#[ApiDoc\title('用户')] /** * 用户控制器 @@ -17,14 +19,15 @@ use hg\apidoc\annotation as ApiDoc; */ class UserController extends BaseApiController { - - - /** - * @notes 获取小程序手机号 - * @return - * @author 段誉 - * @date 2022/9/21 16:46 - */ + #[ + ApiDoc\Title('获取小程序手机号'), + ApiDoc\url('/api/user/user/getMobileByMnp'), + ApiDoc\Method('POST'), + ApiDoc\Param(name: "code", type: "string", require: true, desc: "换取手机的code"), + ApiDoc\NotHeaders(), + ApiDoc\Header(name: "token", type: "string", require: true, desc: "token"), + ApiDoc\ResponseSuccess("data", type: "array"), + ] public function getMobileByMnp() { $params = (new UserValidate())->post()->goCheck('getMobileByMnp'); @@ -38,11 +41,44 @@ class UserController extends BaseApiController } + #[ + ApiDoc\Title('用户个人信息'), + ApiDoc\url('/api/user/user/info'), + ApiDoc\Method('POST'), + ApiDoc\Param(), + ApiDoc\NotHeaders(), + ApiDoc\Header(name: "token", type: "string", require: true, desc: "token"), + ApiDoc\ResponseSuccess("data", type: "array"), + ] public function info() { return $this->success('success', UserLogic::info($this->userId)); } + #[ + ApiDoc\Title('小程序充值'), + ApiDoc\url('/api/user/user/recharge'), + ApiDoc\Method('POST'), + ApiDoc\Param(name: "price", type: "string", require: true, desc: "金额"), + ApiDoc\NotHeaders(), + ApiDoc\Header(name: "token", type: "string", require: true, desc: "token"), + ApiDoc\ResponseSuccess("data", type: "array"), + ] + public function recharge() + { + $params = (new UserValidate())->post()->goCheck('rechargeMoney'); + $params['uid'] = $this->userId; + $params['channel_type'] = $this->userInfo['terminal']; + $order = UserLogic::recharge($params); + $redirectUrl = $params['redirect'] ?? '/pages/payment/payment'; + $result = PaymentLogic::pay(PayEnum::WECHAT_PAY, 'StoreOrder', $order, $this->userInfo['terminal'], $redirectUrl); + if (PaymentLogic::hasError()) { + return $this->fail(PaymentLogic::getError(), $params); + } + return $this->success('', $result); + + } + } diff --git a/app/api/lists/order/OrderList.php b/app/api/lists/order/OrderList.php index 895e56dc9..8c9eadd3d 100644 --- a/app/api/lists/order/OrderList.php +++ b/app/api/lists/order/OrderList.php @@ -25,7 +25,7 @@ class OrderList extends BaseAdminDataLists implements ListsSearchInterface public function setSearch(): array { return [ - '=' => ['paid','status'], + '=' => ['paid','status','is_writeoff'], 'between_time' => 'create_time', '%like%' => ['order_id'], ]; @@ -44,7 +44,7 @@ class OrderList extends BaseAdminDataLists implements ListsSearchInterface { $userId=$this->request->userId; if(!$userId) return []; - return StoreOrder::where($this->searchWhere)->where('uid',$userId) + return StoreOrder::with(['store'])->where($this->searchWhere)->where('uid',$userId) ->limit($this->limitOffset, $this->limitLength) ->order(['id' => 'desc']) ->select() diff --git a/app/api/logic/order/OrderLogic.php b/app/api/logic/order/OrderLogic.php index 48e04bf44..51d663bb5 100644 --- a/app/api/logic/order/OrderLogic.php +++ b/app/api/logic/order/OrderLogic.php @@ -416,6 +416,7 @@ class OrderLogic extends BaseLogic try { StoreOrder::update([ 'status' => OrderEnum::RECEIVED_GOODS, + 'is_writeoff' => OrderEnum::IS_OK, 'update_time' => time(), ], ['id' => $data['id']]); (new StoreOrderCartInfo())->update([ diff --git a/app/api/logic/user/UserLogic.php b/app/api/logic/user/UserLogic.php index 75ffdb475..72017f7b9 100644 --- a/app/api/logic/user/UserLogic.php +++ b/app/api/logic/user/UserLogic.php @@ -3,7 +3,11 @@ namespace app\api\logic\user; -use app\common\{logic\BaseLogic, model\system_store\SystemStore, model\user\User, service\wechat\WeChatMnpService}; +use app\common\{logic\BaseLogic, + model\system_store\SystemStore, + model\user\User, + model\user\UserRecharge, + service\wechat\WeChatMnpService}; /** * 会员逻辑层 @@ -78,4 +82,13 @@ class UserLogic extends BaseLogic } + public static function recharge($param) + { + $param['order_id'] = getNewOrderId('rc'); + $param['recharge_type'] = 'wechat'; + return UserRecharge::create($param); + + } + + } \ No newline at end of file diff --git a/app/api/validate/UserValidate.php b/app/api/validate/UserValidate.php index 0f8bf14dc..ddc907b23 100644 --- a/app/api/validate/UserValidate.php +++ b/app/api/validate/UserValidate.php @@ -47,4 +47,15 @@ class UserValidate extends BaseValidate } + /** + * @notes 充值 + * @return UserValidate + * @author: codeliu + * @Time: 2024/6/4 22:50 + */ + public function sceneRechargeMoney() + { + return $this->only(['price']); + } + } \ No newline at end of file diff --git a/app/common/enum/OrderEnum.php b/app/common/enum/OrderEnum.php index c10fef0c0..43dceeedd 100644 --- a/app/common/enum/OrderEnum.php +++ b/app/common/enum/OrderEnum.php @@ -47,6 +47,12 @@ class OrderEnum const RECEIVED_GOODS = 2; + /** + * 核销 + * @IS_OK 已核销 + */ + const IS_OK = 1; + /** * 账户类型 * @USER 用户 diff --git a/app/common/model/user/UserRecharge.php b/app/common/model/user/UserRecharge.php new file mode 100644 index 000000000..7876c81f9 --- /dev/null +++ b/app/common/model/user/UserRecharge.php @@ -0,0 +1,21 @@ +