/**
  * action 'player_edit'
  * @param Request $request
  * @param Response $response
  */
 public function player_edit(Request $request, Response $response)
 {
     if ($request->is_post()) {
         $ret = ['flag' => 'ERR', 'msg' => ''];
         $player_id = $request->post('player_id', 0);
         $truename = $request->post('truename', '');
         $mobile = $request->post('mobile', '');
         $weixin = $request->post('weixin', '');
         $idcard = $request->post('idcard', '');
         $video = $request->post('video', '');
         $province = $request->post('province', 0);
         $city = $request->post('city', 0);
         $inc_vote = $request->post('inc_vote', 0);
         $inc_flower = $request->post('inc_flower', 0);
         $cover_pic_id = $request->post('cover_pic_id', 0);
         $imgs = $request->post('imgs', []);
         $player_info = Member_Model::getPlayerInfo($player_id);
         if (empty($player_info)) {
             $ret['msg'] = '参赛者不存在';
             $response->sendJSON($ret);
         }
         $uid = 10000;
         //10000 为系统管理员帐号
         $ret['flag'] = 'SUC';
         $ret['msg'] = '更新成功';
         $data = ['cover_pic_id' => $cover_pic_id];
         if ('' != $truename) {
             $data['truename'] = $truename;
         }
         if ('' != $mobile) {
             $data['mobile'] = $mobile;
         }
         if ('' != $weixin) {
             $data['weixin'] = $weixin;
         }
         if ('' != $idcard && strlen($idcard) <= 18) {
             $data['idcard'] = $idcard;
         }
         if ('' != $video && preg_match('/^http(s?):\\/\\//', $video)) {
             $data['video'] = $video;
         }
         //将省份、城市平均成: "40:北京"这样的结构
         if ($province) {
             $loc = Member_Model::getLocationName($province);
             if ($loc) {
                 $province = $province . ':' . $loc;
             }
         } else {
             $province = '';
         }
         if ($city) {
             $loc = Member_Model::getLocationName($city);
             if ($loc) {
                 $city = $city . ':' . $loc;
             }
         } else {
             $city = '';
         }
         $data['province'] = $province;
         $data['city'] = $city;
         //更新pic_cover_id
         D()->update("player", $data, ['player_id' => $player_id]);
         //更新图片
         if (!empty($imgs) && is_array($imgs)) {
             //! 务必检查严格
             $imgs_idstr = implode(',', $imgs);
             $existed_rids = D()->from("player_gallery")->where("`rid` IN(%s)", $imgs_idstr)->select("`rid`")->fetch_column('rid');
             if (!empty($existed_rids)) {
                 //! 务必检查严格,否则容易出现丢失图片数据
                 //先将原有的记录的player_id设为0
                 D()->query("UPDATE `{player_gallery}` SET `old_player_id`=`player_id`,`player_id`=0 WHERE `player_id`=%d", $player_id);
                 //紧接着重新关联新的记录
                 D()->query("UPDATE `{player_gallery}` SET `player_id`=%d,`old_player_id`=%d WHERE `rid` IN(%s)", $player_id, $player_id, $imgs_idstr);
                 //更新排序
                 $o = 1;
                 foreach ($imgs as $rid) {
                     D()->query("UPDATE `{player_gallery}` SET `sortorder`=%d WHERE `rid`=%d", $o, $rid);
                     $o++;
                 }
             }
         }
         if ($inc_vote) {
             $action_id = Node::action('vote', $player_id, $uid, $inc_vote, TRUE, FALSE, ['from' => 'admin']);
             $ret['msg'] .= ',增加了' . $inc_vote . '票';
         }
         if ($inc_flower) {
             $action_id = Node::action('flower', $player_id, $uid, $inc_flower);
             $ret['msg'] .= ',增加了' . $inc_flower . '花';
         }
         $response->sendJSON($ret);
     } else {
         // GET request
         $this->_nav_second = 'player';
         $this->v->set_tplname('mod_member_player_edit');
         // Player Info
         $player_id = $request->arg(2);
         $player_id = intval($player_id);
         $is_edit = $player_id ? TRUE : FALSE;
         $player_info = $is_edit ? Member_Model::getPlayerInfo($player_id) : [];
         $player_gallery = [];
         if (!empty($player_info)) {
             $player_gallery = Member_Model::getPlayerGalleryAll($player_info['player_id'], $player_info['cover_pic_id']);
             if (!empty($player_info['province'])) {
                 $player_info['province'] = preg_replace('/(:.*)$/', '', $player_info['province']);
             }
             if (!empty($player_info['city'])) {
                 $player_info['city'] = preg_replace('/(:.*)$/', '', $player_info['city']);
             }
         }
         $province = Member_Model::getProvinces();
         $this->v->assign('province', $province);
         $this->v->assign('player_info', $player_info)->assign('player_gallery', $player_gallery)->assign('is_edit', $is_edit);
         $response->send($this->v);
     }
 }