|
|
@@ -151,8 +151,6 @@ class AdvertOrderService extends BaseService
|
|
|
];
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
/**
|
|
|
* 购买
|
|
|
* @param $userId
|
|
|
@@ -548,6 +546,297 @@ class AdvertOrderService extends BaseService
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 订单打款处理
|
|
|
+ * @param $userId 用户ID
|
|
|
+ * @param $params 打款参数
|
|
|
+ * @return false
|
|
|
+ */
|
|
|
+ public function pay($userId, $params)
|
|
|
+ {
|
|
|
+ $orderId = isset($params['id']) ? $params['id'] : 0;
|
|
|
+ if ($orderId <= 0) {
|
|
|
+ $this->error = '1013';
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ $orderInfo = $this->model->where(['user_id' => $userId, 'id' => $orderId, 'mark' => 1, 'type' => 1])
|
|
|
+ ->whereIn('status', [1, 2, 5, 7])
|
|
|
+ ->select(['id', 'order_no', 'business_id', 'type', 'payment_id', 'num', 'total', 'status'])
|
|
|
+ ->first();
|
|
|
+ $tradeType = isset($orderInfo['type']) ? $orderInfo['type'] : 0;
|
|
|
+ if (empty($orderInfo)) {
|
|
|
+ $this->error = '3016';
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if ($tradeType != 1) {
|
|
|
+ $this->error = '3024';
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 用户信息
|
|
|
+ $userInfo = MemberService::make()->getInfo($userId);
|
|
|
+ $status = isset($userInfo['status']) ? $userInfo['status'] : 0;
|
|
|
+ if ($status != 1) {
|
|
|
+ $this->error = '2009';
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 交易密码
|
|
|
+ $tradePassword = isset($params['trade_password']) ? trim($params['trade_password']) : '';
|
|
|
+ $password = isset($userInfo['trade_password']) ? trim($userInfo['trade_password']) : '';
|
|
|
+ if (empty($password)) {
|
|
|
+ $this->error = '2015';
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!$tradePassword || get_password($tradePassword . md5($tradePassword . 'otc')) != $password) {
|
|
|
+ $this->error = '2016';
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ $data = [
|
|
|
+ 'status' => 3,
|
|
|
+ 'pay_type' => $params['pay_type'],
|
|
|
+ 'pay_img' => $params['pay_img'],
|
|
|
+ 'pay_remark' => $params['pay_remark'],
|
|
|
+ 'pay_time' => time(),
|
|
|
+ ];
|
|
|
+
|
|
|
+ if (!$this->model->where(['user_id' => $userId, 'id' => $orderId, 'mark' => 1])->update($data)) {
|
|
|
+ $this->error = '3018';
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 订单确认处理
|
|
|
+ * @param $userId 用户ID
|
|
|
+ * @param $params 打款参数
|
|
|
+ * @return false
|
|
|
+ */
|
|
|
+ public function collection($userId, $params)
|
|
|
+ {
|
|
|
+ $orderId = isset($params['id']) ? $params['id'] : 0;
|
|
|
+ if ($orderId <= 0) {
|
|
|
+ $this->error = '1013';
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ $orderInfo = $this->model->where(['user_id' => $userId, 'id' => $orderId, 'mark' => 1, 'type' => 2])
|
|
|
+ ->select(['id', 'user_id', 'order_no', 'business_id', 'payment_id', 'type', 'num', 'total', 'status'])
|
|
|
+ ->first();
|
|
|
+ $businessId = isset($orderInfo['business_id']) ? $orderInfo['business_id'] : 0;
|
|
|
+ $tradeType = isset($orderInfo['type']) ? $orderInfo['type'] : 0;
|
|
|
+ if (empty($orderInfo) || empty($businessId)) {
|
|
|
+ $this->error = '3016';
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($orderInfo['status'] != 3) {
|
|
|
+ $this->error = '3026';
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($tradeType != 2) {
|
|
|
+ $this->error = '3024';
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ $this->model->startTrans();
|
|
|
+ // 订单状态更新
|
|
|
+ if (!$this->model->where(['user_id' => $userId, 'id' => $orderId, 'mark' => 1])->update(['status' => 4, 'update_time' => time()])) {
|
|
|
+ $this->model->rollBack();
|
|
|
+ $this->error = '3023';
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 交易处理
|
|
|
+ if ($orderInfo['num'] > 0) {
|
|
|
+ $info = $this->memberModel->where(['id' => $businessId, 'status' => 1, 'mark' => 1])->select(['id', 'username','usdt_num', 'user_type'])->first();
|
|
|
+ if (empty($info)) {
|
|
|
+ $this->model->rollBack();
|
|
|
+ $this->error = '3019';
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 商家进币
|
|
|
+ if (!$this->memberModel->where(['id' => $businessId, 'mark' => 1])->increment('usdt_num', $orderInfo['num'])) {
|
|
|
+ $this->model->rollBack();
|
|
|
+ $this->error = '3019';
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 明细处理
|
|
|
+ $data = [
|
|
|
+ 'order_no' => $orderInfo['order_no'],
|
|
|
+ 'user_id' => $businessId,
|
|
|
+ 'type' => 1,
|
|
|
+ 'trade_type' => 2,
|
|
|
+ 'pay_type' => 1,
|
|
|
+ 'change_type' => 1,
|
|
|
+ 'num' => $orderInfo['num'],
|
|
|
+ 'total' => $orderInfo['total'],
|
|
|
+ 'balance' => floatval($info['usdt_num'] + $orderInfo['num']),
|
|
|
+ 'create_time' => time(),
|
|
|
+ 'remark' => '交易员购买广告',
|
|
|
+ 'status' => 1,
|
|
|
+ 'mark' => 1,
|
|
|
+ ];
|
|
|
+
|
|
|
+ if (!$this->capitalModel->edit($data)) {
|
|
|
+ $this->error = '3014';
|
|
|
+ $this->model->rollBack();
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ $this->model->commit();
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 取消订单
|
|
|
+ * @param $userId
|
|
|
+ * @param $params
|
|
|
+ * @return false
|
|
|
+ */
|
|
|
+ public function cancel($userId, $params)
|
|
|
+ {
|
|
|
+ $orderId = isset($params['id']) ? intval($params['id']) : 0;
|
|
|
+ if ($orderId <= 0) {
|
|
|
+ $this->error = '1013';
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ $orderInfo = $this->model->where(['user_id' => $userId, 'id' => $orderId, 'mark' => 1])
|
|
|
+ ->select(['id', 'order_no', 'business_id', 'type', 'num', 'total', 'status'])
|
|
|
+ ->first();
|
|
|
+
|
|
|
+ $tradeType = isset($orderInfo['type']) ? $orderInfo['type'] : 0;
|
|
|
+ $businessId = isset($orderInfo['business_id']) ? $orderInfo['business_id'] : 0;
|
|
|
+ if (empty($orderInfo) || $businessId<=0) {
|
|
|
+ $this->error = '3016';
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($orderInfo['status'] == 3) {
|
|
|
+ $this->error = '3027';
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($orderInfo['status'] == 4) {
|
|
|
+ $this->error = '3028';
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($orderInfo['status'] == 7) {
|
|
|
+ $this->error = '3030';
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!in_array($orderInfo['status'], [1, 2])) {
|
|
|
+ $this->error = '3029';
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ $this->model->startTrans();
|
|
|
+ // 订单状态更新
|
|
|
+ $updateData = ['status' => 8, 'update_time' => time(), 'exception_remark' => '客户取消'];
|
|
|
+ if (!$this->model->where(['user_id' => $userId, 'id' => $orderId, 'mark' => 1])->update($updateData)) {
|
|
|
+ $this->model->rollBack();
|
|
|
+ $this->error = '3023';
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 出售订单,USDT退回
|
|
|
+ if ($tradeType == 2 && $orderInfo['num']>0) {
|
|
|
+ $info = $this->memberModel->where(['id' => $userId, 'status' => 1, 'mark' => 1])->select(['id', 'username', 'usdt_num', 'user_type'])->first();
|
|
|
+ if (empty($info)) {
|
|
|
+ $this->model->rollBack();
|
|
|
+ $this->error = '3019';
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 退还币给客户
|
|
|
+ if (!$this->memberModel->where(['id' => $userId, 'mark' => 1])->increment('usdt_num', $orderInfo['num'])) {
|
|
|
+ $this->model->rollBack();
|
|
|
+ $this->error = '3019';
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 明细处理
|
|
|
+ $data = [
|
|
|
+ 'order_no' => $orderInfo['order_no'],
|
|
|
+ 'user_id' => $userId,
|
|
|
+ 'type' => 3,
|
|
|
+ 'trade_type' => 2,
|
|
|
+ 'pay_type' => 1,
|
|
|
+ 'change_type' => 1,
|
|
|
+ 'num' => $orderInfo['num'],
|
|
|
+ 'total' => $orderInfo['total'],
|
|
|
+ 'balance' => floatval($info['usdt_num'] + $orderInfo['num']),
|
|
|
+ 'create_time' => time(),
|
|
|
+ 'update_time' => time(),
|
|
|
+ 'remark' => '客户取消退还',
|
|
|
+ 'status' => 1,
|
|
|
+ 'mark' => 1,
|
|
|
+ ];
|
|
|
+
|
|
|
+ if (!$this->capitalModel->edit($data)) {
|
|
|
+ $this->error = '3014';
|
|
|
+ $this->model->rollBack();
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 买入取消
|
|
|
+ else if($tradeType == 1 && $orderInfo['num']>0){
|
|
|
+ $info = $this->memberModel->where(['id' => $businessId, 'status' => 1, 'mark' => 1])->select(['id', 'username', 'usdt_num', 'user_type'])->first();
|
|
|
+ if (empty($info)) {
|
|
|
+ $this->model->rollBack();
|
|
|
+ $this->error = '3019';
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 退还币给币商
|
|
|
+ if (!$this->memberModel->where(['id' => $businessId, 'mark' => 1])->increment('usdt_num', $orderInfo['num'])) {
|
|
|
+ $this->model->rollBack();
|
|
|
+ $this->error = '3019';
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 明细处理
|
|
|
+ $data = [
|
|
|
+ 'order_no' => $orderInfo['order_no'],
|
|
|
+ 'user_id' => $businessId,
|
|
|
+ 'type' => 3,
|
|
|
+ 'trade_type' => 2,
|
|
|
+ 'pay_type' => 1,
|
|
|
+ 'change_type' => 1,
|
|
|
+ 'num' => $orderInfo['num'],
|
|
|
+ 'total' => $orderInfo['total'],
|
|
|
+ 'balance' => floatval($info['usdt_num'] + $orderInfo['num']),
|
|
|
+ 'create_time' => time(),
|
|
|
+ 'update_time' => time(),
|
|
|
+ 'remark' => '客户取消退还',
|
|
|
+ 'status' => 1,
|
|
|
+ 'mark' => 1,
|
|
|
+ ];
|
|
|
+
|
|
|
+ if (!$this->capitalModel->edit($data)) {
|
|
|
+ $this->error = '3014';
|
|
|
+ $this->model->rollBack();
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ $this->model->commit();
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* 获取未支付或处理的订单数
|
|
|
* @param $userId
|
|
|
* @param int $type
|
|
|
@@ -560,7 +849,6 @@ class AdvertOrderService extends BaseService
|
|
|
->count('id');
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/**
|
|
|
* 自动取消广告订单处理
|
|
|
* @return false
|