|
@@ -2,14 +2,17 @@
|
|
|
|
|
|
namespace app\admin\controller\member;
|
|
|
|
|
|
+use app\admin\service\member\MemberService;
|
|
|
use app\controller\Curd;
|
|
|
use app\model\Appointment;
|
|
|
+use app\model\Member;
|
|
|
use app\model\MemberBenefit;
|
|
|
use app\model\MemberQuota;
|
|
|
use app\model\RuleAddedComponent;
|
|
|
use app\model\SysUser;
|
|
|
use support\Db;
|
|
|
use support\Request;
|
|
|
+use support\Response;
|
|
|
|
|
|
class WriteOffController extends Curd
|
|
|
{
|
|
@@ -26,13 +29,13 @@ class WriteOffController extends Curd
|
|
|
$userId = $request->get('user_id', '');
|
|
|
$premises = $request->get('premises', '');
|
|
|
$date = $request->get('date', []);
|
|
|
- $memberId = $request->get('member_id','');
|
|
|
+ $memberId = $request->get('member_id', '');
|
|
|
|
|
|
$appointmentList = Db::table('appointment')
|
|
|
->leftJoin('member', 'member.member_id', '=', 'appointment.join_appointment_member_id')
|
|
|
->leftJoin('member_cert', 'member_cert.join_cert_member_id', '=', 'appointment.join_appointment_member_id')
|
|
|
->select('appointment.appointment_id as quota_id', 'appointment.join_appointment_member_id as member_id', 'appointment.appointment_classify as classify', 'appointment.appointment_done_json as used_json', 'appointment.appointment_done_datetime as used_time', 'appointment.join_appointment_member_benefit_id as benefit_id',
|
|
|
- 'member.member_mobile', 'member_cert.member_cert_name','appointment_extend_json as extend_json'
|
|
|
+ 'member.member_mobile', 'member_cert.member_cert_name', 'appointment_extend_json as extend_json'
|
|
|
)
|
|
|
->when($keywords != '', function ($query) use ($keywords) {
|
|
|
$query->where('member.member_mobile', 'like', '%' . $keywords . '%');
|
|
@@ -44,15 +47,15 @@ class WriteOffController extends Curd
|
|
|
$query->whereJsonContains('appointment.appointment_done_json->charge->charge_user_id', $userId);
|
|
|
})->when($premises != '', function ($query) use ($premises) {
|
|
|
$query->whereJsonContains('appointment.appointment_done_json->charge->charge_premises', $premises);
|
|
|
- })->when(!empty($memberId),function ($query) use ($memberId){
|
|
|
- $query->where('join_appointment_member_id',$memberId);
|
|
|
+ })->when(!empty($memberId), function ($query) use ($memberId) {
|
|
|
+ $query->where('join_appointment_member_id', $memberId);
|
|
|
})
|
|
|
->where('appointment_status', 'DONE');
|
|
|
$quotaList = Db::table('member_quota')
|
|
|
->leftJoin('member', 'member.member_id', '=', 'member_quota.join_quota_member_id')
|
|
|
->leftJoin('member_cert', 'member_cert.join_cert_member_id', '=', 'member_quota.join_quota_member_id')
|
|
|
->select('member_quota.member_quota_id as quota_id', 'member_quota.join_quota_member_id as member_id', 'member_quota.member_quota_category as classify', 'member_quota.member_quota_used_json as used_json', "member_quota.member_quota_extend_json->writeOffTime as used_time", "member_quota.join_member_rule_added_component_id as benefit_id",
|
|
|
- 'member.member_mobile', 'member_cert.member_cert_name','member_quota_extend_json as extend_json')
|
|
|
+ 'member.member_mobile', 'member_cert.member_cert_name', 'member_quota_extend_json as extend_json')
|
|
|
->when($keywords != '', function ($query) use ($keywords) {
|
|
|
$query->where('member.member_mobile', 'like', '%' . $keywords . '%');
|
|
|
})->when(!empty($date), function ($query) use ($date) {
|
|
@@ -94,9 +97,9 @@ class WriteOffController extends Curd
|
|
|
}
|
|
|
}
|
|
|
$remark = [];
|
|
|
- if (!empty($item->extend_json)){
|
|
|
- $extendJson = json_decode($item->extend_json,true);
|
|
|
- if (isset($extendJson['remark'])){
|
|
|
+ if (!empty($item->extend_json)) {
|
|
|
+ $extendJson = json_decode($item->extend_json, true);
|
|
|
+ if (isset($extendJson['remark'])) {
|
|
|
$remark = $extendJson['remark'];
|
|
|
}
|
|
|
}
|
|
@@ -116,7 +119,7 @@ class WriteOffController extends Curd
|
|
|
'member_mobile' => $item->member_mobile ? $item->member_mobile : '',
|
|
|
'classify' => $classify,
|
|
|
'nbr' => 1,
|
|
|
- 'remark'=>$remark
|
|
|
+ 'remark' => $remark
|
|
|
];
|
|
|
|
|
|
}
|
|
@@ -124,6 +127,61 @@ class WriteOffController extends Curd
|
|
|
return json_success('', compact('rows', 'page', 'pageSize', 'total'));
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * @Desc 核销详情
|
|
|
+ * @Author Gorden
|
|
|
+ * @Date 2024/10/10 14:00
|
|
|
+ *
|
|
|
+ * @param Request $request
|
|
|
+ * @return Response
|
|
|
+ */
|
|
|
+ public function info(Request $request): Response
|
|
|
+ {
|
|
|
+ $quotaId = $request->get('quota_id');
|
|
|
+ if (!$quotaId) {
|
|
|
+ return json_fail("参数异常");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (substr($quotaId, 0, 2) == 'AP') {
|
|
|
+ $quota = Appointment::where('appointment_id', $quotaId)
|
|
|
+ ->select('appointment_id', 'join_appointment_member_id as member_id')
|
|
|
+ ->first();
|
|
|
+ } elseif (substr($quotaId, 0, 2) == 'MQ') {
|
|
|
+ $quota = MemberQuota::where('member_quota_id', $quotaId)
|
|
|
+ ->select('member_quota_id', 'join_quota_member_id as member_id')
|
|
|
+ ->first();
|
|
|
+ } else {
|
|
|
+ return json_fail("参数异常");
|
|
|
+ }
|
|
|
+
|
|
|
+ $member = Member::with([
|
|
|
+ 'cert' => function ($query) {
|
|
|
+ $query->select('join_cert_member_id', 'member_cert_name');
|
|
|
+ },
|
|
|
+ 'info' => function ($query) {
|
|
|
+ $query->select('join_info_member_id', 'member_info_nickname', 'member_info_headimg');
|
|
|
+ }
|
|
|
+ ])->where('member_id', $quota['member_id'])
|
|
|
+ ->select('member_id', 'member_mobile', 'join_member_role_id', 'member_is_owner', 'member_is_vip', 'member_is_partner', 'member_is_referrer')
|
|
|
+ ->first();
|
|
|
+ if (!$member){
|
|
|
+ return json_fail('数据异常');
|
|
|
+ }
|
|
|
+ $member = $member->toArray();
|
|
|
+ $certName = $member['cert']['member_cert_name'] ?? '';
|
|
|
+ $nickname = $member['info']['member_info_nickname'] ?? MemberService::getMemberNickname($member['member_mobile'] ?? '');
|
|
|
+ $mobile = $member['member_mobile'] ?? '';
|
|
|
+ $member['member_name'] = MemberService::getMemberCertName($mobile, $certName, $nickname);
|
|
|
+ $member['info']['member_info_headimg'] = MemberService::getAvatarUrl($member['info']['member_info_headimg'] ?? '');
|
|
|
+ $member['level'] = MemberService::getRoleName($member['join_member_role_id']);
|
|
|
+
|
|
|
+ $data = [
|
|
|
+ 'member'=>$member
|
|
|
+ ];
|
|
|
+
|
|
|
+ return json_success('success',$data);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* @Desc 核销备注
|
|
|
* @Author Gorden
|
|
@@ -160,11 +218,11 @@ class WriteOffController extends Curd
|
|
|
'business' => $request->post('business', ''),
|
|
|
'service' => $request->post('service', '')
|
|
|
];
|
|
|
- if (!empty($appointment)){
|
|
|
- $appointment->appointment_extend_json = json_encode($extendJson,JSON_UNESCAPED_UNICODE);
|
|
|
+ if (!empty($appointment)) {
|
|
|
+ $appointment->appointment_extend_json = json_encode($extendJson, JSON_UNESCAPED_UNICODE);
|
|
|
$appointment->save();
|
|
|
- }elseif (!empty($quota)){
|
|
|
- $quota->member_quota_extend_json = json_encode($extendJson,JSON_UNESCAPED_UNICODE);
|
|
|
+ } elseif (!empty($quota)) {
|
|
|
+ $quota->member_quota_extend_json = json_encode($extendJson, JSON_UNESCAPED_UNICODE);
|
|
|
$quota->save();
|
|
|
}
|
|
|
|