SignController.php 44 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022
  1. <?php
  2. //ini_set('display_errors', on);
  3. Doo::loadClass('auth');
  4. Doo::loadClass('attfile');
  5. Doo::loadClass('profile');
  6. Doo::loadClass('project');
  7. Doo::loadClass('contractact');
  8. Doo::loadClass('actmeasure');
  9. Doo::loadClass('numofperact');
  10. Doo::loadClass('measureauditact');
  11. Doo::loadClass('sign');
  12. Doo::loadClass('sms');
  13. Doo::loadModelAt('aconfig', 'admin');
  14. //define('FPDF_FONTPATH','protected/class/fpdf1.5/font/');
  15. //Doo::loadClass('fpdf');
  16. /* * proDetail
  17. * MainController
  18. * Feel free to delete the methods and replace them with your own code.
  19. *
  20. * @author darkredz
  21. */
  22. class SignController extends DooController
  23. {
  24. private $aconfig, $data, $sms, $sign, $auth, $attfile, $profile, $project, $contractact, $actmeasure, $measureauditact, $numofperact, $statusArray = array('uncheck' => '<span class = "colGray">未审批</span>', 'checking' => '<span class = "colOrange">审批中</span>', 'checked' => '<span class = "colGreen">审批通过</span>', 'checkno' => '<span class = "colRed">审批不通过</span>');
  25. public function beforeRun($resource, $action)
  26. {
  27. if ($this->auth->getUid()) {
  28. $uGroups = $this->profile->getProWithUid($this->auth->getUid());
  29. $falg = Doo::acl()->isAllowed($uGroups['groups'], $resource, $action);
  30. if (!$falg)
  31. return Doo::acl()->defaultFailedRoute;
  32. } else {
  33. return Doo::acl()->defaultFailedRoute;
  34. }
  35. }
  36. public function __construct()
  37. {
  38. $this->aconfig = new AConfig();
  39. $this->auth = new Auth();
  40. $this->attfile = new attFile();
  41. $this->profile = new Profile();
  42. $this->project = new Project();
  43. $this->contractact = new Contractact();
  44. $this->actmeasure = new actMeasure();
  45. $this->numofperact = new NumofperAct();
  46. $this->measureauditact = new MeasureauditAct();
  47. $this->sign = new Signn();
  48. $this->sms = new Sms(Doo::conf()->SMS_URL, Doo::conf()->SMS_AUTHKEY);
  49. // $this->pdf = new FPDF('P','mm','A4');
  50. $this->data['rootUrl'] = Doo::conf()->APP_URL;
  51. $this->data['currChannle'] = 'sign';
  52. $this->data['user'] = $this->profile->getProWithUid($this->auth->getUid());
  53. $mpidArray = $this->measureauditact->getAuditProject2($this->auth->getUid());
  54. $this->data['numofchecking'] = 0;
  55. if (isset($mpidArray[0]['pid'])) {
  56. foreach ($mpidArray as $key => $value) {
  57. // 审批操作按照时间排序多标段
  58. $this->data['numofchecking'] += $this->measureauditact->getCountMyChecking($value['pid'], $this->auth->getUid());
  59. }
  60. }
  61. if (!isset($this->data['numofchecking']) || $this->data['numofchecking'] == 0) {
  62. $this->data['numofchecking'] = null;
  63. }
  64. $signSwitch = $this->aconfig->getOne(array('select' => 'signswitch', 'asArray' => TRUE))['signswitch'];
  65. if ($signSwitch == 0)
  66. exit('未开启在线签名功能');
  67. $this->data['signSwitch'] = $signSwitch;
  68. //获取需要您签署的数目
  69. $this->data['needSignNum'] = $this->sign->getNeedSignNumbyUid($this->auth->getUid()) != 0 ? $this->sign->getNeedSignNumbyUid($this->auth->getUid()) : '';
  70. }
  71. /**
  72. *
  73. * @return type
  74. */
  75. public function index()
  76. {
  77. //获取我发起的签署数目
  78. $this->data['mySignNum'] = $this->sign->getMySignNumbyUid($this->auth->getUid());
  79. //获取关于我的正在签署数目
  80. $this->data['doingSignNum'] = $this->sign->getDoingSignNumbyUid($this->auth->getUid());
  81. //获取关于我的完成签署数目
  82. $this->data['doneSignNum'] = $this->sign->getDoneSignNumbyUid($this->auth->getUid());
  83. $this->data['launchsign'] = $this->aconfig->getOne(array('select' => 'launchsignswitch', 'asArray' => TRUE))['launchsignswitch'];
  84. $this->render('sign-index', $this->data, TRUE);
  85. }
  86. public function signNeedList(){
  87. $needlist = array();
  88. $searchsql = 'sid in(select `jl_sign_audit`.sid from `jl_sign_audit` where `jl_sign_audit`.status="checking" and `jl_sign_audit`.audituid='.$this->auth->getUid().')';
  89. $projectlist = $this->sign->getSignGroupByProject($searchsql);
  90. if(!empty($projectlist)){
  91. foreach($projectlist as $k => $v){
  92. $projectmsg = $this->project->getRowByPid($v['project']);
  93. $needlist[$k]['project'] = $projectmsg['pname'];
  94. $needlist[$k]['tlist'] = array();
  95. $tenderlist = $this->sign->getSignGroupByTender($v['project'],$searchsql);
  96. if(!empty($tenderlist)) {
  97. foreach ($tenderlist as $tk => $tv) {
  98. $tendermsg = $this->actmeasure->getRowByPmid($tv['tender']);
  99. $needlist[$k]['tlist'][$tk]['tender'] = $tendermsg['pmname'];
  100. $needlist[$k]['tlist'][$tk]['plist'] = array();
  101. $phasenolist = $this->sign->getSignGroupByPhaseno($tv['tender'],$searchsql);
  102. if(!empty($phasenolist)) {
  103. foreach ($phasenolist as $pk => $pv) {
  104. // $phasenomsg = $this->numofperact->getCurrStatus($pv['phaseno']);
  105. $needlist[$k]['tlist'][$tk]['plist'][$pk]['phaseno'] = $pv['phaseno'];
  106. $needlist[$k]['tlist'][$tk]['plist'][$pk]['signlist'] = array();
  107. $signlist = $this->sign->getSignList($searchsql.' and status="checking" and tender='.$tv['tender'].' and phaseno='.$pv['phaseno'], '0,1000');
  108. if(!empty($signlist)) {
  109. foreach ($signlist as $sk => $sv) {
  110. $needlist[$k]['tlist'][$tk]['plist'][$pk]['signlist'][$sk]['sid'] = $sv['sid'];
  111. $needlist[$k]['tlist'][$tk]['plist'][$pk]['signlist'][$sk]['name'] = $sv['name'];
  112. $needlist[$k]['tlist'][$tk]['plist'][$pk]['signlist'][$sk]['auditlist'] = $this->sign->getSignAuditlist($sv['sid']);
  113. }
  114. }
  115. }
  116. }
  117. }
  118. }
  119. }
  120. }
  121. $this->data['needlist'] = $needlist;
  122. $this->render('sign-list-need_sign',$this->data, TRUE);
  123. }
  124. public function signNeedView(){
  125. if(!isset($this->params['sid']) || !is_numeric($this->params['sid'])){
  126. exit('没有报表参数');
  127. }
  128. $issign = $this->sign->getisSignbySidUid($this->params['sid'],$this->auth->getUid());
  129. if(empty($issign)){
  130. exit('不是当前签署人无法访问本页');
  131. }
  132. //获取报表信息
  133. $signmsg = $this->sign->getOneSignbysid($this->params['sid']);
  134. //获取项目名,标段名,标段期数
  135. $project = $this->project->getRowByPid($signmsg['project']);
  136. $tender = $this->actmeasure->getRowByPmid($signmsg['tender']);
  137. // $phaseno = $this->numofperact->getCurrStatus($signmsg['phaseno']);
  138. $signmsg['project'] = $project['pname'];
  139. $signmsg['tender'] = $tender['pmname'];
  140. // $signmsg['phaseno'] = $phaseno['numpname'];
  141. //获取签署人列表
  142. $signauditlist = $this->sign->getSignAuditList($this->params['sid']);
  143. if(!empty($signauditlist)){
  144. foreach($signauditlist as $k => $v){
  145. //获取签署人头像
  146. $signauditlist[$k]['index'] = $k+1;
  147. $signauditlist[$k]['avatar'] = $this->auth->getAvatar($v['audituid']);
  148. }
  149. }
  150. //获取报表图片
  151. $maxwidth = 794; //默认图片最大宽度 a4
  152. $maxheight = 1123; //默认图片最大高度 a4
  153. if(!empty($signmsg['widhei'])){
  154. $widhei = explode('_', $signmsg['widhei']);
  155. $style = $widhei[0].'mm '.$widhei[1].'mm';
  156. }else{
  157. $style = '210mm 297mm';
  158. }
  159. $signattlist = $this->sign->getSignAttList($this->params['sid']);
  160. if(!empty($signattlist)){
  161. foreach($signattlist as $sak => $sav){
  162. $signattlist[$sak]['auditatt'] = $this->sign->getSignAuditAttList($sav['said']);
  163. if($sak == 0){
  164. $imgmsg = getimagesize(Doo::conf()->APP_URL.$sav['filepath']);
  165. $maxwidth = $imgmsg[0];
  166. $maxheight = $imgmsg[1];
  167. }
  168. }
  169. }
  170. $this->data['signmsg'] = $signmsg;
  171. $this->data['auditlist'] = $signauditlist;
  172. $this->data['attlist'] = $signattlist;
  173. $this->data['picpath'] = $this->auth->getSignpath($this->auth->getUid());
  174. $this->data['signsid'] = $this->params['sid'];
  175. $this->data['maxwidth'] = $maxwidth;
  176. $this->data['maxheight'] = $maxheight;
  177. $this->data['style'] = $style;
  178. $this->render('sign-view-signer_sign',$this->data, TRUE);
  179. }
  180. public function signDone(){
  181. if(!isset($_POST['sid']) || !is_numeric($_POST['sid'])){
  182. echo json_encode(array('code' => 400, 'msg' => '没有报表参数'));
  183. exit;
  184. }
  185. if(!isset($_POST['path']) || empty($_POST['path'])){
  186. echo json_encode(array('code' => 400, 'msg' => '没有签名图片'));
  187. exit;
  188. }
  189. //改变签署状态并判断报表是否签署完成或传到下一个签署人签署
  190. $signAudit = $this->sign->getOneSignAudit($_POST['sid'],$this->auth->getUid());
  191. $result = $this->sign->updateSignAudit($signAudit['satid'],'checked');
  192. foreach($_POST['said'] as $satk => $satv){
  193. $sign3 = new Signn();
  194. $sign3->insertSignAuditAtt($this->auth->getUid(),$satv,$_POST['path'],$_POST['position'][$satk]);
  195. }
  196. if($result){
  197. $sign2 = new Signn();
  198. $signAuditList = $sign2->getSignAuditList($_POST['sid']);
  199. $flag = true;
  200. foreach($signAuditList as $k => $v){
  201. if($v['status'] == 'uncheck'){
  202. $sign2->updateSignAudit($v['satid'],'checking');
  203. $flag = false;
  204. //发送签署短信
  205. // SMS Start
  206. $signArray = $this->sign->getOneSignbysid($_POST['sid']);
  207. $pmname = $this->actmeasure->getRowByPmid($signArray['tender']);
  208. $userProArray = $this->profile->getProWithUid($v);
  209. if (isset($userProArray) && !empty($userProArray['mobile'])) {
  210. $sendarr1 = '“' .$pmname['pmname'].'”的“'. $signArray["name"] .'”';
  211. $sendarr2 = str_replace('【','',$sendarr1);
  212. $sendmsg = str_replace('】','',$sendarr2);
  213. $retval = $this->__auditNotice($userProArray['mobile'], Doo::conf()->SMS_TIPS_PRE . '您好,有一份' .$pmname['pmname'].'的'. $signArray["name"] . Doo::conf()->SMS_TIPS["AUDIT_NOTICE_AUDITOR5"]);
  214. }
  215. // SMS End
  216. break;
  217. }
  218. }
  219. if($flag){
  220. $this->sign->updateSignStatus($_POST['sid']);
  221. echo json_encode(array('code' => 200, 'url' => '/sign/view/'.$_POST['sid'].'?status=done'));
  222. exit;
  223. }else{
  224. echo json_encode(array('code' => 200, 'url' => '/sign/view/'.$_POST['sid'].'?status=doing'));
  225. exit;
  226. }
  227. }else{
  228. echo json_encode(array('code' => 400, 'msg' => '签署失败'));
  229. exit;
  230. }
  231. }
  232. public function signMyList(){
  233. Doo::loadHelper('DooPager');
  234. $pagestr = '';
  235. $sqlstr = ' 1';
  236. $this->data['project'] = '';
  237. $this->data['tender'] = '';
  238. $this->data['phaseno'] = '';
  239. //获取项目信息
  240. $searchsql = 'audituid='.$this->auth->getUid();
  241. $itemlist = $this->sign->getSignGroupByProject($searchsql);
  242. if(!empty($itemlist)){
  243. foreach($itemlist as $ik => $iv){
  244. $itemmsg = $this->project->getRowByPid($iv['project']);
  245. $itemlist[$ik]['pname'] = $itemmsg['pname'];
  246. }
  247. }
  248. if(isset($this->params['pid']) && is_numeric($this->params['pid'])){
  249. $this->data['project'] = $this->params['pid'];
  250. $pagestr .= '/project/'.$this->params['pid'];
  251. $sqlstr .= ' and project='.$this->params['pid'];
  252. //获取标段信息
  253. $tenderlist = $this->sign->getSignGroupByTender($this->params['pid'],$searchsql);
  254. if(!empty($tenderlist)){
  255. foreach($tenderlist as $tk => $tv){
  256. $tendermsg = $this->actmeasure->getRowByPmid($tv['tender']);
  257. $tenderlist[$tk]['pmname'] = $tendermsg['pmname'];
  258. }
  259. }
  260. if(isset($this->params['pmid']) && is_numeric($this->params['pmid'])){
  261. $this->data['tender'] = $this->params['pmid'];
  262. $pagestr .= '/tender/'.$this->params['pmid'];
  263. $sqlstr .= ' and tender='.$this->params['pmid'];
  264. //获取期数信息
  265. $phasenolist = $this->sign->getSignGroupByPhaseno($this->params['pmid'],$searchsql);
  266. if(!empty($phasenolist)){
  267. foreach($phasenolist as $pk => $pv){
  268. // $phasenomsg = $this->numofperact->getCurrStatus($pv['phaseno']);
  269. $phasenolist[$pk]['numpname'] = $pv['phaseno'];
  270. }
  271. }
  272. if(isset($this->params['mpid']) && is_numeric($this->params['mpid'])){
  273. $this->data['phaseno'] = $this->params['mpid'];
  274. $pagestr .= '/phaseno/'.$this->params['mpid'];
  275. $sqlstr .= ' and phaseno='.$this->params['mpid'];
  276. }
  277. }
  278. }
  279. $totalArchive = $this->sign->getMySignNumbyUid($this->auth->getUid(),$sqlstr);
  280. $pager = new DooPager(Doo::conf()->APP_URL . 'sign/mylist'.$pagestr.'/page', $totalArchive, 10, 100);
  281. $pager->setCss('', 'disabled', 'active');
  282. if (isset($this->params['pindex']))
  283. $pager->paginate(intval($this->params['pindex']));
  284. else
  285. $pager->paginate(1);
  286. if ($pager->limit != ' -10,10')
  287. $mylist = $this->sign->getMySignListbyUid($this->auth->getUid(), $sqlstr, $pager->limit);
  288. if(isset($mylist) && !empty($mylist)){
  289. foreach($mylist as $k => $v){
  290. //获取项目名,标段名,标段期数
  291. $project = $this->project->getRowByPid($v['project']);
  292. $tender = $this->actmeasure->getRowByPmid($v['tender']);
  293. // $phaseno = $this->numofperact->getCurrStatus($v['phaseno']);
  294. $mylist[$k]['project'] = $project['pname'];
  295. $mylist[$k]['tender'] = $tender['pmname'];
  296. // $mylist[$k]['phaseno'] = $phaseno['numpname'];
  297. }
  298. }
  299. $this->data['mylist'] = isset($mylist) ? $mylist : '';
  300. $this->data['itemlist'] = $itemlist;
  301. $this->data['tenderlist'] = isset($tenderlist) ? $tenderlist : '';
  302. $this->data['phasenolist'] = isset($phasenolist) ? $phasenolist : '';
  303. $this->data['pager'] = $pager->output;
  304. $this->render('sign-list-my_create',$this->data, TRUE);
  305. }
  306. public function signChangeShare(){
  307. if(!isset($_GET['status']) || !isset($_GET['sid'])){
  308. echo json_encode(array('code' => '400', 'msg' => '请传递正确的参数'));
  309. exit;
  310. }
  311. $status = $_GET['status'] == "true" ? 1 : 0;
  312. $result = $this->sign->updateSignShareStatus($status,$_GET['sid']);
  313. if($result){
  314. echo json_encode(array('code' => '200', 'status' => $status));
  315. exit;
  316. }else{
  317. echo json_encode(array('code' => '400', 'msg' => '无法分享'));
  318. exit;
  319. }
  320. exit;
  321. }
  322. public function signOnList(){
  323. Doo::loadHelper('DooPager');
  324. $pagestr = '';
  325. $sqlstr = ' 1';
  326. $this->data['project'] = '';
  327. $this->data['tender'] = '';
  328. $this->data['phaseno'] = '';
  329. //获取项目信息
  330. $searchsql = 'status="checking" and sid in(select `jl_sign_audit`.sid from `jl_sign_audit` where `jl_sign_audit`.audituid='.$this->auth->getUid().')';
  331. $itemlist = $this->sign->getSignGroupByProject($searchsql);
  332. if(!empty($itemlist)){
  333. foreach($itemlist as $ik => $iv){
  334. $itemmsg = $this->project->getRowByPid($iv['project']);
  335. $itemlist[$ik]['pname'] = $itemmsg['pname'];
  336. }
  337. }
  338. if(isset($this->params['pid']) && is_numeric($this->params['pid'])){
  339. $this->data['project'] = $this->params['pid'];
  340. $pagestr .= '/project/'.$this->params['pid'];
  341. $sqlstr .= ' and project='.$this->params['pid'];
  342. //获取标段信息
  343. $tenderlist = $this->sign->getSignGroupByTender($this->params['pid'],$searchsql);
  344. if(!empty($tenderlist)){
  345. foreach($tenderlist as $tk => $tv){
  346. $tendermsg = $this->actmeasure->getRowByPmid($tv['tender']);
  347. $tenderlist[$tk]['pmname'] = $tendermsg['pmname'];
  348. }
  349. }
  350. if(isset($this->params['pmid']) && is_numeric($this->params['pmid'])){
  351. $this->data['tender'] = $this->params['pmid'];
  352. $pagestr .= '/tender/'.$this->params['pmid'];
  353. $sqlstr .= ' and tender='.$this->params['pmid'];
  354. //获取期数信息
  355. $phasenolist = $this->sign->getSignGroupByPhaseno($this->params['pmid'],$searchsql);
  356. if(!empty($phasenolist)){
  357. foreach($phasenolist as $pk => $pv){
  358. // $phasenomsg = $this->numofperact->getCurrStatus($pv['phaseno']);
  359. $phasenolist[$pk]['numpname'] = $pv['phaseno'];
  360. }
  361. }
  362. if(isset($this->params['mpid']) && is_numeric($this->params['mpid'])){
  363. $this->data['phaseno'] = $this->params['mpid'];
  364. $pagestr .= '/phaseno/'.$this->params['mpid'];
  365. $sqlstr .= ' and phaseno='.$this->params['mpid'];
  366. }
  367. }
  368. }
  369. $totalArchive = $this->sign->getDoingSignNumbyUid($this->auth->getUid(),$sqlstr);
  370. $pager = new DooPager(Doo::conf()->APP_URL . 'sign/onlist'.$pagestr.'/page', $totalArchive, 10, 100);
  371. $pager->setCss('', 'disabled', 'active');
  372. if (isset($this->params['pindex']))
  373. $pager->paginate(intval($this->params['pindex']));
  374. else
  375. $pager->paginate(1);
  376. if ($pager->limit != ' -10,10')
  377. $onlist = $this->sign->getDoingSignListbyUid($this->auth->getUid(), $sqlstr, $pager->limit);
  378. if(isset($onlist) && !empty($onlist)){
  379. foreach($onlist as $k => $v){
  380. //获取项目名,标段名,标段期数
  381. $project = $this->project->getRowByPid($v['project']);
  382. $tender = $this->actmeasure->getRowByPmid($v['tender']);
  383. // $phaseno = $this->numofperact->getCurrStatus($v['phaseno']);
  384. $onlist[$k]['project'] = $project['pname'];
  385. $onlist[$k]['tender'] = $tender['pmname'];
  386. // $onlist[$k]['phaseno'] = $phaseno['numpname'];
  387. $onlist[$k]['auditlist'] = $this->sign->getSignAuditList($v['sid']);
  388. }
  389. }
  390. $this->data['onlist'] = isset($onlist) ? $onlist : '';
  391. $this->data['itemlist'] = $itemlist;
  392. $this->data['tenderlist'] = isset($tenderlist) ? $tenderlist : '';
  393. $this->data['phasenolist'] = isset($phasenolist) ? $phasenolist : '';
  394. $this->data['pager'] = $pager->output;
  395. $this->render('sign-list-on_sign',$this->data, TRUE);
  396. }
  397. public function signDoneList(){
  398. Doo::loadHelper('DooPager');
  399. $pagestr = '';
  400. $sqlstr = ' 1';
  401. $this->data['project'] = '';
  402. $this->data['tender'] = '';
  403. $this->data['phaseno'] = '';
  404. //获取项目信息
  405. $searchsql = 'status="checked" and sid in(select `jl_sign_audit`.sid from `jl_sign_audit` where `jl_sign_audit`.audituid='.$this->auth->getUid().')';
  406. $itemlist = $this->sign->getSignGroupByProject($searchsql);
  407. if(!empty($itemlist)){
  408. foreach($itemlist as $ik => $iv){
  409. $itemmsg = $this->project->getRowByPid($iv['project']);
  410. $itemlist[$ik]['pname'] = $itemmsg['pname'];
  411. }
  412. }
  413. if(isset($this->params['pid']) && is_numeric($this->params['pid'])){
  414. $this->data['project'] = $this->params['pid'];
  415. $pagestr .= '/project/'.$this->params['pid'];
  416. $sqlstr .= ' and project='.$this->params['pid'];
  417. //获取标段信息
  418. $tenderlist = $this->sign->getSignGroupByTender($this->params['pid'],$searchsql);
  419. if(!empty($tenderlist)){
  420. foreach($tenderlist as $tk => $tv){
  421. $tendermsg = $this->actmeasure->getRowByPmid($tv['tender']);
  422. $tenderlist[$tk]['pmname'] = $tendermsg['pmname'];
  423. }
  424. }
  425. if(isset($this->params['pmid']) && is_numeric($this->params['pmid'])){
  426. $this->data['tender'] = $this->params['pmid'];
  427. $pagestr .= '/tender/'.$this->params['pmid'];
  428. $sqlstr .= ' and tender='.$this->params['pmid'];
  429. //获取期数信息
  430. $phasenolist = $this->sign->getSignGroupByPhaseno($this->params['pmid'],$searchsql);
  431. if(!empty($phasenolist)){
  432. foreach($phasenolist as $pk => $pv){
  433. // $phasenomsg = $this->numofperact->getCurrStatus($pv['phaseno']);
  434. $phasenolist[$pk]['numpname'] = $pv['phaseno'];
  435. }
  436. }
  437. if(isset($this->params['mpid']) && is_numeric($this->params['mpid'])){
  438. $this->data['phaseno'] = $this->params['mpid'];
  439. $pagestr .= '/phaseno/'.$this->params['mpid'];
  440. $sqlstr .= ' and phaseno='.$this->params['mpid'];
  441. }
  442. }
  443. }
  444. $totalArchive = $this->sign->getDoneSignNumbyUid($this->auth->getUid(),$sqlstr);
  445. $pager = new DooPager(Doo::conf()->APP_URL . 'sign/donelist'.$pagestr.'/page', $totalArchive, 10, 100);
  446. $pager->setCss('', 'disabled', 'active');
  447. if (isset($this->params['pindex']))
  448. $pager->paginate(intval($this->params['pindex']));
  449. else
  450. $pager->paginate(1);
  451. if ($pager->limit != ' -10,10')
  452. $donelist = $this->sign->getDoneSignListbyUid($this->auth->getUid(), $sqlstr, $pager->limit);
  453. if(isset($donelist) && !empty($donelist)){
  454. foreach($donelist as $k => $v){
  455. //获取项目名,标段名,标段期数
  456. $project = $this->project->getRowByPid($v['project']);
  457. $tender = $this->actmeasure->getRowByPmid($v['tender']);
  458. // $phaseno = $this->numofperact->getCurrStatus($v['phaseno']);
  459. $donelist[$k]['project'] = $project['pname'];
  460. $donelist[$k]['tender'] = $tender['pmname'];
  461. // $donelist[$k]['phaseno'] = $phaseno['numpname'];
  462. }
  463. }
  464. $this->data['donelist'] = isset($donelist) ? $donelist : '';
  465. $this->data['itemlist'] = $itemlist;
  466. $this->data['tenderlist'] = isset($tenderlist) ? $tenderlist : '';
  467. $this->data['phasenolist'] = isset($phasenolist) ? $phasenolist : '';
  468. $this->data['pager'] = $pager->output;
  469. $this->render('sign-list-done_sign',$this->data, TRUE);
  470. }
  471. /**
  472. *
  473. * @return type
  474. */
  475. public function signCreate()
  476. {
  477. $launchsignSwitch = $this->aconfig->getOne(array('select' => 'launchsignswitch', 'asArray' => TRUE))['launchsignswitch'];
  478. if($launchsignSwitch == 0)
  479. exit('未开启发起签署功能');
  480. Doo::loadHelper('DooPager');
  481. $pagestr = '';
  482. $sqlstr = ' 1';
  483. $this->data['project'] = '';
  484. $this->data['tender'] = '';
  485. $this->data['phaseno'] = '';
  486. //获取项目信息
  487. $searchsql = 'status="uncheck" AND (`isinter`=0 OR `isinter`=3) AND (`ownuid`='.$this->auth->getUid().' OR tender IN (SELECT pmid FROM jl_measure_audit WHERE auditoruid='.$this->auth->getUid().') OR project IN (SELECT pid FROM jl_project_measure WHERE uid='.$this->auth->getUid().'))';
  488. $itemlist = $this->sign->getSignGroupByProject($searchsql);
  489. if(!empty($itemlist)){
  490. foreach($itemlist as $ik => $iv){
  491. $itemmsg = $this->project->getRowByPid($iv['project']);
  492. $itemlist[$ik]['pname'] = $itemmsg['pname'];
  493. }
  494. }
  495. if(isset($this->params['pid']) && is_numeric($this->params['pid'])){
  496. $this->data['project'] = $this->params['pid'];
  497. $pagestr .= '/project/'.$this->params['pid'];
  498. $sqlstr .= ' and project='.$this->params['pid'];
  499. //获取标段信息
  500. $tenderlist = $this->sign->getSignGroupByTender($this->params['pid'], $searchsql);
  501. if(!empty($tenderlist)){
  502. foreach($tenderlist as $tk => $tv){
  503. $tendermsg = $this->actmeasure->getRowByPmid($tv['tender']);
  504. $tenderlist[$tk]['pmname'] = $tendermsg['pmname'];
  505. }
  506. }
  507. if(isset($this->params['pmid']) && is_numeric($this->params['pmid'])){
  508. $this->data['tender'] = $this->params['pmid'];
  509. $pagestr .= '/tender/'.$this->params['pmid'];
  510. $sqlstr .= ' and tender='.$this->params['pmid'];
  511. //获取期数信息
  512. $phasenolist = $this->sign->getSignGroupByPhaseno($this->params['pmid'], $searchsql);
  513. if(!empty($phasenolist)){
  514. foreach($phasenolist as $pk => $pv){
  515. // $phasenomsg = $this->numofperact->getCurrStatus($pv['phaseno']);
  516. $phasenolist[$pk]['numpname'] = $pv['phaseno'];
  517. }
  518. }
  519. if(isset($this->params['mpid']) && is_numeric($this->params['mpid'])){
  520. $this->data['phaseno'] = $this->params['mpid'];
  521. $pagestr .= '/phaseno/'.$this->params['mpid'];
  522. $sqlstr .= ' and phaseno='.$this->params['mpid'];
  523. }
  524. }
  525. }
  526. $totalArchive = $this->sign->getUnSignNum($sqlstr,$this->auth->getUid());
  527. $pager = new DooPager(Doo::conf()->APP_URL . 'sign/create'.$pagestr.'/page', $totalArchive, 10, 100);
  528. $pager->setCss('', 'disabled', 'active');
  529. if (isset($this->params['pindex']))
  530. $pager->paginate(intval($this->params['pindex']));
  531. else
  532. $pager->paginate(1);
  533. if ($pager->limit != ' -10,10')
  534. $unlist = $this->sign->getUnSignList($sqlstr, $this->auth->getUid(), $pager->limit);
  535. if(isset($unlist) && !empty($unlist)){
  536. foreach($unlist as $k => $v){
  537. //获取项目名,标段名,标段期数
  538. $project = $this->project->getRowByPid($v['project']);
  539. $tender = $this->actmeasure->getRowByPmid($v['tender']);
  540. // $phaseno = $this->numofperact->getCurrStatus($v['phaseno']);
  541. $unlist[$k]['project'] = $project['pname'];
  542. $unlist[$k]['tender'] = $tender['pmname'];
  543. // $unlist[$k]['phaseno'] = $phaseno['numpname'];
  544. $unlist[$k]['ownname'] = $this->auth->getName($v['ownuid']);
  545. }
  546. }
  547. $this->data['unlist'] = isset($unlist) ? $unlist : '';
  548. $this->data['itemlist'] = $itemlist;
  549. $this->data['tenderlist'] = isset($tenderlist) ? $tenderlist : '';
  550. $this->data['phasenolist'] = isset($phasenolist) ? $phasenolist : '';
  551. $this->data['pager'] = $pager->output;
  552. $this->render('sign-create_sign', $this->data, TRUE);
  553. }
  554. /**
  555. *
  556. * @return type
  557. */
  558. public function signList()
  559. {
  560. if(isset($_POST['delid']) && is_numeric($_POST['delid'])){
  561. //删除未签署报表数据和文件
  562. $signmsg = $this->sign->getOneSignbysid($_POST['delid']);
  563. if(empty($signmsg) && $signmsg['status'] == "checked" && $signmsg['ownuid'] != $this->auth->getUid()){
  564. exit(json_encode(array('code' => 400),JSON_UNESCAPED_UNICODE));
  565. }
  566. $this->sign->delSignbysid($_POST['delid'],$signmsg['status']);
  567. include (DOO::conf()->SITE_PATH . 'protected/plugin/io.han.php');
  568. $this->IoHandler = new IoHandler();
  569. $path = DOO::conf()->SITE_PATH."signs/".$_POST['delid'];
  570. $this->IoHandler->RemoveDir($path);
  571. exit(json_encode(array('code' => 200),JSON_UNESCAPED_UNICODE));
  572. }
  573. Doo::loadHelper('DooPager');
  574. $pagestr = '';
  575. $sqlstr = ' 1';
  576. $this->data['project'] = '';
  577. $this->data['tender'] = '';
  578. $this->data['phaseno'] = '';
  579. $this->data['nosign'] = '';
  580. //获取项目信息
  581. $searchsql = '(`isinter`=0 OR `isinter`=3) AND (`ownuid`='.$this->auth->getUid().' OR `audituid`='.$this->auth->getUid().' OR sid IN (SELECT sid FROM jl_sign_audit WHERE jl_sign_audit.audituid='.$this->auth->getUid().'))';
  582. $itemlist = $this->sign->getSignGroupByProject($searchsql);
  583. if(!empty($itemlist)){
  584. foreach($itemlist as $ik => $iv){
  585. $itemmsg = $this->project->getRowByPid($iv['project']);
  586. $itemlist[$ik]['pname'] = $itemmsg['pname'];
  587. }
  588. }
  589. if(isset($this->params['pid']) && is_numeric($this->params['pid'])){
  590. $this->data['project'] = $this->params['pid'];
  591. $pagestr .= '/project/'.$this->params['pid'];
  592. $sqlstr .= ' and project='.$this->params['pid'];
  593. //获取标段信息
  594. $tenderlist = $this->sign->getSignGroupByTender($this->params['pid'],$searchsql);
  595. if(!empty($tenderlist)){
  596. foreach($tenderlist as $tk => $tv){
  597. $tendermsg = $this->actmeasure->getRowByPmid($tv['tender']);
  598. $tenderlist[$tk]['pmname'] = $tendermsg['pmname'];
  599. }
  600. }
  601. if(isset($this->params['pmid']) && is_numeric($this->params['pmid'])){
  602. $this->data['tender'] = $this->params['pmid'];
  603. $pagestr .= '/tender/'.$this->params['pmid'];
  604. $sqlstr .= ' and tender='.$this->params['pmid'];
  605. //获取期数信息
  606. $phasenolist = $this->sign->getSignGroupByPhaseno($this->params['pmid'],$searchsql);
  607. if(!empty($phasenolist)){
  608. foreach($phasenolist as $pk => $pv){
  609. // $phasenomsg = $this->numofperact->getCurrStatus($pv['phaseno']);
  610. $phasenolist[$pk]['numpname'] = $pv['phaseno'];
  611. }
  612. }
  613. if(isset($this->params['mpid']) && is_numeric($this->params['mpid'])){
  614. $this->data['phaseno'] = $this->params['mpid'];
  615. $pagestr .= '/phaseno/'.$this->params['mpid'];
  616. $sqlstr .= ' and phaseno='.$this->params['mpid'];
  617. }
  618. }
  619. }
  620. if((isset($this->params['nosign']) && ($this->params['nosign'] == 'nosign')) || isset($_GET['nosign'])){
  621. $this->data['nosign'] = 1;
  622. $pagestr .= '/nosign';
  623. $searchsql = '(`isinter`=0 OR `isinter`=3) AND (`ownuid`='.$this->auth->getUid().' AND `status`="uncheck")';
  624. }
  625. $totalArchive = $this->sign->getSignNum($sqlstr.' and '.$searchsql);
  626. $pager = new DooPager(Doo::conf()->APP_URL . 'sign/list'.$pagestr.'/page', $totalArchive, 10, 100);
  627. $pager->setCss('', 'disabled', 'active');
  628. if (isset($this->params['pindex']))
  629. $pager->paginate(intval($this->params['pindex']));
  630. else
  631. $pager->paginate(1);
  632. if ($pager->limit != ' -10,10')
  633. $list = $this->sign->getSignList($sqlstr.' and '.$searchsql,$pager->limit);
  634. if(isset($list) && !empty($list)){
  635. foreach($list as $k => $v){
  636. //获取项目名,标段名,标段期数
  637. $project = $this->project->getRowByPid($v['project']);
  638. $tender = $this->actmeasure->getRowByPmid($v['tender']);
  639. // $phaseno = $this->numofperact->getCurrStatus($v['phaseno']);
  640. $list[$k]['project'] = $project['pname'];
  641. $list[$k]['tender'] = $tender['pmname'];
  642. // $list[$k]['phaseno'] = $phaseno['numpname'];
  643. $list[$k]['ownname'] = $this->auth->getName($v['ownuid']);
  644. $list[$k]['auditname'] = $this->auth->getName($v['audituid']);
  645. $list[$k]['delstatus'] = $this->auth->getUid() == $v['ownuid'] && $v['status'] != 'checked' && $v['isinter'] != 3 ? 1 : 0;
  646. }
  647. }
  648. $this->data['list'] = isset($list) ? $list : '';
  649. $this->data['itemlist'] = $itemlist;
  650. $this->data['tenderlist'] = isset($tenderlist) ? $tenderlist : '';
  651. $this->data['phasenolist'] = isset($phasenolist) ? $phasenolist : '';
  652. $this->data['pager'] = $pager->output;
  653. $this->render('sign-list-all', $this->data, TRUE);
  654. }
  655. /**
  656. *
  657. * @return type
  658. */
  659. public function signSignSet()
  660. {
  661. $launchsignSwitch = $this->aconfig->getOne(array('select' => 'launchsignswitch', 'asArray' => TRUE))['launchsignswitch'];
  662. if($launchsignSwitch == 0)
  663. exit('未开启发起签署功能');
  664. if(!isset($this->params['sid']) || !is_numeric($this->params['sid'])){
  665. exit('没有报表参数');
  666. }
  667. //获取报表信息
  668. $signmsg = $this->sign->getOneSignbysid($this->params['sid']);
  669. //获取标段审批人列表
  670. $auditactlist = $this->measureauditact->getUserAuditLast($signmsg['tender'],$signmsg['phaseno']);
  671. $userlist = array();
  672. if(!empty($auditactlist)){
  673. foreach($auditactlist as $k => $v){
  674. $usermsg = $this->auth->getRowByUid($v['auditoruid']);
  675. $userlist[$k]['userid'] = $usermsg['userid'];
  676. $userlist[$k]['name'] = $usermsg['name'];
  677. $userlist[$k]['jobs'] = $usermsg['jobs'];
  678. $userlist[$k]['avatar'] = $usermsg['avatar'];
  679. }
  680. }
  681. //获取原报人
  682. $measureArray = $this->actmeasure->getRowByPmid($signmsg['tender']);
  683. // $lastRowArray = $this->numofperact->getLastNew2($signmsg['tender']);
  684. $usermsg2 = $this->auth->getRowByUid($measureArray['uid']);
  685. $orginArray['userid'] = $measureArray['uid'];
  686. $orginArray['avatar'] = $usermsg2['avatar'];
  687. $orginArray['name'] = $usermsg2['name'];
  688. $orginArray['jobs'] = $usermsg2['jobs'];
  689. // $attfileArray = $this->attfile->getFirstFile($lastRowArray['pmid'], $lastRowArray['numpname'], $lastRowArray['times']);
  690. // $orginArray['time'] = date('Y-m-d', $attfileArray['intime']);
  691. //获取项目名,标段名,标段期数
  692. $project = $this->project->getRowByPid($signmsg['project']);
  693. $tender = $this->actmeasure->getRowByPmid($signmsg['tender']);
  694. // $phaseno = $this->numofperact->getCurrStatus($signmsg['phaseno']);
  695. $signmsg['project'] = $project['pname'];
  696. $signmsg['tender'] = $tender['pmname'];
  697. // $signmsg['phaseno'] = $phaseno['numpname'];
  698. //获取报表图片
  699. $maxwidth = 794; //默认图片最大宽度 a4
  700. $maxheight = 1123; //默认图片最大高度 a4
  701. if(!empty($signmsg['widhei'])){
  702. $widhei = explode('_', $signmsg['widhei']);
  703. $style = $widhei[0].'mm '.$widhei[1].'mm';
  704. }else{
  705. $style = '210mm 297mm';
  706. }
  707. $signattlist = $this->sign->getSignAttList($this->params['sid']);
  708. if(!empty($signattlist)){
  709. foreach($signattlist as $sak => $sav){
  710. if($sak == 0){
  711. $imgmsg = getimagesize(Doo::conf()->APP_URL.$sav['filepath']);
  712. $maxwidth = $imgmsg[0];
  713. $maxheight = $imgmsg[1];
  714. break;
  715. }
  716. }
  717. }
  718. $this->data['signmsg'] = $signmsg;
  719. $this->data['userlist'] = $userlist;
  720. $this->data['attlist'] = $signattlist;
  721. $this->data['reportlist'] = $orginArray;
  722. $this->data['maxwidth'] = $maxwidth;
  723. $this->data['maxheight'] = $maxheight;
  724. $this->data['style'] = $style;
  725. $this->render('sign-view-set_signer', $this->data, TRUE);
  726. }
  727. public function signSearchUser(){
  728. if(!isset($_GET['email']) || empty($_GET['email'])){
  729. echo json_encode(array('code' => 400, 'msg' => '请输入邮箱地址'));
  730. exit;
  731. }
  732. $usermsg = $this->auth->checkUserEmail($_GET['email']);
  733. if(!empty($usermsg)){
  734. echo json_encode(array('code' => 200, 'user' => $usermsg));
  735. exit;
  736. }else{
  737. echo json_encode(array('code' => 400, 'msg' => '没有此邮箱用户'));
  738. exit;
  739. }
  740. }
  741. public function signUpSigner(){
  742. if(!isset($_POST['ids']) || !isset($_POST['names']) || !isset($_POST['sid']) || !is_numeric($_POST['sid'])){
  743. echo json_encode(array('code' => 400, 'msg' => '上传参数有误'));
  744. exit;
  745. }
  746. $useridarr = $_POST['ids'];
  747. $usernamearr = $_POST['names'];
  748. foreach($useridarr as $k => $v){
  749. $signs = new Signn();
  750. $status = $k != 0 ? 'uncheck' : 'checking';
  751. $result = $signs->insertSignAudit($_POST['sid'],$status,$v,$usernamearr[$k]);
  752. if(empty($result)){
  753. echo json_encode(array('code' => 400, 'msg' => '添加签署人出错'));
  754. exit;
  755. }
  756. //发送签署短信
  757. if($k == 0){
  758. // SMS Start
  759. $signArray = $this->sign->getOneSignbysid($_POST['sid']);
  760. $pmname = $this->actmeasure->getRowByPmid($signArray['tender']);
  761. $userProArray = $this->profile->getProWithUid($v);
  762. if (isset($userProArray) && !empty($userProArray['mobile'])) {
  763. $sendarr1 = '“' .$pmname['pmname'].'”的“'. $signArray["name"] .'”';
  764. $sendarr2 = str_replace('【','',$sendarr1);
  765. $sendmsg = str_replace('】','',$sendarr2);
  766. $retval = $this->__auditNotice($userProArray['mobile'], Doo::conf()->SMS_TIPS_PRE . $sendmsg .Doo::conf()->SMS_TIPS["AUDIT_NOTICE_AUDITOR5"]);
  767. }
  768. // SMS End
  769. }
  770. }
  771. //更新报表信息
  772. $result2 = $this->sign->updateSignMsg($_POST['sid'],$this->auth->getUid());
  773. if(!empty($result2)){
  774. echo json_encode(array('code' => 200, 'msg' => '添加成功'));
  775. exit;
  776. }else{
  777. echo json_encode(array('code' => 400, 'msg' => '添加签署人出错'));
  778. exit;
  779. }
  780. }
  781. /**
  782. *
  783. * @return type
  784. */
  785. public function signView()
  786. {
  787. if(!isset($this->params['sid']) || !is_numeric($this->params['sid'])){
  788. exit('没有报表参数');
  789. }
  790. //获取报表信息
  791. $signmsg = $this->sign->getOneSignbysid($this->params['sid']);
  792. //获取项目名,标段名,标段期数
  793. $project = $this->project->getRowByPid($signmsg['project']);
  794. $tender = $this->actmeasure->getRowByPmid($signmsg['tender']);
  795. // $phaseno = $this->numofperact->getCurrStatus($signmsg['phaseno']);
  796. $signmsg['project'] = $project['pname'];
  797. $signmsg['tender'] = $tender['pmname'];
  798. // $signmsg['phaseno'] = $phaseno['numpname'];
  799. //获取签署人列表
  800. $signauditlist = $this->sign->getSignAuditList($this->params['sid']);
  801. if(!empty($signauditlist)){
  802. foreach($signauditlist as $k => $v){
  803. //获取签署人头像
  804. $signauditlist[$k]['index'] = $k+1;
  805. $signauditlist[$k]['avatar'] = $this->auth->getAvatar($v['audituid']);
  806. }
  807. }
  808. //获取报表图片
  809. $maxwidth = 794; //默认图片最大宽度 a4
  810. $maxheight = 1123; //默认图片最大高度 a4
  811. if(!empty($signmsg['widhei'])){
  812. $widhei = explode('_', $signmsg['widhei']);
  813. $style = $widhei[0].'mm '.$widhei[1].'mm';
  814. }else{
  815. $style = '210mm 297mm';
  816. }
  817. $signattlist = $this->sign->getSignAttList($this->params['sid']);
  818. if(!empty($signattlist)){
  819. foreach($signattlist as $sak => $sav){
  820. $signattlist[$sak]['auditatt'] = $this->sign->getSignAuditAttList($sav['said']);
  821. if($sak == 0){
  822. $imgmsg = getimagesize(Doo::conf()->APP_URL.$sav['filepath']);
  823. $maxwidth = $imgmsg[0];
  824. $maxheight = $imgmsg[1];
  825. }
  826. }
  827. }
  828. $backurl = '/sign/list';
  829. if(isset($_GET['status'])){
  830. switch($_GET['status']){
  831. case 'done' : $backurl = '/sign/donelist';break;
  832. case 'doing' : $backurl = '/sign/onlist';break;
  833. case 'mylist' : $backurl = '/sign/mylist';break;
  834. case 'onlist' : $backurl = '/sign/onlist';break;
  835. case 'donelist' : $backurl = '/sign/donelist';break;
  836. default: $backurl = '/sign/list';break;
  837. }
  838. }
  839. $this->data['signmsg'] = $signmsg;
  840. $this->data['auditlist'] = $signauditlist;
  841. $this->data['attlist'] = $signattlist;
  842. $this->data['backurl'] = $backurl;
  843. $this->data['maxwidth'] = $maxwidth;
  844. $this->data['maxheight'] = $maxheight;
  845. $this->data['style'] = $style;
  846. $this->render('sign-view-page', $this->data, TRUE);
  847. }
  848. public function substr_replace_cn($string, $repalce = '*', $start = 0, $len = 0)
  849. {
  850. $count = mb_strlen($string, 'UTF-8'); //此处传入编码,建议使用utf-8。此处编码要与下面mb_substr()所使用的一致
  851. if (!$count) {
  852. return $string;
  853. }
  854. if ($len == 0) {
  855. $end = $count; //传入0则替换到最后
  856. } else {
  857. $end = $start + $len; //传入指定长度则为开始长度+指定长度
  858. }
  859. $i = 0;
  860. $returnString = '';
  861. while ($i < $count) { //循环该字符串
  862. $tmpString = mb_substr($string, $i, 1, 'UTF-8'); // 与mb_strlen编码一致
  863. if ($start <= $i && $i < $end) {
  864. $returnString .= $repalce;
  865. } else {
  866. $returnString .= $tmpString;
  867. }
  868. $i++;
  869. }
  870. return $returnString;
  871. }
  872. function unicode_encode($name)
  873. {//to Unicode
  874. $name = iconv('UTF-8', 'UCS-2', $name);
  875. $len = strlen($name);
  876. $str = '';
  877. for ($i = 0; $i < $len - 1; $i = $i + 2) {
  878. $c = $name[$i];
  879. $c2 = $name[$i + 1];
  880. if (ord($c) > 0) {// 两个字节的字
  881. $str .= '\\' . base_convert(ord($c), 10, 16) . base_convert(ord($c2), 10, 16);
  882. } else {
  883. $str .= $c2;
  884. }
  885. }
  886. $str = strtoupper($str);
  887. return $str;
  888. }
  889. function unicode_decode($name)
  890. {//Unicode to
  891. $pattern = '/([\w]+)|(\\\u([\w]{4}))/i';
  892. preg_match_all($pattern, $name, $matches);
  893. if (!empty($matches)) {
  894. $name = '';
  895. for ($j = 0; $j < count($matches[0]); $j++) {
  896. $str = $matches[0][$j];
  897. if (strpos($str, '\\u') === 0) {
  898. $code = base_convert(substr($str, 2, 2), 16, 10);
  899. $code2 = base_convert(substr($str, 4), 16, 10);
  900. $c = chr($code) . chr($code2);
  901. $c = iconv('UCS-2', 'UTF-8', $c);
  902. $name .= $c;
  903. } else {
  904. $name .= $str;
  905. }
  906. }
  907. }
  908. return $name;
  909. }
  910. private function __auditNotice($mobile, $text)
  911. {
  912. $smsSignSwitch = $this->aconfig->getOne(array('select' => 'smssignswitch', 'asArray' => TRUE))['smssignswitch'];
  913. if ($smsSignSwitch > 0)
  914. return $this->sms->sendSms($mobile, $text);
  915. }
  916. }
  917. ?>