123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400 |
- <?php
- namespace app\api\controller;
- use app\api\model\Order as OrderModel;
- use app\api\model\User as UserModel;
- use app\common\enum\order\PayType as OrderPayTypeEnum;
- use app\common\enum\order\ReceiptStatus as ReceiptStatusEnum;
- use app\common\service\Message;
- use app\store\model\card\UserRiceDelivery as UserRiceDeliveryModel;
- use app\store\model\card\UserRiceDeliveryExpress as UserRiceDeliveryExpressModel;
- use PhpOffice\PhpSpreadsheet\Spreadsheet;
- use PhpOffice\PhpSpreadsheet\IOFactory;
- use PhpOffice\PhpSpreadsheet\Writer\Xls;
- use PhpOffice\PhpSpreadsheet\Writer\Xls\Xf;
- use app\api\service\ricecard\PaySuccess;
- use app\api\model\card\RiceCardGoods as RiceCardGoodsModel;
- use app\api\model\order\RiceCardPay;
- use app\common\model\OrderTj;
- use app\api\service\groupbuy\PaySuccess as GroupBuyPaySuccess;
- use app\api\model\order\GroupBuyPay;
- use app\common\enum\order\OrderSource as OrderSourceEnum;
- use app\api\model\order\GroupBuyLbPay;
- use app\common\model\ConsistentHash;
- use app\common\model\Wechat;
- use app\common\model\groupbuylb\GroupBuyLbJoin;
- use app\api\model\subscribe\WechatSub;
- use app\job\MiaoshaPushSubscribe;
- use think\queue\Job;
- use app\api\service\order\PaySuccess as PaySuccessModel;
- use app\console\task\OrderCancel;
- use app\console\service\Order as OrderService;
- use app\common\service\goods\source\Factory;
- use app\api\service\za\PaySuccess as ZaPaySuccessModel;
- use think\cache\driver\Redis;
- use app\common\model\RedisString;
- use app\api\model\kj\KjActivityJoin;
- /**
- * 默认控制器
- * Class Index
- * @package app\api\controller
- */
- class Test extends Controller
- {
- public function pt(){
- $join_id = $_GET['join_id']??0;
- if($join_id>0){
- $pay = new GroupBuyLbPay;
- $pay->ptSuccessNotify($join_id);
- echo 'success';
- }
- }
- public function tj(){
- $res = UserModel::setIncAccumulatePoints(107633,99.11,10,'老板赠送');
- dd($res);
- $otj = new OrderTj;
- $day = $otj->day(0);
-
- $day = $otj->day(1);
- $month = $otj->month();
- $week = $otj->week();
-
- }
- public function testPay(){
- $join = new KjActivityJoin;
- $res = $join->lastHelpAdd(133,rand(100,200));
-
- $res2 = $join->lastHelp(133,1000);
- var_dump($res2);
- // return $res;
- // RedisString::getInstance()->zAdd("na",2,'va2');
- // $res = RedisString::getInstance()->zRange("na",0,10);
- // var_dump($res);
- // $rds = new Redis(config('cache.stores.redis'));
-
-
- // $rds->handler()->lPush("m",2);
- // var_dump($rds->handler()->lrange('m',0,2));
- // $order_no = 'ysc2022083110110055';
- // $p = new ZaPaySuccessModel($order_no);
- // $paydata['transaction_id'] = rand(100000,999999);
- // $paydata['out_trade_no'] = $order_no;
- // $p->onPaySuccess(20, $paydata);
- // Factory::getFactory(60)->test();
- // $order_no = 'ysc2022070810249994';
- // $p = new PaySuccessModel($order_no);
- // $paydata['transaction_id'] = rand(100000,999999);
- // $p->onPaySuccess(20, $paydata);
- // $cancel = new OrderService;
- // $cancel->closeEvent(10001,1);
- // $sub = new MiaoshaPushSubscribe;
- // $data['ms_id'] =41;
- // $data['user_id'] = 107488;
- // // $job = new Job();
- // $sub->fire(null,$data);
- // $a = new GroupBuyPay;
- // $a->helpEnd(121);
- // $d = new WechatSub('li_ji_can_tuan');
- // $res = $d->addSub(220);
- // $res2 = $d->checkSub(220);
- // $page = 'pages/activity/pages/groupShopping/groupFission/groupFission';
- // $data = ['thing1'=>["value"=>"拼团有礼"],'thing2'=>["value"=>'活动已结束,去看看活动结果']];
- // $res3 = $d->pushSub(220,$page,$data);
-
- // var_dump($res,$res2);
- // $a = new GroupBuyLbPay;
- // $a->ptSuccessNotify(72);
- // $a->receiveCoupon(107786,15);
- // $a->activityEnd(228882,44);
- // $join= new GroupBuyLbJoin;
- // $openid = 'oQEF55LlnuBD6IVOqdO0eyq44U5M';
- // $res = $join->activityEnd($openid);
- // var_dump($res);
- // $config = (new Wechat)->weixinTokenCache();
- // var_dump($config);
- // $p = new GroupBuyLbPay;
- // $data['out_trade_no'] ='2022061010252495';
- // $data['transaction_id'] = 111111111111111;
- // $res = $p->notifyPay($data);
- // var_dump($res);
- // $p = new GroupBuyLbPay;
- // $p->receiveCoupon(107580,2);
- // $node = ['server1','server2','server3'];
- // $c = new ConsistentHash;
- // $c->setVirtualNum(3);
- // $c->addNodes($node);
-
- // $res1 = $c->getNode('abklsaf');
- // $res2 = $c->getNode('b321a21');
- // $res3 = $c->getNode('z3212a21');
- // var_dump($res1,$res2,$res3);
- // $t = new RiceCardPay;
- // $pay['out_trade_no'] = '20220118115418571019';
- // $t->notifyPay($pay);
- // $order_no = 'rc-20211122162120505799';
- // $p = new PaySuccess($order_no);
- // $orderInfo = $p->getOrderInfo();
- // $rs = $p->onPaySuccess(20,['out_trade_no'=>$order_no]);
- // $goodList = RiceCardGoodsModel::where('card_id',3)->select()->toArray();
- // var_dump($goodList[0]['goods_id']);
-
- // $order_no = 'ysc2022041498575097';
- // $p = new GroupBuyPaySuccess($order_no);
- // $p->onPaySuccess(20,['out_trade_no'=>$order_no]);
- // $p = new GroupBuyPay;
- // $data['out_trade_no'] = 'ysc2022041653974953';
- // $p->notifyPay($data);
- // $g->ptSuccessNotify(1);
- // $out_trade_no = 'ysc2022042251505798';
- // $data['out_trade_no'] = $out_trade_no;
- // $p = new GroupBuyPaySuccess($out_trade_no);
- // $p->onPaySuccess(20, $data);
- // $p = new GroupBuyPay;
- // $p->test();
- }
- /**
- * 导出示例
- * @throws \PhpOffice\PhpSpreadsheet\Writer\Exception
- */
- public function testExport(){
- $data = [
- ['title'=>'张三', 'content' => '张三的内容', 'prices' => '100', 'create_time' => '2017.10.12', 'end_time' =>'2020.12.12'],
- ['title'=>'李四', 'content' => '李四的内容', 'prices' => '222', 'create_time' => '2017.10.12', 'end_time' =>'2020.12.12'],
- ['title'=>'王莽', 'content' => '王莽的内容', 'prices' => '343', 'create_time' => '2017.10.12', 'end_time' =>'2022.03.12'],
- ];
- $header = ['名称', '内容', '金额', '开始时间', '结束时间'];
- return self::export($data, $header, $title = 'test', $filename = 'test', $file_type = 'Csv');
- }
- /**
- * 下载导出文件
- * @param array $data
- * @param array $header 表头
- * @param string $title excel标题
- * @param string $filename 文件名称
- * @param string $format
- * @throws \PhpOffice\PhpSpreadsheet\Writer\Exception
- */
- public function export(array $data, array $header, $title = 'test', $filename = 'test', $format = 'Csv')
- {
- set_time_limit(0);
- $title_key = [];
- foreach ($data[0] as $key=>$val){
- $title_key[] = $key;
- }
- $unit = array(
- 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U',
- 'V', 'W', 'X', 'Y', 'Z', 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN',
- 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY', 'AZ'
- );
- $line_count = count($header);
- $newExcel = new Spreadsheet(); //创建一个新的excel文档
- $objSheet = $newExcel->getActiveSheet(); //获取当前操作sheet的对象
- $objSheet->setTitle($title); //设置当前sheet的标题
- $n = 1;
- for ($i = 0; $i < $line_count; ++$i){
- $newExcel->getActiveSheet()->getColumnDimension($unit[$i])->setAutoSize(true);
- $objSheet->setCellValue($unit[$i].$n, $header[$i]);
- foreach ($data as $key=>$val){
- $m = $key + 2;
- $objSheet->setCellValue($unit[$i] . $m, $val[$title_key[$i]]);
- }
- }
- ob_end_clean() ;
- // $format只能为 Xlsx 或 Xls
- if ($format == 'Xlsx') {
- header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
- } elseif ($format == 'Xls') {
- header('Content-Type: application/vnd.ms-excel');
- }else{
- header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
- }
- $filename = $filename .'-'. date('YmdHis') . '.' . strtolower($format);
- header("Content-Disposition: attachment;filename=" . $filename);
- header('Cache-Control: max-age=0');
- header('Access-Control-Allow-Origin:*');
- $objWriter = IOFactory::createWriter($newExcel, $format);
- ob_start(); //打开缓冲区
- $objWriter->save('php://output');
- $xlsdata =ob_get_contents();
- ob_end_clean();
- $data['filename'] = $filename;
- $data['file'] = "data:application/vnd.ms-excel;base64,".base64_encode($xlsdata);
- return $data;
- //通过php保存在本地的时候需要用到
- // $objWriter->save($filename);
- //以下为需要用到IE时候设置
- // If you're serving to IE 9, then the following may be needed
- // header('Cache-Control: max-age=1');
- // //If you're serving to IE over SSL, then the following may be needed
- // header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
- // header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); // always modified
- // header('Cache-Control: cache, must-revalidate'); // HTTP/1.1
- // header('Pragma: public'); // HTTP/1.0
- // exit;
- }
- public function weather($cityNm = '深圳'){
- $url = 'http://api.k780.com/?app=weather.future&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json&cityNm='.$cityNm;
- $curl = curl_init();
- curl_setopt($curl, CURLOPT_URL, $url);
- curl_setopt($curl, CURLOPT_HEADER, false);
- curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);//这个是重点。
- $result = curl_exec($curl);
- curl_close($curl);
- $ret = json_decode($result,1)['result'];
- $str = '城市:'.$cityNm."\r\n";
- $i = 0;
- foreach ($ret as $arr){
- // if($i>2) continue;//只展示最近三天的天气
- $i++;
- $days = substr($arr['days'],5);
- $str .= "{$days},{$arr['week']},{$arr['weather']},{$arr['temp_low']}~{$arr['temp_high']}℃,{$arr['wind']}{$arr['winp']}\r\n";
- }
- // dd($str);
- $url = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=bf17777d-35ab-4b80-9361-13927929cce5';//企业微信机器人url
- $payload = '{
- "msgtype": "text",
- "text": {
- "content": "'.$str.'",
- "mentioned_list":["@all"]
- }
- }';
- curl_post($url,$payload);
- }
- public function paySuccess(){
- // $res = OrderModel::getPayDetail('2021112455575510');
- // return $this->renderSuccess(compact('res'));
- $data = array(
- 'appid' => 'wx7dddfa81774127fd',
- 'attach' => '{"order_type":10}',
- 'bank_type' => 'OTHERS',
- 'cash_fee' => '10',
- 'fee_type' => 'CNY',
- 'is_subscribe' => 'N',
- 'mch_id' => '1503642721',
- 'nonce_str' => 'ed78d7c300fa86cc779fcb072c84b2d2',
- 'openid' => 'oQEF55KHmx4khsQ8C6QLtYZuhKps',
- 'out_trade_no' => '2021112449541015',
- 'result_code' => 'SUCCESS',
- 'return_code' => 'SUCCESS',
- 'sign' => '3D08DF8EA03D2E636A493B88ECFDA214',
- 'time_end' => '20211124103303',
- 'total_fee' => '10',
- 'trade_type' => 'JSAPI',
- 'transaction_id' => '4200001161202111248193903429'
- );
- $model = new \app\api\service\order\PaySuccess($data['out_trade_no']);
- $res = $model->onPaySuccess(OrderPayTypeEnum::WECHAT, $data);
- dd($res);
- }
- //测试记录
- public function updUserRiceDelivery(){
- $model = new UserRiceDeliveryExpressModel();
- //获取物流单号相同并且没有签收的订单商品包裹记录
- $userRiceDeliveryExpress = $model->where(['express_no'=>'75512535883406斯蒂芬斯蒂芬斯蒂芬','is_sign'=>0])->select();
- foreach ($userRiceDeliveryExpress as $express){
- $express->is_sign = 1;
- $express->sign_time = date('Y-m-d H:i:s');
- $express->receipt_status = ReceiptStatusEnum::RECEIVED;
- $express->receipt_time = date('Y-m-d H:i:s');
- $express->save();
- //如果所有的订单商品包裹都已经签收了,那就更新订单商品结算时间
- if(!UserRiceDeliveryExpressModel::where(['user_rice_delivery_id'=>$express['user_rice_delivery_id'],'is_sign'=>0])->count()){
- $data= [
- 'receipt_status' => ReceiptStatusEnum::RECEIVED,
- 'receipt_time' => time(),
- 'status' => 20,
- ];
- UserRiceDeliveryModel::updateBase($data, ['id'=>$express['user_rice_delivery_id']]);
- }
- }
- }
- /**
- * 生成优惠券小程序码(历史数据 执行一次)
- * @mixed
- */
- public function genCouponQrcode()
- {
- $data = \app\store\model\Coupon::where('qrcode_id', '=', 0)->select();
- foreach ($data as $item) {
- $qrcodeId = \app\store\model\Coupon::genQrcode($item['coupon_id']);
- $item->qrcode_id = $qrcodeId;
- $item->save();
- }
- }
- }
|