|
|
@@ -7,6 +7,9 @@ use app\extra\tools\UploadExtend;
|
|
|
use app\middleware\AuthMiddleware;
|
|
|
use app\model\saas\SaasChatMsg;
|
|
|
use app\model\saas\SaasChatStore;
|
|
|
+use app\model\saas\SaasOrder;
|
|
|
+use app\model\saas\SaasOrderAddress;
|
|
|
+use app\model\saas\SaasOrderDelay;
|
|
|
use app\model\saas\SaasStore;
|
|
|
use app\model\system\SystemUser;
|
|
|
use app\service\saas\ChatStoreService;
|
|
|
@@ -18,6 +21,7 @@ use LinFly\Annotation\Attributes\Route\PostMapping;
|
|
|
use support\Request;
|
|
|
use support\Response;
|
|
|
use Webman\Push\Api;
|
|
|
+use Webman\RedisQueue\Redis;
|
|
|
use function DI\get;
|
|
|
|
|
|
|
|
|
@@ -269,9 +273,50 @@ class Service extends Base
|
|
|
public function setOrderAddress(Request $request): Response
|
|
|
{
|
|
|
try {
|
|
|
- $param = $request->all();
|
|
|
- print_r($param);
|
|
|
-
|
|
|
+ $param = $this->_valid([
|
|
|
+ "city.require" => trans("empty.require"),
|
|
|
+ "mobile.require" => trans("empty.require"),
|
|
|
+ "mobile.mobile" => trans("error.mobile"),
|
|
|
+ "address.require" => trans("empty.require"),
|
|
|
+ "nickname.require" => trans("empty.require"),
|
|
|
+ "order.require" => trans("empty.require"),
|
|
|
+ ],$request->method());
|
|
|
+ if (!is_array($param)) return error($param);
|
|
|
+ $cityJson = json_decode($param['city'],true);
|
|
|
+ $cityCode = [];
|
|
|
+ foreach ($cityJson as $k => $v){
|
|
|
+ $cityCode[$k] = $v['value'];
|
|
|
+ $param['city_text'] .= $v['text'];
|
|
|
+ }
|
|
|
+ $param['city_code'] = json_encode($cityCode);
|
|
|
+ $orderData = json_decode($param['order'],true);
|
|
|
+ $order = (new SaasOrder)->where("out_trade_no",$orderData["order"])->with(['poi'])->findOrEmpty();
|
|
|
+ if ($order->isEmpty()) return error("关联订单错误");
|
|
|
+ if ($order['openid'] <> $request->user['openid']) return error("关联订单错误");
|
|
|
+ if ($order['status'] <> 1) return error("关联订单错误");
|
|
|
+ $startTime = $order['poi']['order_start']??'09:00';
|
|
|
+ $endTime = $order['poi']['order_end']??'22:30';
|
|
|
+ $startTimeStamp = strtotime("Y-m-d {$startTime}:00");
|
|
|
+ $endTimeStamp = strtotime("Y-m-d {$endTime}:00");
|
|
|
+ $address = (new SaasOrderAddress)->where(['openid' => $request->user['openid'],'order_sn' => $orderData['order']])->findOrEmpty();
|
|
|
+ if (!$address->isEmpty()) return error("请勿重复提交");
|
|
|
+ $address->insertGetId([
|
|
|
+ "openid" => $request->user['openid'],
|
|
|
+ "order_sn" => $orderData['order'],
|
|
|
+ "city_code" => $param['city_code'],
|
|
|
+ "city_text" => $param['city_text'],
|
|
|
+ "mobile" => $param['mobile'],
|
|
|
+ "address" => $param['address'],
|
|
|
+ "nickname" => $param['nickname'],
|
|
|
+ ]);
|
|
|
+ // 判断是否在核销范围
|
|
|
+ if (time() > $startTimeStamp && time() < $endTimeStamp) { // 自动核销,订单状态改成待发货
|
|
|
+ Redis::send("order-done",['order' => $orderData['order']]);
|
|
|
+ } else { // 写入待核销定时任务队列中
|
|
|
+ (new SaasOrderDelay)->insertGetId([
|
|
|
+ "order_sn" => $orderData['order'],
|
|
|
+ ]);
|
|
|
+ }
|
|
|
return success("提交成功");
|
|
|
} catch (\Throwable $throwable) {
|
|
|
echo $throwable->getMessage()."\n";
|