|
@@ -13,6 +13,7 @@ use app\model\Coupon;
|
|
|
use app\model\Device;
|
|
|
use app\model\Goods;
|
|
|
use app\model\GoodsComponent;
|
|
|
+use app\model\Member;
|
|
|
use app\model\MemberAccount;
|
|
|
use app\model\MemberBenefit;
|
|
|
use app\model\Order;
|
|
@@ -243,6 +244,19 @@ class WholeController extends Curd
|
|
|
$params['orderGroupId'] = 'OD' . date('YmdHis') . random_string(6, 'up');
|
|
|
$params['benefitId'] = 'BF' . date('YmdHis') . random_string(6, 'up');
|
|
|
|
|
|
+ // 配送方式
|
|
|
+ if($params['delivery'] == 'PICKUP'){ // 自提
|
|
|
+ $params['order_express_json'] = json_encode([
|
|
|
+ 'express'=>'S',
|
|
|
+ 'premises'=>$params['dept_premises_id']
|
|
|
+ ]);
|
|
|
+ }else if($params['delivery'] == 'LOGISTICS'){
|
|
|
+ $params['order_express_json'] = json_encode([
|
|
|
+ 'express'=>'Y',
|
|
|
+ ]);
|
|
|
+ $this->saveExpress($params);
|
|
|
+ }
|
|
|
+
|
|
|
// 写入主订单
|
|
|
$this->insertMain($params);
|
|
|
// 订单详情
|
|
@@ -250,6 +264,7 @@ class WholeController extends Curd
|
|
|
// 支付记录
|
|
|
$this->insertPayDetail($params);
|
|
|
|
|
|
+
|
|
|
// 买的单个服务
|
|
|
if ($goods['goods_classify'] == 'SERVICE') {
|
|
|
// 预约表
|
|
@@ -490,12 +505,12 @@ class WholeController extends Curd
|
|
|
->get();
|
|
|
// 入配送记录表
|
|
|
$params = $request->post();
|
|
|
- $model = new OrderExpress();
|
|
|
+ $model = OrderExpress::where('join_express_order_id',$params['order_id'])->first();
|
|
|
$model->join_express_order_id = $params['order_id'];
|
|
|
$model->order_express_goods = $sheet;
|
|
|
$model->order_express_type = $params['order_express_type'];
|
|
|
$model->order_express_code = $params['order_express_code'];
|
|
|
- $model->order_express_city = implode("-", $params['order_express_city']);
|
|
|
+ $model->order_express_city = implode(",", $params['order_express_city']);
|
|
|
$model->order_express_address = $params['order_express_address'];
|
|
|
$model->order_express_mobile = $params['order_express_mobile'];
|
|
|
$model->order_express_telephone = $params['order_express_telephone'] ?? null;
|
|
@@ -519,6 +534,77 @@ class WholeController extends Curd
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ 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('参数异常');
|
|
|
+ }
|
|
|
+ // $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);
|
|
|
+
|
|
|
+ $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('可核销数量不足');
|
|
|
+ }
|
|
|
+
|
|
|
+ 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();
|
|
|
+ // 记录核销
|
|
|
+ $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);
|
|
|
+
|
|
|
+ $appointments = Appointment::where('join_appointment_member_benefit_id', $benefitId)
|
|
|
+ ->where('appointment_status', 'INIT')
|
|
|
+ ->limit($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();
|
|
|
+
|
|
|
+ return json_success('核销成功');
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ dump($e->getMessage());
|
|
|
+ Db::rollBack();
|
|
|
+ return json_fail('核销失败');
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
public function myOrder(Request $request)
|
|
|
{
|
|
|
$memberId = $request->get('member_id', '');
|
|
@@ -575,6 +661,23 @@ class WholeController extends Curd
|
|
|
return json_success('', ['order' => $sheet, 'appointment' => $appointments]);
|
|
|
}
|
|
|
|
|
|
+ public function saveExpress($params){
|
|
|
+ try{
|
|
|
+ $express = new OrderExpress();
|
|
|
+ $express->join_express_order_id = $params['orderId'];
|
|
|
+ $express->order_express_goods = json_encode(['sheet'=>'']);
|
|
|
+ $express->order_express_city = $params['order_express_city'];
|
|
|
+ $express->order_express_address = $params['order_express_address'];
|
|
|
+ $express->order_express_mobile = $params['order_express_mobile'];
|
|
|
+ $express->order_express_person = $params['order_express_person'];
|
|
|
+ $express->order_express_addtimes = time();
|
|
|
+ $express->save();
|
|
|
+ }catch(\Exception $e){
|
|
|
+ dump($e->getMessage());
|
|
|
+ throw new BusinessException('物流信息保存失败');
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
// TODO 确认收货(完成订单)
|
|
|
public function confirm($id)
|
|
|
{
|