| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234 |
- <?php
- namespace addons\Happiness\common\global_func;
- use addons\Happiness\common\models\HappinessClerk;
- use addons\Happiness\common\models\HappinessClerkLog;
- use addons\Happiness\common\models\HappinessOrder;
- use addons\Happiness\common\models\HappinessStore;
- use addons\Happiness\common\service\StoreService;
- use common\enums\ClerkEnum;
- use common\enums\MarketingTypeEnum;
- use common\enums\OrderStatusEnum;
- use common\enums\PayTypeEnum;
- use common\enums\ShippingTypeEnum;
- use common\enums\StatusEnum;
- use common\globals\GlobalInvoke;
- use common\models\common\ClerkLog;
- use common\models\goods\Goods;
- use common\models\mall\MallAddons;
- use common\models\order\Order;
- use common\models\order\OrderMarketing;
- use common\models\user\User;
- use Exception;
- class Clerk
- {
- public static function clerk($params)
- {
- if (empty($params['clerk_code']) || empty($params['mall_id']) || empty($params['user_id']) || empty($params['method'])) {
- return [];
- }
- $clerk_code = (string)$params['clerk_code'];
- $clerk_code_pre = $clerk_code[0] . $clerk_code[1];
- switch ($clerk_code_pre) {
- case ClerkEnum::HAPPINESS_CLERK_CODE_PRE:
- $params['code'] = $params['clerk_code'];
- switch ($params['method']) {
- case "get":
- $select = 'id,mall_id,store_id,order_no,receiver_name,mobile,pay_money,shipping_money,original_goods_price,coupon_money,goods_price,order_status,pay_status,
- shipping_status,review_status,is_feedback,address,created_at,pay_time,region_name,remark,consign_time,finish_time,sign_time,shipping_type,payment_type,score,score_money,marketing_id,marketing_type,extra_info,order_source';
- $where = [];
- $clerk_code = $params['clerk_code'];
- $mall_id = $params['mall_id'];
- $platform = $params['platform'];
- $user_id = $params['user_id'];
- $where[] = ['clerk_code' => $clerk_code];
- $where[] = ['mall_id' => $mall_id];
- $where[] = ['status' => StatusEnum::ENABLED];
- $order = Order::getOne($where, true, ['detail' => function ($query) {
- $query->select('id,order_id,goods_id,goods_name,pic_url,num,price,is_feedback,sign_id,goods_attr_name,order_status,adjust_money,extra_info');
- }], false, $select);
- if (empty($order))throw new Exception('该订单不存在');
- //获取门店订单
- $store_order = HappinessOrder::getOne([
- ['mall_id' => $params['mall_id']],
- ['order_id' => $order['id']]
- ]);
- if (empty($store_order)) throw new Exception('不存在该门店订单');
- $store_id = $store_order['store_id'];
- $store = HappinessStore::getOne([['id' => $store_id]], true, [], false, 'id,user_id,balance');
- $store_user_id = $store['user_id'];
- $where = [
- ['mall_id' => $mall_id],
- ['store_id' => $store_id],
- ['status' => StatusEnum::ENABLED]
- ];
- if($user_id != $store_user_id){
- $where[] = ['user_id'=>$user_id];
- }
- $rse = HappinessClerk::getOne($where);
- if (empty($rse)) throw new Exception('你不是核销员');
- $marketing = OrderMarketing::getMarketingInfo($order);
- $order['order_status_text'] = OrderStatusEnum::getMap();
- $order['is_feedback_text'] = OrderStatusEnum::getFeedbackMap();
- $order['shipping_type_text'] = ShippingTypeEnum::getMap();
- $order['payment_type_text'] = PayTypeEnum::getMap();
- $order['pay_type_list'] = \Yii::$app->services->pay->getEnablePayment($mall_id, $platform);
- $adjust_money = array_sum(array_column($order['detail'], 'adjust_money'));//预留字段
- if ($adjust_money) {
- $order['change_price'] = $adjust_money;
- }
- $order['marketing'] = $marketing;
- $order['marketing_type_map'] = MarketingTypeEnum::getMap();
- $order_setting = \Yii::$app->services->setting->mall->get($mall_id, 'order');
- $order['payment_expire_time'] = $order_setting['payment_expire_time'] ?? 30;
- $order['auto_receiving_time'] = $order_setting['auto_receiving_time'] ?? 14;
- // 获取订单详情的状态文字描述
- $order['status_text'] = OrderStatusEnum::getApiStatus($order['status'], $order['shipping_type']);
- $order['status'] == OrderStatusEnum::NOT_PAY && $order['status_text']['desc'] = $order['payment_expire_time'] . $order['status_text']['desc'];
- $order['status'] == OrderStatusEnum::SHIPMENTS && $order['status_text']['desc'] = $order['auto_receiving_time'] . $order['status_text']['desc'];
- // 公共调用
- $order = GlobalInvoke::exec(GlobalInvoke::ORDER_DETAIL, $mall_id, [
- 'order' => $order,
- 'mall_id' => $mall_id,
- ]) ?: $order;
- // $order['store'] = $order['happiness_store'];
- $order['clerk_code'] = $clerk_code;
- $order['store_name'] = $order['happiness_store']['store_name'];
- $order['clerk_code_pre'] = ClerkEnum::HAPPINESS_CLERK_CODE_PRE;
- return $order;
- case "post":
- //获取订单数据
- $order = Order::getOne([
- ['mall_id' => $params['mall_id']],
- ['clerk_code' => $params['clerk_code']],
- ['status' => StatusEnum::ENABLED]
- ], true, ['detail']);
- if (empty($order)) throw new Exception('不存在该订单');
- $store_order = HappinessOrder::getOne([
- ['mall_id' => $params['mall_id']],
- ['order_id' => $order['id']],
- ], true);
- if (empty($store_order)) throw new Exception('不存在该门店订单');
- $params['store_id'] = !empty($params['store_id']) ? $params['store_id'] : $store_order['store_id'];
- $store = HappinessStore::getOne([['id' => $params['store_id']]], true, [], false, 'id,user_id,balance,logo_img,store_name');
- $user_id = $params['user_id'];
- $storeService = new StoreService();
- $storeService->mall_id = $params['mall_id'];
- $storeService->store_id = $params['store_id'];
- $params['clerk_id'] = $storeService->getClerkIdByUserId($user_id, true);
- $rse = HappinessClerk::getOne([['mall_id' => $params['mall_id']], ['user_id' => $user_id], ['status' => StatusEnum::ENABLED],['store_id' => $params['store_id']]]);
- if (empty($rse)) throw new \Exception('你不是核销员');
- $params['store_id'] = $rse['store_id'];
- $rse = HappinessClerkLog::setData($params);
- if(!$rse)
- {
- throw new \Exception(HappinessClerkLog::getStaticError());
- }
- $extra = ['pay_money' => $order['pay_money'], 'order_money' => $order['pay_money'], 'num' => array_sum(array_column($order['detail'], 'num')), 'order_id' => $order['id'], 'order_no' => $order['order_no']];
- //获取商品
- $goods_ids = array_column($order['detail'], 'goods_id');
- $goods_data = Goods::getOne([
- ['mall_id' => $params['mall_id']],
- ['status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]],
- ['id' => $goods_ids]
- ], true);
- $clerk_params = [
- 'mall_id' => $params['mall_id'],
- 'user_id' => $user_id,
- 'mall_logo' => $store['logo_img'],
- 'mall_name' => $store['store_name'],
- 'clerk_code' => $clerk_code,
- 'type' => $clerk_code_pre,
- 'status' => StatusEnum::ENABLED,
- 'pic' => $goods_data['cover_pic'],
- 'extra' => json_encode($extra),
- ];
- $log_res = ClerkLog::setData($clerk_params);
- return $rse;
- }
- break;
- default:
- return [];
- }
- }
- public static function clerkDetail($params)
- {
- if (empty($params['clerk_log_id']) || empty($params['mall_id']) || empty($params['user_id']) || empty($params['type'])) {
- return [];
- }
- $clerk_code_pre = $params['type'];
- switch ($clerk_code_pre) {
- // case ClerkEnum::O2O_SELF_PICKUP_ORDERS_CLERK_CODE_PRE:
- // return StoreOrder::getClerkLogDetail($params);
- // case ClerkEnum::ELECTRON_COUPON_CLERK_CODE_PRE:
- // if (!MallAddons::isInstall($params['mall_id'], 'ElectronCoupon')) {
- // return [];
- // }
- // $clerk_log_model = \common\models\common\ClerkLog::findOne(['id' => $params['clerk_log_id'], 'mall_id' => $params['mall_id'], 'user_id' => $params['user_id'], 'type' => $params['type']]);
- // $params['code'] = $clerk_log_model['clerk_code'];
- // $extra = json_decode($clerk_log_model['extra'],true);
- // $e_coupon = ElectronCoupon::findOne(['id' => $extra['e_coupon_id']]);
- // $data['pic'] = $e_coupon['pic'];
- // $data['name'] = $e_coupon['name'];
- // $data['money'] = $e_coupon['price'];
- // return $data;
- // case ClerkEnum::O2O_STORE_CLERK_COUPON_CODE_PRE:
- // $clerk_log_model = \common\models\common\ClerkLog::findOne(['id' => $params['clerk_log_id'], 'mall_id' => $params['mall_id'], 'user_id' => $params['user_id'], 'type' => $params['type']]);
- // $extra = json_decode($clerk_log_model['extra'],true);
- // $coupon_user = StoreVerificationCouponsUser::findOne(['mall_id' => $params['mall_id'], 'clerk_code' => $extra['store_verification_coupons_user_id']]);
- // if (empty($coupon_user)) {
- // throw new \Exception('核销券不存在');
- // }
- // $coupon = StoreVerificationCoupons::findOne(['id' => $coupon_user['coupon_id'], 'status' => StatusEnum::ENABLED]);
- // if (empty($coupon)) {
- // throw new \Exception('核销券不存在或已删除');
- // }
- // $store = Store::findOne($coupon_user['store_id']);
- // $returnData = [];
- // $returnData['detail'] = [
- // 'name' => $coupon['name'],
- // 'num' => $coupon_user['num'],
- // 'used_num' => $coupon_user['used_num'],
- // 'logo_img' => $store['logo_img'],
- // 'store_name' => $store['store_name'],
- // 'start_at' => date('Y-m-d H:i:s', $coupon['start_at']),
- // 'end_at' => date('Y-m-d H:i:s', $coupon['end_at']),
- // ];
- // return $returnData;
- // case ClerkEnum::PLATFORM_ORDER_BY_O2O_STORE_CLERK_CODE_PRE:
- // $clerk_log_model = \common\models\common\ClerkLog::findOne(['id' => $params['clerk_log_id'], 'mall_id' => $params['mall_id'], 'user_id' => $params['user_id'], 'type' => $params['type']]);
- // $extra = json_decode($clerk_log_model['extra'],true);
- // $clerk_detail = PlatformStoreClerkOrderDetail::find()->where(['id'=>$extra['platform_store_clerk_order_detail_id']])->asArray()->one();
- // if (!$clerk_detail) {
- // throw new \Exception('该订单不存在');
- // }
- // $params['order_id'] = $clerk_detail['order_id'];
- // $params['goods_id'] = $clerk_detail['goods_id'];
- // $params['order_detail_id'] = $clerk_detail['order_detail_id'];
- // $params['clerk_code'] = $clerk_log_model['clerk_code'];
- // return StoreClerkLog::getPlatformStoreOrderDetail($params);
- case ClerkEnum::HAPPINESS_CLERK_CODE_PRE:
- $clerk_log_model = \common\models\common\ClerkLog::findOne(['id' => $params['clerk_log_id'], 'mall_id' => $params['mall_id'], 'user_id' => $params['user_id'], 'type' => $params['type']]);
- if (empty($clerk_log_model)) return [];
- $clerk_log_model['extra'] = json_decode($clerk_log_model['extra'], true);
- $params['order_no'] = $clerk_log_model['extra']['order_no'];
- return HappinessClerkLog::getPlatformStoreOrderDetail($params);
-
- break;
- default:
- return [];
- }
- }
- }
|