|
@@ -1097,6 +1097,110 @@ class WholeController extends Curd
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ public function writeOffBenefit(Request $request)
|
|
|
+ {
|
|
|
+ $memberId = $request->post('member_id', '');
|
|
|
+ $benefitList = $request->post('benefitList', []);
|
|
|
+ $times = $request->post('times', '');
|
|
|
+ $code = $request->post('sms_code', '');
|
|
|
+
|
|
|
+ if (!$memberId || empty($benefitList)) {
|
|
|
+ return json_fail('参数异常');
|
|
|
+ }
|
|
|
+ $benefitIds = [];
|
|
|
+ foreach($benefitList as $benefit){
|
|
|
+ if(isset($benefit['nbr']) && intval($benefit['nbr']) > 0){
|
|
|
+ $benefitIds[] = $benefit['member_benefit_id'];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(empty($benefitIds)){
|
|
|
+ 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);
|
|
|
+
|
|
|
+ $benefits = MemberBenefit::whereIn('member_benefit_id', $benefitIds)
|
|
|
+ ->where('join_benefit_member_id', $memberId)
|
|
|
+ ->get()
|
|
|
+ ->toArray();
|
|
|
+
|
|
|
+ foreach($benefits as $benefit){
|
|
|
+ foreach($benefitList as $list){
|
|
|
+ if ($list['member_benefit_id'] == $benefit['member_benefit_id'] && intval($list['nbr'] > ($benefit['member_benefit_limit_count'] - $benefit['member_benefit_used_count']))){
|
|
|
+ return json_fail('可核销数量不足');
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!$times) {
|
|
|
+ $times = date('Y-m-d H:i:s');
|
|
|
+ } else {
|
|
|
+ $times = date('Y-m-d H:i:s', strtotime($times));
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ Db::beginTransaction();
|
|
|
+
|
|
|
+ // 核销数据
|
|
|
+ $params = [
|
|
|
+ 'dept_premises_id' => $request->post('dept_premises_id'),
|
|
|
+ 'order_remark' => $request->post('remark'),
|
|
|
+ 'write_off_member_id' => $request->post('write_off_member_id'),
|
|
|
+ 'join_order_member_id' => $memberId
|
|
|
+ ];
|
|
|
+ $writeOffData = OrderService::generateWriteOffData($params);
|
|
|
+
|
|
|
+ // 开始减额度
|
|
|
+ foreach($benefits as $benefit){
|
|
|
+ foreach($benefitList as $list){
|
|
|
+ if ($list['member_benefit_id'] == $benefit['member_benefit_id']){
|
|
|
+ $usedCount = $benefit['member_benefit_used_count'] + intval($list['nbr']);
|
|
|
+ // 用完了
|
|
|
+ if($benefit['member_benefit_limit_count'] <= $usedCount && !empty($benefit['join_benefit_order_id'])){
|
|
|
+ Order::where('order_id', $benefit['join_benefit_order_id'])->update(['order_status_system' => 'DONE']);
|
|
|
+ }
|
|
|
+ // 更新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'])
|
|
|
+ ->where('appointment_status', 'INIT')
|
|
|
+ ->limit($list['nbr'])
|
|
|
+ ->get();
|
|
|
+ foreach ($appointments as $appointment) {
|
|
|
+ Appointment::where('appointment_id', $appointment->appointment_id)->update([
|
|
|
+ 'appointment_status' => 'DONE',
|
|
|
+ 'appointment_datetime' => $times,
|
|
|
+ 'appointment_apply_datetime' => $times,
|
|
|
+ 'appointment_doing_datetime' => $times,
|
|
|
+ 'appointment_done_datetime' => $times,
|
|
|
+ 'appointment_done_json' => json_encode($writeOffData)
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ Db::commit();
|
|
|
+
|
|
|
+ _syslog("订单","核销成功");
|
|
|
+ return json_success('核销成功');
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ dump($e->getMessage());
|
|
|
+ Db::rollBack();
|
|
|
+ _syslog("订单","核销失败");
|
|
|
+ return json_fail('核销失败');
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
public function myOrder(Request $request)
|
|
|
{
|
|
|
$page = $request->get('page',1);
|
|
@@ -1445,6 +1549,86 @@ class WholeController extends Curd
|
|
|
return call_user_func([$this, $format_function], $items, $total);
|
|
|
}
|
|
|
|
|
|
+ public function benefitList(Request $request)
|
|
|
+ {
|
|
|
+ $orderIds = $request->get('order_ids',[]);
|
|
|
+ if(empty($orderIds)){
|
|
|
+ return json_fail("请选择需要核销的订单");
|
|
|
+ }
|
|
|
+ $orders = order::whereIn('order_id',$orderIds)
|
|
|
+ ->with([
|
|
|
+ 'benefit'=>function($query){
|
|
|
+ $query->select('join_benefit_order_id','member_benefit_id','member_benefit_name','member_benefit_limit_count','member_benefit_used_count');
|
|
|
+ },
|
|
|
+ 'member'=>function($query){
|
|
|
+ $query->select('member_id','member_mobile');
|
|
|
+ },
|
|
|
+ // 'sheets'=>function($query){
|
|
|
+ // $query->select('join_sheet_order_id','join_sheet_goods_id');
|
|
|
+ // }
|
|
|
+ // 'goods'=>function($query){
|
|
|
+ // $query->select('goods_id','goods_name');
|
|
|
+ // }
|
|
|
+ ])
|
|
|
+ ->select('order_id','join_order_member_id','order_is_complete','order_status_system')
|
|
|
+ ->where("order_is_complete",'N')
|
|
|
+ ->where("order_category",'NORMAL')
|
|
|
+ ->orderBy('order_addtimes','DESC')
|
|
|
+ ->get()
|
|
|
+ ->toArray();
|
|
|
+ $memberId = array_unique(array_column($orders,'join_order_member_id'));
|
|
|
+ if(count($memberId) > 1){
|
|
|
+ return json_fail("不可同时核销多人订单");
|
|
|
+ }
|
|
|
+
|
|
|
+ $data = [];
|
|
|
+ foreach($orders as $order){
|
|
|
+ $orderOne = $order;
|
|
|
+ foreach($order['benefit'] as $benefit){
|
|
|
+ $benefit['member_benefit_limit_count'] = intval($benefit['member_benefit_limit_count']);
|
|
|
+ $benefit['member_benefit_used_count'] = intval($benefit['member_benefit_used_count']);
|
|
|
+ $benefit['unused'] = $benefit['member_benefit_limit_count'] - $benefit['member_benefit_used_count'];
|
|
|
+ $orderOne['benefit'] = $benefit;
|
|
|
+ $orderOne['member_benefit_id'] = $benefit['member_benefit_id'];
|
|
|
+ $data[] = $orderOne;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(empty($data)){
|
|
|
+ return json_fail("您选择的产品没有可核销的服务");
|
|
|
+ }
|
|
|
+
|
|
|
+ return json_success('',$data);
|
|
|
+ }
|
|
|
+
|
|
|
+ public function chooseBenefitList(Request $request)
|
|
|
+ {
|
|
|
+ $benefitIds = $request->get('benefit_ids',[]);
|
|
|
+ $memberId = $request->get('member_id',[]);
|
|
|
+ if(empty($benefitIds)){
|
|
|
+ return json_fail('请选择需要核销的服务');
|
|
|
+ }
|
|
|
+ if(empty($memberId)){
|
|
|
+ return json_fail('没有会员信息,请联系管理员');
|
|
|
+ }
|
|
|
+
|
|
|
+ $benefits = MemberBenefit::whereIn('member_benefit_id',$benefitIds)
|
|
|
+ ->where('member_benefit_status','ACTIVED')
|
|
|
+ ->where('join_benefit_member_id',$memberId)
|
|
|
+ ->select('join_benefit_order_id','member_benefit_id','member_benefit_name','member_benefit_limit_count','member_benefit_used_count')
|
|
|
+ ->orderBy('member_benefit_addtimes','DESC')
|
|
|
+ ->get()
|
|
|
+ ->toArray();
|
|
|
+ foreach($benefits as &$benefit){
|
|
|
+ $benefit['member_benefit_limit_count'] = intval($benefit['member_benefit_limit_count']);
|
|
|
+ $benefit['member_benefit_used_count'] = intval($benefit['member_benefit_used_count']);
|
|
|
+ $benefit['unused'] = $benefit['member_benefit_limit_count'] - $benefit['member_benefit_used_count'];
|
|
|
+ }
|
|
|
+
|
|
|
+ $member = Member::where('member_id',$memberId)->select('member_id','member_mobile')->first()->toArray();
|
|
|
+
|
|
|
+ return json_success('',['benefits'=>$benefits,'member'=>$member]);
|
|
|
+ }
|
|
|
+
|
|
|
protected function exportAfterQuery($items)
|
|
|
{
|
|
|
$data = [];
|