Life.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <?php
  2. namespace app\controller\notify;
  3. use app\extra\basic\Base;
  4. use app\extra\dyMini\PlanLive;
  5. use app\model\saas\SaasGoods;
  6. use app\model\saas\SaasOrder;
  7. use LinFly\Annotation\Attributes\Route\Controller;
  8. use LinFly\Annotation\Attributes\Route\GetMapping;
  9. use LinFly\Annotation\Attributes\Route\PostMapping;
  10. use support\Request;
  11. use support\Response;
  12. use Webman\RedisQueue\Redis;
  13. /**
  14. * 生活应用解决方案接入
  15. */
  16. #[Controller("/life")]
  17. class Life extends Base
  18. {
  19. #[GetMapping("test")]
  20. public function test2data(Request $request): Response
  21. {
  22. try {
  23. // $param = $this->_valid([
  24. // "order.require" => trans("empty.require"),
  25. // ],$request->method());
  26. // if (!is_array($param)) return error($param);
  27. // Redis::send("order-done",['order' => $param['order']]);
  28. // return success('ok');
  29. $data = (new PlanLive)->config([
  30. "appid" => sConf("wechat.mini_appid"),
  31. "secret" => sConf("wechat.mini_secret"),
  32. ])->token()->getPlan2Goods([7663786142546708530]);
  33. return success('success',$data);
  34. } catch (\Throwable $throwable) {
  35. return error($throwable->getMessage());
  36. }
  37. }
  38. #[PostMapping("spi")]
  39. public function getLifeSpi(Request $request): Response
  40. {
  41. try {
  42. $param = $request->all();
  43. // echo getDateFull()."===自研应用回调===\n";
  44. // print_r($param);
  45. return error("ddd");
  46. } catch (\Throwable $throwable) {
  47. return error($throwable->getMessage());
  48. }
  49. }
  50. #[PostMapping("hook")]
  51. public function getLifeHook(Request $request): Response
  52. {
  53. try {
  54. $data = $request->all();
  55. // echo getDateFull()."===自研应用回调WebHook===\n";
  56. // print_r($data);
  57. if (isset($data['event']) && $data['event'] == "verify_webhook") {
  58. return json(['challenge' => $data['content']['challenge']]);
  59. }
  60. $content = json_decode($data['content'],true);
  61. switch ($data['event']) {
  62. case "life_product_status_change": // 商品状态变化
  63. if (in_array($content['status'],['GOODS_OFFLINE','GOODS_BAN','GOODS_DELETE'])) { // 商品下架
  64. (new SaasGoods)->where("goods_id",$content['product_id'])->update(['status' => 3]);
  65. }
  66. break;
  67. case "verify": // 核销
  68. $order = (new SaasOrder)->where("order_sn",$content['certificate']['order_id'])->findOrEmpty();
  69. if (!$order->isEmpty()) {
  70. $order->save([
  71. "express_status" => 3,
  72. "done_at" => getDateFull(),
  73. ]);
  74. }
  75. break;
  76. default:
  77. break;
  78. }
  79. return error("ddd");
  80. } catch (\Throwable $throwable) {
  81. return error($throwable->getMessage());
  82. }
  83. }
  84. #[PostMapping("mini")]
  85. public function getMiniHook(Request $request): Response
  86. {
  87. try {
  88. $data = $request->all();
  89. // echo getDateFull()."===小程序WebHook===\n";
  90. // print_r($data);
  91. if (isset($data['event']) && $data['event'] == "verify_webhook") {
  92. return json(['challenge' => $data['content']['challenge']]);
  93. }
  94. return error("ddd");
  95. } catch (\Throwable $throwable) {
  96. return error($throwable->getMessage());
  97. }
  98. }
  99. }