|
@@ -36,6 +36,7 @@ use support\exception\BusinessException;
|
|
|
use support\Redis;
|
|
|
use support\Request;
|
|
|
use support\Response;
|
|
|
+use Webman\Event\Event;
|
|
|
use Yansongda\Pay\Pay;
|
|
|
use function Qiniu\Http\Middleware\compose;
|
|
|
|
|
@@ -69,7 +70,7 @@ class WholeController extends Curd
|
|
|
|
|
|
if (!empty($where['order_status_system']) && in_array($where['order_status_system'], ['PENDING', 'WAITING', 'SENDING', 'RECVING', 'SIGNED', 'CONFIRM'])) {
|
|
|
$where['order_is_complete'] = 'N';
|
|
|
- $where['order_category'] = isset($where['order_category']) ? $where['order_category'] : 'NORMAL';
|
|
|
+ $where['order_category'] = isset($where['order_category']) ? $where['order_category'] : ['in','SYSTEM,NORMAL'];
|
|
|
}
|
|
|
|
|
|
if (!empty($where['order_status_system']) && $where['order_status_system'] == 'RETURN') {
|
|
@@ -237,11 +238,16 @@ class WholeController extends Curd
|
|
|
$configJson = !empty($component['goods_component_json']) ? json_decode($component['goods_component_json'], true) : [];
|
|
|
if (!empty($component['goods'])) {
|
|
|
$supplierName = Supplier::where('supplier_id', $component['goods']['join_goods_supplier_id'])->value('supplier_name');
|
|
|
+ $benefit = MemberBenefit::where('join_benefit_member_id',$item['join_sheet_member_id'])
|
|
|
+ ->where('join_benefit_goods_id',$component['goods']['goods_id'])
|
|
|
+ ->where('join_benefit_order_id',$orderId)
|
|
|
+ ->first();
|
|
|
$goodsArr[] = [
|
|
|
'goods_name' => $component['goods']['goods_name'],
|
|
|
'goods_cover' => getenv('STORAGE_DOMAIN') . $component['goods']['goods_cover'],
|
|
|
'supplier_name' => $supplierName,
|
|
|
'nbr' => $configJson['nbr'] ?? 0,
|
|
|
+ 'used' => !empty($benefit->member_benefit_used_count) ? intval($benefit->member_benefit_used_count) : ''
|
|
|
];
|
|
|
}
|
|
|
}
|
|
@@ -266,39 +272,41 @@ class WholeController extends Curd
|
|
|
}
|
|
|
|
|
|
}
|
|
|
- if ($item['goods']['goods_classify'] == 'SERVICE') {
|
|
|
- $benifit = MemberBenefit::where('join_benefit_member_id', $item['join_sheet_member_id'])
|
|
|
+ if (in_array($item['goods']['goods_classify'],['SERVICE','CHNMED','CHNNCD','PACKAGE'])) {
|
|
|
+ $benifits = MemberBenefit::where('join_benefit_member_id', $item['join_sheet_member_id'])
|
|
|
->where('join_benefit_order_id', $orderId)
|
|
|
- ->first();
|
|
|
- if (!empty($benifit)) {
|
|
|
- $item['benefit'] = [
|
|
|
- 'total' => intval($benifit->member_benefit_limit_count),
|
|
|
- 'used' => intval($benifit->member_benefit_used_count),
|
|
|
- 'cut' => $benifit->member_benefit_limit_count - $benifit->member_benefit_used_count,
|
|
|
- ];
|
|
|
- $appontments = Appointment::where('join_appointment_member_benefit_id', $benifit->member_benefit_id)
|
|
|
- ->where('appointment_status', 'DONE')
|
|
|
- ->select('appointment_id', 'appointment_done_datetime', 'appointment_done_json')
|
|
|
- ->get()
|
|
|
- ->toArray();
|
|
|
+ ->get();
|
|
|
+ if (!empty($benifits)) {
|
|
|
$item['appontment'] = [];
|
|
|
- foreach ($appontments as $appontment) {
|
|
|
- $doneJson = [];
|
|
|
- $username = '';
|
|
|
- if (!empty($appontment['appointment_done_json'])) {
|
|
|
- $doneJson = json_decode($appontment['appointment_done_json'], true);
|
|
|
- if (isset($doneJson['charge'])) {
|
|
|
- $username = SysUser::where('user_id', $doneJson['charge']['charge_user_id'])->value('user_name');
|
|
|
+ foreach($benifits as $benifit){
|
|
|
+ $item['benefit'] = [
|
|
|
+ 'total' => intval($benifit->member_benefit_limit_count),
|
|
|
+ 'used' => intval($benifit->member_benefit_used_count),
|
|
|
+ 'cut' => $benifit->member_benefit_limit_count - $benifit->member_benefit_used_count,
|
|
|
+ ];
|
|
|
+ $appontments = Appointment::where('join_appointment_member_benefit_id', $benifit->member_benefit_id)
|
|
|
+ ->where('appointment_status', 'DONE')
|
|
|
+ ->select('appointment_id', 'appointment_done_datetime', 'appointment_done_json')
|
|
|
+ ->get()
|
|
|
+ ->toArray();
|
|
|
+ foreach ($appontments as $appontment) {
|
|
|
+ $doneJson = [];
|
|
|
+ $username = '';
|
|
|
+ if (!empty($appontment['appointment_done_json'])) {
|
|
|
+ $doneJson = json_decode($appontment['appointment_done_json'], true);
|
|
|
+ if (isset($doneJson['charge'])) {
|
|
|
+ $username = SysUser::where('user_id', $doneJson['charge']['charge_user_id'])->value('user_name');
|
|
|
+ }
|
|
|
}
|
|
|
+ $item['appontment'][] = [
|
|
|
+ 'member' => ($item['cert'] ? $item['cert']['member_cert_name'] . '-' : '') . ($item['member'] ? $item['member']['member_mobile'] : ''),
|
|
|
+ 'goods_name' => $item['goods']['goods_name'].'-'.$benifit->member_benefit_name,
|
|
|
+ 'premisses' => isset($doneJson['charge']) ? $doneJson['charge']['charge_premises'] : '',
|
|
|
+ 'username' => $username,
|
|
|
+ 'nbr' => 1,
|
|
|
+ 'done_time' => $appontment['appointment_done_datetime']
|
|
|
+ ];
|
|
|
}
|
|
|
- $item['appontment'][] = [
|
|
|
- 'member' => ($item['cert'] ? $item['cert']['member_cert_name'] . '-' : '') . ($item['member'] ? $item['member']['member_mobile'] : ''),
|
|
|
- 'goods_name' => $item['goods']['goods_name'],
|
|
|
- 'premisses' => isset($doneJson['charge']) ? $doneJson['charge']['charge_premises'] : '',
|
|
|
- 'username' => $username,
|
|
|
- 'nbr' => 1,
|
|
|
- 'done_time' => $appontment['appointment_done_datetime']
|
|
|
- ];
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -595,7 +603,7 @@ class WholeController extends Curd
|
|
|
$this->saveExpress($params);
|
|
|
}
|
|
|
// 买的单个服务
|
|
|
- if ($goods['goods_classify'] == 'SERVICE') {
|
|
|
+ if (in_array($goods['goods_classify'],['SERVICE','CHNMED','CHNNCD'])) {
|
|
|
// 预约表
|
|
|
for ($i = 0; $i < intval($params['order_sheet_num']); $i++) {
|
|
|
$params['appointmentId'] = 'AP' . date('YmdHis') . random_string(6, 'up');
|
|
@@ -603,7 +611,7 @@ class WholeController extends Curd
|
|
|
$this->insertAppointment($params, $writeOffDate);
|
|
|
}
|
|
|
$goods['skuId'] = $params['join_sheet_goods_sku_id'];
|
|
|
- $goods['category'] = 'SERVICE';
|
|
|
+ $goods['category'] = $goods['goods_classify'];
|
|
|
// 权益表
|
|
|
$this->insertMemberBenefit($params, $goods);
|
|
|
} elseif ($goods['goods_classify'] == 'PACKAGE') { // 一个套餐买多个
|
|
@@ -851,12 +859,16 @@ class WholeController extends Curd
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * @Desc 发货
|
|
|
+ * @Author Gorden
|
|
|
+ * @Date 2024/7/16 8:43
|
|
|
+ *
|
|
|
+ * @param Request $request
|
|
|
+ * @return Response
|
|
|
+ */
|
|
|
public function delivery(Request $request)
|
|
|
{
|
|
|
- if (!Order::where('order_id', $request->post('order_id'))->where('order_status_system', 'SENDING')->exists()) {
|
|
|
- return json_fail('订单状态异常');
|
|
|
- }
|
|
|
-
|
|
|
// 验证
|
|
|
$validate = new OrderExpressValidate();
|
|
|
if (!$validate->scene('delivery')->check($request->post())) {
|
|
@@ -879,14 +891,15 @@ class WholeController extends Curd
|
|
|
$params['order_express_addtimes'] = strtotime($params['order_express_addtimes']);
|
|
|
|
|
|
$orderData = [
|
|
|
+ 'order_is_complete' => 'Y',
|
|
|
'order_status_system' => 'CONFIRM',
|
|
|
- 'order_status_storage' => 'EXPRESSING'
|
|
|
+ 'order_status_storage' => 'DONE'
|
|
|
];
|
|
|
|
|
|
// 7天后自动完成
|
|
|
- $redis = Redis::connection();
|
|
|
- $key = Order::AUTOMATIC_COMPLETE_PREFIX . date('Ymd', strtotime("+7 days"));
|
|
|
- $redis->sadd($key, $params['order_id']);
|
|
|
+// $redis = Redis::connection();
|
|
|
+// $key = Order::AUTOMATIC_COMPLETE_PREFIX . date('Ymd', strtotime("+7 days"));
|
|
|
+// $redis->sadd($key, $params['order_id']);
|
|
|
|
|
|
// $model = new OrderExpress();
|
|
|
$model = OrderExpress::where('join_express_order_id', $params['order_id'])->first();
|
|
@@ -899,9 +912,9 @@ class WholeController extends Curd
|
|
|
'order_status_storage' => 'EXPRESSING'
|
|
|
];
|
|
|
|
|
|
- // 15天后自动确认收货
|
|
|
+ // 15天后自动完成订单
|
|
|
$redis = Redis::connection();
|
|
|
- $key = Order::AUTOMATIC_RECEIPT_PREFIX . date('Ymd', strtotime("+15 days"));
|
|
|
+ $key = Order::AUTOMATIC_COMPLETE_PREFIX . date('Ymd', strtotime("+15 days"));
|
|
|
$redis->sadd($key, $params['order_id']);
|
|
|
|
|
|
$model = OrderExpress::where('join_express_order_id', $params['order_id'])->first();
|
|
@@ -952,6 +965,9 @@ class WholeController extends Curd
|
|
|
$model->order_express_addtimes = $params['order_express_addtimes'] ?? time();
|
|
|
$model->save();
|
|
|
|
|
|
+ // 事件通知
|
|
|
+ Event::dispatch('client_message.delivery',$params);
|
|
|
+
|
|
|
Db::commit();
|
|
|
|
|
|
_syslog("订单","发货成功");
|
|
@@ -1108,6 +1124,10 @@ class WholeController extends Curd
|
|
|
if (!$memberId || empty($benefitList)) {
|
|
|
return json_fail('参数异常');
|
|
|
}
|
|
|
+ if (empty($code)){
|
|
|
+ return json_fail('请输入验证码');
|
|
|
+ }
|
|
|
+
|
|
|
$benefitIds = [];
|
|
|
foreach($benefitList as $benefit){
|
|
|
if(isset($benefit['nbr']) && intval($benefit['nbr']) > 0){
|
|
@@ -1118,14 +1138,14 @@ class WholeController extends Curd
|
|
|
return json_fail("请填写有效的核销数量");
|
|
|
}
|
|
|
|
|
|
- // $member = Member::find($memberId);
|
|
|
- // $mobile = $member->member_mobile;
|
|
|
- // $key = "SMS:CODE:QUOTA:" . $mobile;
|
|
|
- // $redisCode = Redis::get($key);
|
|
|
- // if ($redisCode != $code) {
|
|
|
- // return json_fail("验证码错误,请重新输入");
|
|
|
- // }
|
|
|
- // Redis::del($key);
|
|
|
+ $member = Member::find($memberId);
|
|
|
+ $mobile = $member->member_mobile;
|
|
|
+ $key = "SMS:CODE:WRITE_OFF:" . $mobile;
|
|
|
+ $redisCode = Redis::get($key);
|
|
|
+ if ($redisCode != $code) {
|
|
|
+ return json_fail("验证码错误,请重新输入");
|
|
|
+ }
|
|
|
+ Redis::del($key);
|
|
|
|
|
|
$benefits = MemberBenefit::whereIn('member_benefit_id', $benefitIds)
|
|
|
->where('join_benefit_member_id', $memberId)
|
|
@@ -1170,9 +1190,9 @@ class WholeController extends Curd
|
|
|
// 更新benefit 表
|
|
|
MemberBenefit::where('member_benefit_id',$benefit['member_benefit_id'])->update(['member_benefit_used_count'=>$usedCount]);
|
|
|
// 更新Appointment 表
|
|
|
- $appointments = Appointment::where('join_appointment_member_benefit_id', $benefit['join_benefit_order_id'])
|
|
|
+ $appointments = Appointment::where('join_appointment_member_benefit_id', $benefit['member_benefit_id'])
|
|
|
->where('appointment_status', 'INIT')
|
|
|
- ->limit($list['nbr'])
|
|
|
+ ->limit(intval($list['nbr']))
|
|
|
->get();
|
|
|
foreach ($appointments as $appointment) {
|
|
|
Appointment::where('appointment_id', $appointment->appointment_id)->update([
|
|
@@ -1477,6 +1497,9 @@ class WholeController extends Curd
|
|
|
|
|
|
Db::commit();
|
|
|
|
|
|
+ // 事件通知
|
|
|
+ Event::dispatch('client_message.refund',$order->join_order_member_id);
|
|
|
+
|
|
|
_syslog("退款", "发起退款", json_decode($res), $data);
|
|
|
return json_success("退款成功");
|
|
|
} catch (PayException $e) {
|
|
@@ -1493,6 +1516,10 @@ class WholeController extends Curd
|
|
|
dump($e->getTrace());
|
|
|
|
|
|
_syslog("退款", "发起退款", $e->getMessage(), $data);
|
|
|
+
|
|
|
+ if (strpos($e->getMessage(),'余额不足') !== false){
|
|
|
+ return json_fail("基本账户余额不足,请充值后重新发起");
|
|
|
+ }
|
|
|
return json_fail("数据更新失败");
|
|
|
}
|
|
|
}
|
|
@@ -1572,7 +1599,7 @@ class WholeController extends Curd
|
|
|
])
|
|
|
->select('order_id','join_order_member_id','order_is_complete','order_status_system')
|
|
|
->where("order_is_complete",'N')
|
|
|
- ->where("order_category",'NORMAL')
|
|
|
+ ->whereIn("order_category",['NORMAL','SYSTEM'])
|
|
|
->orderBy('order_addtimes','DESC')
|
|
|
->get()
|
|
|
->toArray();
|