TmpMsg.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <?php
  2. namespace wx\offiaccount\client;
  3. use app\model\Employee;
  4. use app\model\Org;
  5. use app\model\User;
  6. use think\facade\Cache;
  7. use wx\offiaccount\msg\Template;
  8. use app\model\Setting;
  9. /**
  10. * 模板消息集合
  11. */
  12. class TmpMsg
  13. {
  14. /**
  15. * 管理层通知
  16. *
  17. * {{first.DATA}}
  18. * 服务类型:{{keyword1.DATA}}
  19. * 处理状态:{{keyword2.DATA}}
  20. * 反馈时间:{{keyword3.DATA}}
  21. * {{remark.DATA}}
  22. *
  23. * 示例:
  24. * 行为通知:
  25. * 服务类型:客户信息编辑/客户确认到店/客户签单/转发素材
  26. * 处理状态:员工张三对客户李四信息编辑/客户确认到店/客户签单/转发素材
  27. * 反馈时间:2023/4/4
  28. * 请悉知
  29. *
  30. */
  31. static public function sendMsgToLeader($data, $orgId)
  32. {
  33. //查询企业是否开启发送通知
  34. $root_id = Employee::where([['org_id','=',$orgId],['state', '=', '在职']])->value('root_id');
  35. $magnotify = Setting::where([['root_id', '=', $root_id], ['name', '=', 'magnotify']])->find();
  36. if (empty($magnotify) || (!empty($magnotify) && $magnotify->content == 0)) return;
  37. // 查找部门领导
  38. $p = Org::where(['id' => $orgId])->field('path,name,pid')->find();
  39. $l = explode('-', rtrim($p['path'], '-'));
  40. if(in_array($data['keyword1'],['客户信息编辑','转发素材'])){
  41. //获取员工部门及上级部门
  42. $shangorg_name = '';
  43. if($p['pid']) $shangorg_name = Org::where(['id'=>$p['pid']])->value('name');
  44. $twolevel_orgname = !empty($shangorg_name) ? $shangorg_name.'/'.$p['name'] : $p['name'];
  45. $data['keyword2'] = $twolevel_orgname.$data['keyword2'];
  46. }
  47. $uOp = Employee::where([
  48. ['org_id', 'in', $l],
  49. ['is_manager', '=', 1],
  50. ['state', '=', '在职'],
  51. ])->column('official_openid');
  52. foreach ($uOp as $i) {
  53. if(empty($i)) continue;
  54. $tmpId = 'jWwtOOOp6rWY-hTlodoS0n38tZ0VAPoOW6Tf8hxmd24';
  55. $token = static::getToken();
  56. $wxTemp = new Template();
  57. $rs = $wxTemp->sendTemplateMsg($token, [
  58. "touser" => $i,
  59. "template_id" => $tmpId,
  60. "data" => [
  61. "first" => [
  62. "value" => $data['first'],
  63. "color" => "#173177"
  64. ],
  65. "keyword1" => [
  66. "value" => $data['keyword1'],
  67. "color" => "#173177"
  68. ],
  69. "keyword2" => [
  70. "value" => $data['keyword2'],
  71. "color" => "#173177"
  72. ],
  73. "keyword3" => [
  74. "value" => $data['keyword3'],
  75. "color" => "#173177"
  76. ],
  77. "remark" => [
  78. "value" => $data['remark'],
  79. "color" => "#173177"
  80. ]
  81. ]
  82. ]);
  83. trace($rs);
  84. }
  85. }
  86. /**
  87. * 获取token
  88. */
  89. static public function getToken()
  90. {
  91. $wxTemp = new Template();
  92. if (!$token = Cache::get('zqxg_offi_access_token')) {
  93. $token = $wxTemp->getAccessToken(config('app.official_appid'), config('app.official_secret'));
  94. Cache::set('zqxg_offi_access_token', $token, 7100);
  95. }
  96. return $token;
  97. }
  98. }