Explorar o código

add annual_meeting fcode and meeting

stanley-king %!s(int64=7) %!d(string=hai) anos
pai
achega
84188fe0ba

+ 12 - 8
admin/control/person_bonus.php

@@ -11,6 +11,8 @@ require_once(BASE_ROOT_PATH . '/helper/account_helper.php');
 require_once(BASE_ROOT_PATH . '/helper/member_helper.php');
 require_once(BASE_ROOT_PATH . '/helper/sms_helper.php');
 require_once(BASE_ROOT_PATH . '/mobile/util/errcode.php');
+require_once(BASE_ROOT_PATH . '/helper/util_helper.php');
+require_once(BASE_ROOT_PATH . '/helper/employee_award.php');
 
 
 class activity_bonus
@@ -303,18 +305,20 @@ class person_bonusControl extends SystemControl
 
     public function annual_meetingOp()
     {
-        if(chksubmit()) {
-            $awards = intval($_POST['awards']);
+        if(chksubmit())
+        {
+            $awards  = intval($_POST['awards']);
             $members = trim($_POST['members']);
-            if(!isset($awards) || $awards <= 0 ) {
-                showMessage('奖项不能为空','index.php?act=person_bonus&op=annual_meeting','','error');
+
+            if(empty($awards) || empty($members)) {
+                showMessage('奖项、员工工号 不能为空','index.php?act=person_bonus&op=annual_meeting','','error');
                 return;
             }
-            if(!isset($members) || empty($members)) {
-                showMessage('员工工号不能为空','index.php?act=person_bonus&op=annual_meeting','','error');
-                return;
+            else {
+                $awarder = new employee_award();
+                $awarder->send($awards,$members);
+                showMessage(Language::get('nc_common_save_succ'),'index.php?act=person_bonus&op=annual_meeting');
             }
-            showMessage(Language::get('nc_common_save_succ'),'index.php?act=person_bonus&op=annual_meeting');
         }
         else {
             Tpl::showpage('person_bonus.annual_meeting');

+ 4 - 0
admin/templates/default/person_bonus.annual_meeting.php

@@ -32,6 +32,10 @@
                             <option value="7">七等奖</option>
                             <option value="8">八等奖</option>
                             <option value="9">九等奖</option>
+                            <option value="10">游戏奖品</option>
+                            <option value="11">赛车奖品</option>
+                            <option value="12">数钱奖品</option>
+                            <option value="13">本地测试</option>
                         </select>
                     </td>
                 </tr>

+ 69 - 0
data/meeting/award.php

@@ -0,0 +1,69 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: stanley-king
+ * Date: 2018/1/15
+ * Time: 下午6:56
+ */
+
+
+function get_award($no)
+{
+    $no = $no - 1;
+
+    $result = [];
+    if($no == 0) {
+        $result[] =  ['type' => 'fcode','command_id' => 4148,'batch_code' =>'NHJ001'];
+    }
+    elseif($no == 1) {
+        $result[] =  ['type' => 'fcode','command_id' => 4151,'batch_code' =>'NHJ002'];
+    }
+    elseif($no == 2) {
+        $result[] =  ['type' => 'fcode','command_id' => 4152,'batch_code' =>'NHJ003'];
+    }
+    elseif($no == 3) {
+        $result[] =  ['type' => 'fcode','command_id' => 4153,'batch_code' =>'NHJ004'];
+    }
+    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+    elseif($no == 4) {
+        $result[] = ['type' => 'fcode','command_id' => 4154,'batch_code' =>'NHJ005'];
+        $result[] = ['type' => 'bonus','type_sn' => '38901516016673640442'];
+    }
+    elseif($no == 5) {
+        $result[] = ['type' => 'fcode','command_id' => 4155,'batch_code' =>'NHJ006'];
+        $result[] = ['type' => 'bonus','type_sn' => '98851516016812213578'];
+    }
+    elseif($no == 6) {
+        $result[] = ['type' => 'fcode','command_id' => 4156,'batch_code' =>'NHJ007'];
+        $result[] = ['type' => 'bonus','type_sn' => '60581516023148939895'];
+    }
+    elseif($no == 7) {
+        $result[] = ['type' => 'fcode','command_id' => 4157,'batch_code' =>'NHJ008'];
+        $result[] = ['type' => 'bonus','type_sn' => '75991516016938448012'];
+    }
+    //以下全是红包
+    elseif($no == 8) {
+        $result[] = ['type' => 'bonus','type_sn' => '67741516017011997440'];
+    }
+    //游戏奖
+    elseif($no == 9) {
+        $result[] = ['type' => 'bonus','type_sn' => '63131516017063433655'];
+    }
+    //赛车
+    elseif($no == 10) {
+        $result[] = ['type' => 'bonus','type_sn' => '11891516017132219556'];
+    }
+    //数钱
+    elseif($no == 11) {
+        $result[] = ['type' => 'bonus','type_sn' => '97361516017200568325'];
+    }
+    elseif($no == 12) {
+        $result[] = ['type' => 'fcode','command_id' => 2820,'batch_code' =>'NHJP01'];
+        $result[] = ['type' => 'bonus','type_sn' => '75411516018646807641'];
+    }
+    else {
+
+    }
+
+    return $result;
+}

+ 114 - 0
helper/employee_award.php

@@ -0,0 +1,114 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: stanley-king
+ * Date: 2018/1/15
+ * Time: 下午9:12
+ */
+
+
+require_once(BASE_ROOT_PATH . '/data/meeting/award.php');
+require_once(BASE_ROOT_PATH . '/helper/fcode/operator.php');
+require_once(BASE_ROOT_PATH . '/helper/fcode/mfcode.php');
+require_once(BASE_ROOT_PATH . '/helper/session_helper.php');
+
+class employee_award
+{
+    public function send($no,$sworkno)
+    {
+        if(empty($sworkno) || empty($no)) return false;
+
+        Log::record("{$no} 等奖,人员: {$sworkno}",Log::DEBUG);
+        $worknos = explode(',',$sworkno);
+        $members = $this->members($worknos);
+        $award_params = get_award($no);
+        foreach($award_params as $param)
+        {
+
+            $type = $param['type'];
+            if($type == 'fcode')
+            {
+                foreach ($members as $member) {
+                    $mobile = $member['mobile'];
+                    $ret = $this->send_fcode($param['command_id'],$param['batch_code'],$mobile);
+                    if(!$ret) {
+                        Log::record(" send fcode to {$mobile} fail",Log::ERR);
+                    }
+                }
+            }
+            elseif($type == 'bonus')
+            {
+                $uids = [];
+                foreach ($members as $user) {
+                    $uid = intval($user['member_id']);
+                    if($uid > 0) $uids[]= $uid;
+                }
+                $type_sn = $param['type_sn'];
+                $ret = bonus_helper::send($type_sn,$uids);
+                if($ret == false) {
+                    Log::record("send bonus error",Log::ERR);
+                }
+            }
+            else {
+                Log::record("error type",Log::ERR);
+            }
+        }
+
+        return true;
+    }
+
+    private function members($worknos)
+    {
+        $mod_member = Model('member');
+        $mod_employees = Model();
+        $items = $mod_employees->table('employee')->where(['workno' => ['in',$worknos]])->select();
+
+        foreach ($items as &$item)
+        {
+            $member_id = intval($item['member_id']);
+            $mobile = $item['mobile'];
+            if($member_id <= 0)
+            {
+                $info = $mod_member->getMemberInfo(['member_mobile' => $mobile]);
+                if(!empty($info)) {
+                    $item['member_id'] = $info['member_id'];
+                }
+            }
+        }
+        return $items;
+    }
+
+    private function send_fcode($cid,$batch_code,$mobile)
+    {
+        if(empty($mobile) || $this->can_send($cid,$batch_code,$mobile) == false)
+            return false;
+
+        $oper = new fcode\operator($cid,$batch_code,$mobile,'');
+        if($oper->grabed() == false)
+        {
+            $fcode = $oper->grab();
+            if($fcode != false) {
+                return true;
+            }
+        }
+        return false;
+    }
+    private function can_send($cid,$batch_code,$mobile)
+    {
+        $key = "{$cid}.{$batch_code}";
+        $mod_fcode = Model('goods_fcode');
+        $codes = $mod_fcode->getFcodeList(['mobile' => $mobile]);
+
+        $user_fcodes = [];
+        foreach ($codes as $item)
+        {
+            $fcoder = new fcode\mfcode($item);
+            $cid   = $fcoder->commonid();
+            $bcode = $fcoder->batch_code();
+            $user_fcodes[] = "{$cid}.{$bcode}";
+        }
+        sort($user_fcodes);
+        $out = algorithm::set_intersection($user_fcodes,[$key]);
+        return empty($out) ? true : false;
+    }
+}

+ 1 - 0
helper/fcode/operator.php

@@ -32,6 +32,7 @@ class operator
         $this->mBatchCode  = $batch_code;
         $this->mod_fcode = Model('goods_fcode');
         $this->mMobile = $mobile;
+
         $this->mSessionID = $session_id;
         $this->mFUserMode = !empty($session_id);
     }

+ 14 - 2
test/TestMeeting.php

@@ -8,8 +8,14 @@
 
 define('BASE_ROOT_PATH',str_replace('/test','',dirname(__FILE__)));
 
-require_once (BASE_ROOT_PATH . '/fooder.php');
-require_once (BASE_ROOT_PATH . '/helper/util_helper.php');
+require_once(BASE_ROOT_PATH . '/fooder.php');
+require_once(BASE_ROOT_PATH . '/helper/util_helper.php');
+require_once(BASE_ROOT_PATH . '/data/meeting/award.php');
+require_once(BASE_ROOT_PATH . '/helper/fcode/operator.php');
+require_once(BASE_ROOT_PATH . '/helper/fcode/mfcode.php');
+require_once(BASE_ROOT_PATH . '/helper/session_helper.php');
+require_once(BASE_ROOT_PATH . '/helper/employee_award.php');
+
 
 class TestMeeting extends PHPUnit_Framework_TestCase
 {
@@ -54,4 +60,10 @@ class TestMeeting extends PHPUnit_Framework_TestCase
             }
         }
     }
+    public function testSendAward()
+    {
+        $sender = new employee_award();
+        $sender->send(13,'2581,2909');
+    }
+
 }