点开工具、字典、anything


2019-08-23

<h1>红包活动</h1> <p>直接用easywechat发起到微信请求,在调用后,需注意如果放款失败,要主动查询结果以确定最终结果</p> <p><strong>发起红包支付</strong> 需要用户手动点击触发领钱</p> <pre><code class="language-php"> $config = [ 'app_id' =&gt; $payconfig-&gt;pay_appid, 'mch_id' =&gt; $payconfig-&gt;pay_mchid, 'key' =&gt; $payconfig-&gt;pay_key, 'cert_path' =&gt; __DIR__ . '/cert.pem', //使用绝对路径, 'key_path' =&gt; __DIR__ . '/key.pem', ]; $payment = Factory::payment($config); $redpack = $payment-&gt;redpack; $redpackData = [ 'mch_billno' =&gt; $m_number, 'send_name' =&gt; '好货雷达', 're_openid' =&gt; $openid, 'total_num' =&gt; 1, //固定为1,可不传 'total_amount' =&gt; intval($price * 100), //单位为分,不小于100 'wishing' =&gt; $description, 'act_name' =&gt; $title, 'remark' =&gt; $description ]; $result = $redpack-&gt;sendNormal($redpackData);</code></pre> <p><strong>发起企业付款</strong> 直接发放金额到用户钱包</p> <pre><code class="language-php"> $config = [ 'app_id' =&gt; $payconfig-&gt;pay_appid, 'mch_id' =&gt; $payconfig-&gt;pay_mchid, 'key' =&gt; $payconfig-&gt;pay_key, 'cert_path' =&gt; __DIR__ . '/cert.pem', 'key_path' =&gt; __DIR__ . '/key.pem', ]; $payment = Factory::payment($config); $redpack = $payment-&gt;transfer; $redpackData = [ 'partner_trade_no' =&gt; $m_number, // 商户订单号,需保持唯一性(只能是字母或者数字,不能包含有符号) 'openid' =&gt; $openid, 'check_name' =&gt; 'NO_CHECK', // NO_CHECK:不校验真实姓名, FORCE_CHECK:强校验真实姓名 're_user_name' =&gt; '', // 如果 check_name 设置为FORCE_CHECK,则必填用户真实姓名 'amount' =&gt; intval($price * 100), //单位为分,不小于100 'desc' =&gt; $description, // 企业付款操作说明信息。必填 ]; $result = $redpack-&gt;toBalance($redpackData);</code></pre> <p><strong>活动的设计上</strong> 使用redis锁来防止并发请求 活动详情存一份缓存 如果活动为限量或限价的,需要存一份剩余数量或金额的缓存</p> <pre><code class="language-php"> const ACTIVITY_LOCK = 's:string:shopping:activity:lock:'; //.{uid}活动领取锁 const ACTIVITY_POST_DATA_LOCK = 's:string:shopping:activity:post:data:lock:'; //.{uid}活动数据上报锁 const ACTIVITY_REQUEST_LOCK = 's:string:shopping:activity:request:lock'; //活动三方请求锁,避免并发 const ACTIVITY_DETAIL = 'h:shopping:activity:detail'; //field=number,营销活动详情 const ACTIVITY_LEFT_AMOUNT = 'h:shopping:activity:left:amount'; //field=number,营销活动剩余数量 const ACTIVITY_LEFT_PRICE = 'h:shopping:activity:left:price'; //field=number,营销活动剩余价格</code></pre> <h1>渠道改版</h1> <p>新建渠道时,遍历所有商品到该渠道下 新建商品时,遍历所有渠道来绑定该商品 渠道上下架不影响商品,但商品下架时,需要清除该商品的渠道绑定关系,不修改渠道上下架标识,商品上架时,恢复所有上架渠道关系</p> <pre><code class="language-php"> const GOODS_ENABLE_SOURCE_LIST = 'z:set:shopping:goods:enable:source:list:'; //{source_key} field=gid score=created_at总渠道 const GOODS_ONLINE_ENABLE_SOURCE_LIST = 'z:set:shopping:goods:enable:source:online:'; //{source_key} field=gid score=created_at渠道线上 const GOODS_UNDERLINE_ENABLE_SOURCE_LIST = 'z:set:shopping:goods:enable:source:underline:'; //{source_key} field=gid score=created_at渠道线下</code></pre>

页面列表

ITEM_HTML