| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- <?php
- namespace addons\QiJuhe\common\service;
- use addons\QiJuhe\common\enums\QiJuheEnum;
- use addons\QiJuhe\common\models\GoodsModel;
- use addons\QiJuhe\common\models\GoodsSkuModel;
- use addons\QiJuhe\common\models\SupplysModel;
- use common\enums\AddonsEnum;
- use common\enums\StatusEnum;
- use yii\helpers\Json;
- class ShoppingCartService
- {
- public function cartListAppendFields($params)
- {
- $data = $params['data'];
- if (empty($data)) return $data;
- $mall_id = $params['mall_id'];
- $config = (new SettingService(['mall_id' => $mall_id]))->getSetting();
- if (empty($config['is_enable_shopping_cart_settle'])) return $data;
- $source_list = [];
- $rate = 1;
- foreach ($data as $k => $v) {
- $list = $v['list'];
- foreach ($list as $lk => $item) {
- if ($item['goods_source'] == AddonsEnum::ADDONS_NAME_QI_JUHE) {
- // 取出当前商品所属供应链
- $sku = GoodsSkuModel::getSku($item['goods_id'], $item['attr_id']);
- $g = GoodsModel::findOne(['goods_id' => $sku->supply_goods_id, 'mall_id' => $mall_id]);
- $item['cost_price'] = $item['price']; // 销售价
- $item['member_buy_limit_num'] = $g->min_buy_qty; // 最低加购量
- if ($g->source == QiJuheEnum::FREE_SHIPPING_SOURCE && $g->source_name == QiJuheEnum::FREE_SHIPPING_SOURCE_NAME) { // 满59 免邮
- $item['supply_chain'] = $g->source;
- // $supply = SupplysModel::findOne(['id' => $sku->supply_id]);
- // $sell = Json::decode(!empty($supply->sell) ? $supply->sell : '[]');
- // if (!empty($sell['sell_agreement'])) {
- // $rate = bcmul($sell['sell_agreement'], 0.01, 2);
- // }
- // $item['cost_price'] = bcmul($g->agreement_price, $rate * 0.01, 2);
- // $api = ApiService::getConnect($mall_id, $sku->supply_id);
- // $goodsInfo = $api->goodsInfo([$sku->supply_goods_id]);
- // if (!empty($goodsInfo[0])) {
- // $item['cost_price'] = bcmul($goodsInfo[0]['agreement_price'], $rate * 0.01, 2); // 取协议价
- // }
- }
- // 需要加一个
- $source_list[] = $item;
- unset($list[$lk]);
- }
- }
- if (!empty($list)) {
- $data[$k]['list'] = $list;
- } else {
- unset($data[$k]);
- }
- }
- if (!empty($source_list)) {
- $data[] = [
- 'id' => AddonsEnum::ADDONS_NAME_QI_JUHE,
- 'mch_name' => $config['shopping_cart_mall_name'],
- 'mch_pic' => $config['shopping_cart_mall_logo'],
- 'list' => $source_list,
- 'deduct' => [
- 'free_shipping' => [
- 120 => bcmul($config['shopping_cart_free_amount'] ?? 59, $rate, 2)
- ]
- ]
- ];
- }
- foreach ($data as &$datum) {
- $datum['list'] = array_values($datum['list']);
- }
- $data = array_values($data);
- return $data;
- }
- /**
- * @param array $params
- * @return array
- */
- public function globalGoodsDetail($params)
- {
- if (empty($params)) return $params;
- $goods = $params['goods'];
- if (!empty($goods['goods_source']) && $goods['goods_source'] != QiJuheEnum::PLUGIN_SIGN) return $params;
- $mall_id = $params['mall_id'];
- $params['goods'] = ShoppingCartService::getCanAddToCart($params['goods'], $mall_id);
- return $params;
- }
- /**
- * 判断是否能过加入到购物车
- * @param $goods
- * @param $mall_id
- * @return mixed
- */
- public static function getCanAddToCart($goods, $mall_id)
- {
- $config = (new SettingService(['mall_id' => $mall_id]))->getSetting();
- if (!empty($config['is_enable_shopping_cart_settle'])) $goods['can_add_to_cart'] = StatusEnum::ENABLED;
- // 最低限购
- $sku = GoodsSkuModel::findOne(['goods_id' => $goods['id'], 'mall_id' => $mall_id]);
- if (!empty($sku)) {
- $goods['member_buy_limit_setting']['nums'] = (int) GoodsModel::find()->where(['goods_id' => $sku->supply_goods_id, 'mall_id' => $mall_id])
- ->select('min_buy_qty')->scalar();
- }
- return $goods;
- }
- }
|