employee_award.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: stanley-king
  5. * Date: 2018/1/15
  6. * Time: 下午9:12
  7. */
  8. require_once(BASE_ROOT_PATH . '/data/meeting/award.php');
  9. require_once(BASE_ROOT_PATH . '/helper/fcode/operator.php');
  10. require_once(BASE_ROOT_PATH . '/helper/fcode/mfcode.php');
  11. require_once(BASE_ROOT_PATH . '/helper/session_helper.php');
  12. class employee_award
  13. {
  14. public function send($no,$sworkno)
  15. {
  16. if(empty($sworkno) || empty($no)) return false;
  17. Log::record("{$no} 等奖,人员: {$sworkno}",Log::DEBUG);
  18. $worknos = explode(',',$sworkno);
  19. $members = $this->members($worknos);
  20. $award_params = get_award($no);
  21. foreach($award_params as $param)
  22. {
  23. $type = $param['type'];
  24. if($type == 'fcode')
  25. {
  26. foreach ($members as $member) {
  27. $mobile = $member['mobile'];
  28. $ret = $this->send_fcode($param['command_id'],$param['batch_code'],$mobile);
  29. if(!$ret) {
  30. Log::record(" send fcode to {$mobile} fail",Log::ERR);
  31. }
  32. }
  33. }
  34. elseif($type == 'bonus')
  35. {
  36. $uids = [];
  37. foreach ($members as $user) {
  38. $uid = intval($user['member_id']);
  39. if($uid > 0) $uids[]= $uid;
  40. }
  41. $type_sn = $param['type_sn'];
  42. $ret = bonus_helper::send($type_sn,$uids);
  43. if($ret == false) {
  44. Log::record("send bonus error",Log::ERR);
  45. }
  46. }
  47. else {
  48. Log::record("error type",Log::ERR);
  49. }
  50. }
  51. return true;
  52. }
  53. private function members($worknos)
  54. {
  55. $mod_member = Model('member');
  56. $mod_employees = Model();
  57. $items = $mod_employees->table('employee')->where(['workno' => ['in',$worknos]])->select();
  58. foreach ($items as &$item)
  59. {
  60. $member_id = intval($item['member_id']);
  61. $mobile = $item['mobile'];
  62. if($member_id <= 0)
  63. {
  64. $info = $mod_member->getBindedMemberByMobile($mobile);
  65. if(!empty($info)) {
  66. $item['member_id'] = $info['member_id'];
  67. }
  68. }
  69. }
  70. return $items;
  71. }
  72. private function send_fcode($cid,$batch_code,$mobile)
  73. {
  74. if(empty($mobile) || $this->can_send($cid,$batch_code,$mobile) == false)
  75. return false;
  76. $oper = new fcode\operator($cid,$batch_code,$mobile,'');
  77. if($oper->grabed() == false)
  78. {
  79. $fcode = $oper->grab();
  80. if($fcode != false) {
  81. return true;
  82. }
  83. }
  84. return false;
  85. }
  86. private function can_send($cid,$batch_code,$mobile)
  87. {
  88. $key = "{$cid}.{$batch_code}";
  89. $mod_fcode = Model('goods_fcode');
  90. $codes = $mod_fcode->getFcodeList(['mobile' => $mobile]);
  91. $user_fcodes = [];
  92. foreach ($codes as $item)
  93. {
  94. $fcoder = new fcode\mfcode($item);
  95. $cid = $fcoder->commonid();
  96. $bcode = $fcoder->batch_code();
  97. $user_fcodes[] = "{$cid}.{$bcode}";
  98. }
  99. sort($user_fcodes);
  100. $out = algorithm::set_intersection($user_fcodes,[$key]);
  101. return empty($out) ? true : false;
  102. }
  103. }