{"id":125,"date":"2023-02-17T16:53:33","date_gmt":"2023-02-17T08:53:33","guid":{"rendered":"http:\/\/www.zhukaifu.cn\/?p=125"},"modified":"2023-03-29T16:00:30","modified_gmt":"2023-03-29T08:00:30","slug":"php%e4%bb%a3%e7%a0%81%e7%89%87%e6%ae%b5","status":"publish","type":"post","link":"https:\/\/www.zhukaifu.cn\/?p=125","title":{"rendered":"php\u4ee3\u7801\u7247\u6bb5"},"content":{"rendered":"\n<pre class=\"wp-block-code\"><code>public function getWriteOffCodeExchangeList($id_shop, $city, $type, $status, $tag, $page, $card_rank = '')\r\n    {\r\n        $filterMd5 = substr(md5($id_shop . $city . $type . $status . $tag . $card_rank), 0, 12);\r\n        $cache_key = getCacheKey(Point::MEMBER_ACTIVITY_CENTER_WRITE_OFF_CODE_EXCHANGE_LIST, $filterMd5, $page);\r\n        $data = cache($cache_key);\r\n        if (!empty($data)) {\r\n            if ($data == -1) {\r\n                return &#91;];\r\n            }\r\n        }\r\n        \/\/ \u4ece\u6570\u636e\u5e93\u83b7\u53d6\r\n        if (empty($data)) {\r\n            $condition = &#91;\r\n                'type' => ModExchange::EXCHANGE_TYPE_WRITE_OFF_CODE,\r\n                'status' => ModExchange::EXCHANGE_STATUS_OK,\r\n                'activity_center_show' => 1,\r\n                'id_shop' => &#91;'IN', &#91;7,8,88]],\r\n            ];\r\n            if (!empty($city)) {\r\n                $condition&#91;'activity_address'] = $city;\r\n            }\r\n            if (!empty($type)) {\r\n                $condition&#91;'activity_type'] = $type;\r\n            }\r\n            if (!empty($status)) {\r\n                if ($status == 1) {\r\n                    $condition&#91;'activity_start'] = &#91;'gt', time()];\r\n                } elseif ($status == 2) {\r\n                    $condition&#91;'activity_start'] = &#91;'lt', time()];\r\n                    $condition&#91;'activity_end'] = &#91;'gt', time()];\r\n                } elseif ($status == 3) {\r\n                    $condition&#91;'activity_end'] = &#91;'lt', time()];\r\n                }\r\n            }\r\n            $db = db($this->table_point_exchange, $this->connection)\r\n                ->field('id_ep,id_shop,exchange_name,head_image,range_user,'\r\n                    . 'activity_start,activity_end,activity_address,activity_type,'\r\n                    . 'activity_tags,points,margin_nums')\r\n                ->where($condition)\r\n                ->page($page, 10);\r\n\r\n            $filterTags = explode(',', $tag);\r\n            if (!empty($tag)) {\r\n                foreach ($filterTags as $t) {\r\n                    if (!empty($t)) {\r\n                        $conditionOrTags&#91;] = 'activity_tags =' . $t;\r\n                        $conditionOrTags&#91;] = 'activity_tags like \\'' . $t . ',%\\'';\r\n                        $conditionOrTags&#91;] = 'activity_tags like \\'%,' . $t . ',%\\'';\r\n                        $conditionOrTags&#91;] = 'activity_tags like \\'%,' . $t . '\\'';\r\n                    }\r\n                }\r\n                if (!empty($conditionOrTags)) {\r\n                    $db->where(function ($query) use ($conditionOrTags) {\r\n                        foreach ($conditionOrTags as $k => $conditionOr) {\r\n                            $query->whereOr($conditionOr);\r\n                        }\r\n                    });\r\n                }\r\n            }\r\n\r\n            if (ShopID::isFilaClub($id_shop)) {\r\n                $order_str = '(case when id_shop = ' . $id_shop . ' then 1 else 0 end) desc,';\r\n                if ($card_rank) {\r\n                    $order_str .= '(case when FIND_IN_SET(' . $card_rank . ',range_user)>0 then 1 else 0 end) desc,';\r\n                }\r\n                $order_str .= 'id_ep desc';\r\n                $db = $db->orderRaw($order_str);\r\n            } else {\r\n                $order_str = '';\r\n                if ($card_rank) {\r\n                    $order_str .= '(case when FIND_IN_SET(' . $card_rank . ',range_user)>0 then 1 else 0 end) desc,';\r\n                }\r\n                $order_str .= 'id_ep desc';\r\n                $db = $db->orderRaw($order_str);\r\n            }\r\n\r\n\/\/            $data = $db->fetchSql()->select();\r\n\/\/            var_dump($data);\r\n\/\/            die;\r\n            $data = $db->select();\r\n            if (empty($data)) {\r\n                \/\/ \u9632\u6b62\u7a7f\u900f\r\n                cache($cache_key, -1, 300);\r\n                return &#91;];\r\n            }\r\n            cache($cache_key, $data, 600);\r\n        }\r\n\r\n\r\n        $ModWriteOffCodeTags = new ModWriteOffCodeTags();\r\n        $tagsList = $ModWriteOffCodeTags->getTagsList();\r\n        $tagsList = array_column($tagsList, 'val', 'k');\r\n\r\n        $ModShops = new ModShops();\r\n        $id_shops = &#91;2,5,77];\r\n        $appidList = &#91;];\r\n        foreach ($id_shops as $val) {\r\n            $shopInfo = $ModShops->getShopInfoOne($val);\r\n            $appidList&#91;$val] = $shopInfo&#91;'wx_appid'];\r\n        }\r\n        foreach ($data as &amp;$val) {\r\n            $val&#91;'status_msg'] = '';\r\n            if ($val&#91;'activity_start'] > time()) {\r\n                $val&#91;'status_msg'] = '\u672a\u5f00\u59cb';\r\n            } elseif ($val&#91;'activity_end'] &lt; time()) {\r\n                $val&#91;'status_msg'] = '\u5df2\u7ed3\u675f';\r\n            } else {\r\n                $val&#91;'status_msg'] = '\u8fdb\u884c\u4e2d';\r\n            }\r\n            $activity_tags = explode(',', $val&#91;'activity_tags']);\r\n            unset($val&#91;'activity_tags']);\r\n            foreach ($activity_tags as $t) {\r\n                if (!empty($t) &amp;&amp; isset($tagsList&#91;$t])) {\r\n                    $val&#91;'activity_tags']&#91;] = $tagsList&#91;$t];\r\n                }\r\n            }\r\n            $val&#91;'appid'] = $appidList&#91;$val&#91;'id_shop']] ?? '';\r\n            $val&#91;'path'] = '\/packages\/pointsMall\/details\/index';\r\n            unset($val&#91;'activity_start'], $val&#91;'activity_end']);\r\n        }\r\n\r\n        return array_values($data);\r\n    }<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-125","post","type-post","status-publish","format-standard","hentry","category-thinking"],"_links":{"self":[{"href":"https:\/\/www.zhukaifu.cn\/index.php?rest_route=\/wp\/v2\/posts\/125","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.zhukaifu.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.zhukaifu.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.zhukaifu.cn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.zhukaifu.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=125"}],"version-history":[{"count":2,"href":"https:\/\/www.zhukaifu.cn\/index.php?rest_route=\/wp\/v2\/posts\/125\/revisions"}],"predecessor-version":[{"id":127,"href":"https:\/\/www.zhukaifu.cn\/index.php?rest_route=\/wp\/v2\/posts\/125\/revisions\/127"}],"wp:attachment":[{"href":"https:\/\/www.zhukaifu.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=125"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.zhukaifu.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=125"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhukaifu.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=125"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}