|
@@ -3,8 +3,12 @@
|
|
|
namespace app\admin\controller\member;
|
|
|
|
|
|
use app\controller\Curd;
|
|
|
+use app\model\Appointment;
|
|
|
+use app\model\Member;
|
|
|
use app\model\MemberBenefit;
|
|
|
+use support\Db;
|
|
|
use support\exception\BusinessException;
|
|
|
+use support\Redis;
|
|
|
use support\Request;
|
|
|
|
|
|
class BenefitController extends Curd
|
|
@@ -58,7 +62,7 @@ class BenefitController extends Curd
|
|
|
'goods' => function ($query) {
|
|
|
$query->select('goods_id', 'goods_name');
|
|
|
},
|
|
|
- 'package' => function ($query) {
|
|
|
+ 'goods' => function ($query) {
|
|
|
$query->select('goods_id', 'goods_name');
|
|
|
},
|
|
|
'order'
|
|
@@ -85,4 +89,89 @@ class BenefitController extends Curd
|
|
|
unset($data[$primary_key]);
|
|
|
return [$id, $data];
|
|
|
}
|
|
|
+
|
|
|
+ public function writeOff(Request $request)
|
|
|
+ {
|
|
|
+ $memberId = $request->post('member_id', '');
|
|
|
+ $benefitId = $request->post('benefit_id', '');
|
|
|
+ $nbr = $request->post('nbr');
|
|
|
+ $times = $request->post('times', '');
|
|
|
+ $code = $request->post('sms_code', '');
|
|
|
+
|
|
|
+ if (!$memberId || !$benefitId) {
|
|
|
+ return json_fail('参数异常');
|
|
|
+ }
|
|
|
+
|
|
|
+ $benefit = MemberBenefit::where('member_benefit_id', $benefitId)
|
|
|
+ ->where('join_benefit_member_id', $memberId)
|
|
|
+ ->first();
|
|
|
+ if ($benefit->member_benefit_limit_count - $benefit->member_benefit_used_count < $nbr) {
|
|
|
+ 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);
|
|
|
+ if (!$times) {
|
|
|
+ $times = date('Y-m-d H:i:s');
|
|
|
+ } else {
|
|
|
+ $times = date('Y-m-d H:i:s', strtotime($times));
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ Db::beginTransaction();
|
|
|
+ // 减额度
|
|
|
+ $benefit->member_benefit_used_count = $benefit->member_benefit_used_count + $nbr;
|
|
|
+ $benefit->save();
|
|
|
+ // 记录核销
|
|
|
+ Appointment::where('join_appointment_member_benefit_id', $benefitId)
|
|
|
+ ->where('appointment_status', 'INIT')
|
|
|
+ ->limit($nbr)
|
|
|
+ ->update([
|
|
|
+ 'appointment_status' => 'DONE',
|
|
|
+ 'appointment_datetime' => $times,
|
|
|
+ 'appointment_apply_datetime' => $times,
|
|
|
+ 'appointment_doing_datetime' => $times,
|
|
|
+ 'appointment_done_datetime' => $times
|
|
|
+ ]);
|
|
|
+ Db::commit();
|
|
|
+
|
|
|
+ return json_success('核销成功');
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ dump($e->getMessage());
|
|
|
+ Db::rollBack();
|
|
|
+ return json_fail('核销失败');
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public function writeOffList(Request $request)
|
|
|
+ {
|
|
|
+ $memberId = $request->get('member_id', '');
|
|
|
+ $benefitId = $request->get('benefit_id', '');
|
|
|
+
|
|
|
+ $quotas = Appointment::with([
|
|
|
+ 'member' => function ($query) {
|
|
|
+ $query->select('member_id', 'member_mobile');
|
|
|
+ },
|
|
|
+ 'cert' => function ($query) {
|
|
|
+ $query->select('join_cert_member_id', 'member_cert_name');
|
|
|
+ },
|
|
|
+// 'goods' => function ($query) {
|
|
|
+// $query->select('goods_id', 'goods_name');
|
|
|
+// },
|
|
|
+ 'benefit' => function ($query) {
|
|
|
+ $query->select('member_benefit_id','member_benefit_name');
|
|
|
+ }
|
|
|
+ ])->where('join_appointment_member_id', $memberId)
|
|
|
+ ->where('join_appointment_member_benefit_id', $benefitId)
|
|
|
+ ->where('appointment_status', 'DONE')
|
|
|
+ ->get();
|
|
|
+
|
|
|
+ return json_success('', $quotas);
|
|
|
+ }
|
|
|
}
|