Test.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. <?php
  2. namespace app\controller\api;
  3. use app\extra\basic\Base;
  4. use app\extra\jhfPay\Pay;
  5. use app\extra\tools\CodeExtend;
  6. use app\model\saas\SaasCart;
  7. use app\model\saas\SaasOrderDetail;
  8. use app\model\saas\SaasUser;
  9. use app\model\saas\SaasUserOpen;
  10. use LinFly\Annotation\Route\Controller;
  11. use LinFly\Annotation\Route\Route;
  12. use support\Request;
  13. use support\think\Db;
  14. use Webman\Push\Api;
  15. use Webman\RedisQueue\Redis;
  16. #[Controller(prefix: "/api/test")]
  17. class Test extends Base
  18. {
  19. protected array $whiteShop = [
  20. "10888572278827" => "10888572278827", // 惠印多马村店
  21. "10888566286841" => "327545130062964", // 中站小学店
  22. "10888590458813" => "326945519114632", // 幸小印美店
  23. "10888645729727" => "326844775971796", // 焦作和平街店
  24. ];
  25. #[Route(path: "pay",methods: "get")]
  26. public function testPay(Request $request)
  27. {
  28. try {
  29. $respJhf = (new Pay)->config([
  30. "appid" => sConf("wechat.jhf_appid"),
  31. "mch_id" => sConf("wechat.jhf_mch_id"),
  32. "aeskey" => sConf("wechat.jhf_aeskey"),
  33. "pubkey" => sConf("wechat.jhf_pubkey"),
  34. "prikey" => sConf("wechat.jhf_prikey"),
  35. ]);
  36. $jsResp = $respJhf->createBalancePay([
  37. "app_id" => sConf("wechat.jhf_appid"),
  38. "order_no" => CodeExtend::uniqidDate(18),
  39. "member_id" => "300919564646719394",
  40. "pay_amt" => "77.73",
  41. "description" => "补发"
  42. ]);
  43. // $jsResp = $respJhf->createBalanceWithdraw([
  44. // "app_id" => sConf("wechat.jhf_appid"),
  45. // "order_no" => "9D18B0EEB5E70548308CB77274755601",
  46. // "member_id" => "974707386910290082",
  47. // "remark" => "2026-05-01-结算",
  48. // "notify_url" => "https://panel.huiyinduo.cn/notify/withdraw",
  49. // ]);
  50. print_r($jsResp);
  51. // $param_data = array();
  52. // $param_data["order_no"] = date("YmdHis").CodeExtend::random(8);
  53. // $param_data["app_id"] = "app_6666000195741955";
  54. // $param_data["pay_channel"] = "wx_lite";
  55. // $param_data["pay_amt"] = "0.10";
  56. // $param_data["goods_title"] = "智惠印打印";
  57. // $param_data["device_info"] = array("device_ip" => '192.168.0.1');
  58. // $param_data["expend"] = [
  59. // "wx_app_id" => "wxbeeb0dcd7336612f",
  60. // "open_id" => "omf322AlD9wFjm5Ucix9uKmRXd4I"
  61. // ]; //expend参数根据支付渠道变化
  62. // $param_data["notify_url"] = "https://panel.huiyinduo.cn/notify/wx"; //接收支付结果异步通知地址
  63. // $resp = (new Pay)->config([
  64. // "appid" => "app_6666000195741955",
  65. // "mch_id" => "1120260422467651",
  66. // "aeskey" => "54784acef7d89b50edff9d42832f124c",
  67. // "pubkey" => "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOKBBFXirWIJth+SNJCY4mhbATbL60sKV66bRixHMVz8vpBqONio9X6A+Pm9LNutBe+hLpI1BMmFJk3Mb1/QEcklWptRGgHqIrBxR4b19qc/2/pSxyqlpaifYJFZhOg2+OcQ/fqpAmhNXN5uc1pcYvbvWTam0j+6+nBNQeAAku5QIDAQAB",
  68. // "prikey" => "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAOK1bos5glGB/tq/iyDaCLwAgVUwTLRFltG7j5QjS+CEBu/0t6wW3z2UfacMxWGRgkPQBWCDNSOlYV9gVOoxtfj3TS0zWK1t9OCO+7PaSI9BqkYumlylpRq09gplul6C7HXgrWx3WxuzbLXSaJ6wAeFr0ZY1KqPdhZ5OB7m0zNeXAgMBAAECgYAr1COg6udU1qrso2dEXKKfpgFa9NF/cIyt03L4krJSn3Ov5EG2FV3nS9PW/dMS/8yNS6Qeen9Feu2OQNNpy16AfDiy5cFn5MvLm/PHb7syBMaakuKogEDYKnoo/CPbI8kTYymZA0tDnad1BkeY3lb0Bx6ou4oRZ+TYc0QOJCqwUQJBAPE7QRhpR4VygkIcPORyIR7PhBKkxmMz+ZHt+E/ep7o5KpdDfBP95gUs7591BZDnyh1EBrkBh9G8WQVBCeV9Qk0CQQDwlpEsLyw9DdtgKTneoRfw+bnLhIfvkshoxfhWf3i4iCcIqAvZZbfInY2W37vBJrtpfirHOhpuLjV7R2fqSctzAkBCuuJx70WSm69+vDL3+r5AuKTPR3d9n7YM8Sg8Z9o8AG5Qs6FSIm0Lx3dtw8BLamMVn2jAqrS4hwKVGn2zVugNAkEAyjFgFEgY377TjX9YOTgdzNGzSc06CSfM8fDfAqLirAMQ+v9v5ebMi/eNVSz2uB97Be+YuBKmv85p+A9Mz+Pw7QJAb4fn1d5Tw3B7gku3XANH3RTfvNWBeXBpxpAlnaxJU39pVh4lh9UGoaWGoEKEdufHSJhJMUtaSpI2morVAfo0Ow==",
  69. // ])->createPay($param_data);
  70. return success("ok");
  71. } catch (\Throwable $throwable) {
  72. return error($throwable->getMessage());
  73. }
  74. }
  75. #[Route(path: "s2",methods: "get")]
  76. public function sendWs2()
  77. {
  78. try {
  79. Redis::send("push-print",['type' => 'order' , 'order' => '202604205907640644072']);
  80. return success("ok");
  81. } catch (\Throwable $throwable) {
  82. return error($throwable->getMessage());
  83. }
  84. }
  85. #[Route(path: "s",methods: "get")]
  86. public function sendWs()
  87. {
  88. try {
  89. // return error('err');
  90. $api = new Api('http://127.0.0.1:3232',
  91. config('plugin.webman.push.app.app_key'),
  92. config('plugin.webman.push.app.app_secret'));
  93. $param = $this->_valid([
  94. "color.default" => "color",
  95. "size.default" => "A4",
  96. "key.default" => "004356708646",
  97. "shop.default" => "10888543912042",
  98. "name.default" => "qiantai",
  99. "id.default" => "29131",
  100. "number.default" => 1,
  101. "range.default" => "1",
  102. "duplex.default" => "simplex"
  103. ]);
  104. $printJobData = (new SaasOrderDetail)->where("paper_size",'A4')->where("extension",'docx')->limit(1)->order("create_at",'desc')->select();
  105. // $printJobData = (new SaasOrderDetail)->where("id",$param['id'])->select();
  106. // $printJobData = (new SaasOrderDetail)->whereDay("create_at","yesterday")->limit(1)->select();
  107. if ($printJobData->isEmpty()) return error('err');
  108. $printData = [];
  109. foreach ($printJobData as $key=>$printJob) {
  110. $range = "1";
  111. // if ($printJob['end_page'] > $printJob['start_page']) {
  112. // $range = $printJob['start_page']."-".$printJob['end_page'];
  113. // }
  114. // if ($printJob['end_page'] == $printJob['start_page']) {
  115. // $range = (string) $printJob['end_page'];
  116. // }
  117. $color_mode = ($printJob['color']==1?'color':'monochrome');
  118. $duplex = "simplex";
  119. if ($printJob['paper_size'] == 'A4' && $printJob['duplex'] == 2) {
  120. $duplex = 'duplexlong'; // duplexlong
  121. }
  122. if ($printJob['paper_size'] == 'A3' && $printJob['duplex'] == 2) {
  123. $duplex = 'duplexlong'; // duplexshort
  124. }
  125. $printData[$key] = [
  126. "printerName" => $param['name'],
  127. "copies" => $param['number'],
  128. "landscape" => false,
  129. "paperSize" => $param['size'],
  130. "pageRange" => $param['range'],
  131. "duplex" => $param['duplex'],
  132. "colorMode" => $param['color'],
  133. "jobId" => $printJob['id'],
  134. "dpi" => 300,
  135. "action" => 'create',
  136. "scaleMode" => 'fit',
  137. "remoteUrl" => "https://zhy-1355132020.cos.ap-guangzhou.myqcloud.com/".$printJob['path'],
  138. // "remoteUrl" => "https://zhy-1355132020.cos.ap-guangzhou.myqcloud.com/pdfs/20260501/12456-001_ac02a21c-3ad6-436f-9c13-ec415d26b21d.pdf", //竖版
  139. // "remoteUrl" => "https://zhy-1355132020.cos.ap-guangzhou.myqcloud.com/ossmini/20260502/1777694521564_sopo6f.pdf", // 横版
  140. // "remoteUrl" => "https://yunenv.oss-cn-shenzhen.aliyuncs.com/a3shu.pdf", // 横版
  141. // "remoteUrl" => "https://inmei-print.oss-cn-guangzhou.aliyuncs.com/wxjiaoyi.pdf",
  142. // "remoteUrl" => "https://zhy-1355132020.cos.ap-guangzhou.myqcloud.com/ossmini/20260504/1777898266812_rcyph1.docx",
  143. // "customFileName" => $printJob['order_sn']."_".$printJob['id'],
  144. "customFileName" => time()."_".$printJob['id'],
  145. ];
  146. }
  147. $api->trigger("client-{$param['key']}-{$param['shop']}",'message',[
  148. "type" => "print",
  149. "data" => $printData
  150. ]);
  151. // if (!$printJob->isEmpty()) {
  152. // $range = "1";
  153. // // if ($printJob['end_page'] > $printJob['start_page']) {
  154. // // $range = $printJob['start_page']."-".$printJob['end_page'];
  155. // // }
  156. // // if ($printJob['end_page'] == $printJob['start_page']) {
  157. // // $range = (string) $printJob['end_page'];
  158. // // }
  159. // $color_mode = ($printJob['color']==1?'color':'monochrome');
  160. // $duplex = "simplex";
  161. // if ($printJob['paper_size'] == 'A4' && $printJob['duplex'] == 2) {
  162. // $duplex = 'duplexlong'; // duplexlong
  163. // }
  164. // if ($printJob['paper_size'] == 'A3' && $printJob['duplex'] == 2) {
  165. // $duplex = 'duplexshort'; // duplexshort
  166. // }
  167. // $api->trigger("client-005571234125-10888543912042",'message',[
  168. // "type" => "print",
  169. // "data" => [
  170. // [
  171. // "printerName" => "750",
  172. // "copies" => "1",
  173. // // "copies" => (string)$printJob['number'],
  174. // "landscape" => false,
  175. // "paperSize" => "A4",
  176. // // "paperSize" => $printJob['paper_size'],
  177. // "pageRange" => $range,
  178. // "duplex" => "duplexlong",
  179. // // "duplex" => $duplex,
  180. // "monochrome" => $color_mode,
  181. // "colorMode" => "monochrome",// monochrome color
  182. // "jobId" => $printJob['id']."-".time().rand(1,99),
  183. // "action" => 'create',
  184. // "scaleMode" => 'fit',
  185. // "remoteUrl" => "https://cdn-zhy.huiyinduo.cn/".$printJob['path'],
  186. // "customFileName" => $printJob['order_sn']."_".$printJob['id'],
  187. // ]
  188. // // "exe" => ['-print-to',$printJob['print_name'],'-print-settings',"{$range},{$printJob['number']}x,{$color_mode},$duplex,fit,paper={$printJob['paper_size']}",'-silent'],
  189. // ]
  190. // ]);
  191. // }
  192. return success("ok",compact('printData'));
  193. } catch (\Throwable $throwable) {
  194. return error($throwable->getMessage());
  195. }
  196. }
  197. #[Route(path: "t",methods: "get")]
  198. public function testData(Request $request): \support\Response
  199. {
  200. try {
  201. // $data = (new SaasUserOpen)->whereNotNull("oid")->whereDay("update_at",'yesterday')->select();
  202. $data = (new SaasUserOpen)->whereNotNull("oid")->whereDay("update_at")->select();
  203. if ($data->isEmpty()) return error("ok");
  204. $userData = [];
  205. foreach ($data as $key=>$val) {
  206. if (!empty($val['oid'])) {
  207. $old = Db::connect("old")->table("inmei_member_card")->where("openid",$val['oid'])->find();
  208. if (!empty($old)) {
  209. $shopId = $old['shop_id'];
  210. if (isset($this->whiteShop[$old['shop_id']])) {
  211. $shopId = $this->whiteShop[$old['shop_id']];
  212. }
  213. $card = (new SaasUser)->where("openid",$val['openid'])->findOrEmpty();
  214. if ($card->isEmpty()) {
  215. $userData[$key] = [
  216. "openid" => $val['openid'],
  217. "shop_id" => $shopId,
  218. "card_no" => strtoupper(md5($val['openid'].$shopId)),
  219. "balance" => $old['balance'],
  220. "total_balance" => $old['total_balance'],
  221. "remark" => "迁移,原ID:{$old['openid']}",
  222. ];
  223. }
  224. }
  225. }
  226. }
  227. if (!empty($userData)) {
  228. (new SaasUser)->insertAll($userData);
  229. }
  230. return success("ok",array_values($userData));
  231. } catch (\Throwable $throwable) {
  232. echo $throwable->getLine()."\n";
  233. return error($throwable->getMessage());
  234. }
  235. }
  236. #[Route(path: "tid",methods: "get")]
  237. public function testDataId(Request $request): \support\Response
  238. {
  239. try {
  240. $id = $request->get("id",16992);
  241. Redis::send("push-print",['type' => 'id' , 'order' => $id]);
  242. return success("ok");
  243. } catch (\Throwable $throwable) {
  244. echo $throwable->getLine()."\n";
  245. return error($throwable->getMessage());
  246. }
  247. }
  248. }