MerchantDailyReport.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. <?php
  2. namespace app\models\system;
  3. use app\models\merchant\Merchant;
  4. use app\models\store\StoreOrder;
  5. use app\models\user\User;
  6. use app\models\user\BindUser;
  7. use crmeb\utils\Queue;
  8. use crmeb\basic\BaseModel;
  9. use crmeb\traits\ModelTrait;
  10. use crmeb\jobs\ReportJob;
  11. use crmeb\services\WechatService;
  12. use think\db\exception\DataNotFoundException;
  13. use think\db\exception\DbException;
  14. use think\db\exception\ModelNotFoundException;
  15. use think\facade\Route;
  16. class MerchantDailyReport extends BaseModel
  17. {
  18. /**
  19. * 数据表主键
  20. * @var string
  21. */
  22. protected $pk = 'id';
  23. /**
  24. * 模型名称
  25. * @var string
  26. */
  27. protected $name = 'merchant_daily_report';
  28. //业绩查询结果通知
  29. const REPORT = '2IcjJ4Rfge8dXDUTEl2YHRKW4Bfs2Jad6qYT5AhkyY8';
  30. use ModelTrait;
  31. /**
  32. * 记录昨天的记录
  33. * @throws DataNotFoundException
  34. * @throws DbException
  35. * @throws ModelNotFoundException
  36. */
  37. public static function recordYesterdayReport()
  38. {
  39. if (self::where('report_date', date('Y-m-d', strtotime('-1day')))->find()) {
  40. return;
  41. }
  42. $merchant_list = Merchant::column('id');
  43. foreach ($merchant_list as $v) {
  44. $add = [
  45. 'mer_id' => $v,
  46. 'report_date' => date('Y-m-d', strtotime('-1day')),
  47. 'add_time' => time(),
  48. 'today_reg' => User::where('mer_id', $v)->whereDay('add_time', 'yesterday')->count(),
  49. 'today_visit' => User::where('mer_id', $v)->whereDay('last_time', 'yesterday')->count(),
  50. 'today_order' => StoreOrder::where('mer_id', $v)->whereDay('add_time', 'yesterday')->count(),
  51. 'today_order_money' => StoreOrder::where('paid', 1)
  52. ->where('mer_id', $v)
  53. ->where('is_del', 0)
  54. ->where('refund_status', 0)
  55. ->whereDay('pay_time', 'yesterday')
  56. ->sum('pay_price'),
  57. ];
  58. self::create($add);
  59. }
  60. }
  61. /**
  62. * 发送商户报表模板消息
  63. */
  64. public static function sendMerchantMessage()
  65. {
  66. $merchant_list = Merchant::column('id');
  67. foreach($merchant_list as $v){
  68. $report = MerchantDailyReport::where('mer_id', $v)->where('report_date', date('Y-m-d', strtotime('-1day')))->find();
  69. if($report['state']){
  70. break;
  71. }
  72. $bindUser = BindUser::where(['mer_id' => $v, 'status' => 1, 'is_del' => 0])->column('openid');
  73. foreach($bindUser as $value){
  74. //发送模板消息
  75. Queue::instance()->do('sendMerchantMessage')->job(ReportJob::class)->data($report, $value, $v)->push();
  76. }
  77. MerchantDailyReport::where('id', $report['id'])->update(['state' => 1]);
  78. }
  79. }
  80. }