Account.php 49 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015
  1. <?php
  2. /**
  3. * 登录控制器
  4. */
  5. namespace app\mcpsapi\controller;
  6. use app\common\model\Admin as AdminModel;
  7. use app\common\library\FileUpload;
  8. use app\common\model\Setting;
  9. use app\common\model\GameInfo;
  10. use think\Db;
  11. use think\Env;
  12. use think\Session;
  13. use think\Config;
  14. use think\Exception;
  15. class Account extends Guild
  16. {
  17. protected $_model;//模块
  18. protected $_channelId;//渠道ID
  19. protected function _initialize()
  20. {
  21. parent::_initialize();
  22. $this->_model = model('Game');
  23. $guildInfo = session('guild_info');
  24. $this->_channelId = $guildInfo['channel_id'];
  25. $this->_level = $guildInfo['level'];
  26. }
  27. /**
  28. * 获取所有该账号从属的C账号
  29. *
  30. * @param $adminInfo array 登录用户信息
  31. *
  32. */
  33. public function getChildAccount()
  34. {
  35. $gameid = input('gameIds',0,'intval');
  36. $level = Db::name('nw_channel')->where(['id'=>$this->_channelId])->value('level');
  37. $exist_channel = Db::name('cy_sdkgamelist')->where(['gameid'=>$gameid])->column('channel_id');
  38. $apply_channel = Db::name('nw_game_package_apply')->where(['game_id'=>$gameid,'apply_status'=>0])->column('channel_id');//白名单申请列表
  39. $ChildAccount = '';
  40. switch ($level) {
  41. case '1'://B
  42. $parent_id = Db::name('nw_channel')->where(['id'=>$this->_channelId])->value('parent_id');
  43. $in_path = ','.$parent_id.','.$this->_channelId.',';
  44. $ChildAccount = Db::name('nw_channel')->alias('channel')
  45. ->join('nw_channel_frozen frozen', 'channel.id = frozen.channel_id and frozen.game_id='.$gameid,'LEFT')
  46. ->field('channel.id,channel.name,IFNULL(frozen.subpackage, 0) as subpackage')
  47. ->where(['channel.id_path'=>['LIKE', '%' . $in_path . '%'],'channel.level'=>3,'channel.id'=>['not in',$exist_channel]])
  48. ->select();
  49. break;
  50. case '2'://B-
  51. $parent_id = Db::name('nw_channel')->where(['id'=>$this->_channelId])->value('parent_id');
  52. $in_path = ','.$parent_id.','.$this->_channelId.',';
  53. $ChildAccount = Db::name('nw_channel')->alias('channel')->field('channel.id,channel.name,IFNULL(frozen.subpackage, 0) as subpackage')->where(['channel.id_path'=>['LIKE', '%' . $in_path . '%'],'channel.level'=>3,'channel.id'=>['not in',$exist_channel]])->join('nw_channel_frozen frozen', 'channel.id = frozen.channel_id and frozen.game_id='.$gameid,'LEFT')->select();
  54. break;
  55. case '3'://C
  56. $ChildAccount = Db::name('nw_channel')->field('id,name')->where(['id'=>$this->_channelId,'channel.id'=>['not in',$exist_channel]])->find();
  57. break;
  58. default://B+
  59. return json(['data'=>$ChildAccount,'code'=>10012,'msg'=>'B+端无权限分包']);
  60. break;
  61. }
  62. foreach ($ChildAccount as $key => $value) {
  63. $ChildAccount[$key]['apply'] = in_array($value['id'],$apply_channel)?1:0;
  64. }
  65. return json(['data'=>$ChildAccount,'code'=>20000,'msg'=>'获取C端账号成功']);
  66. }
  67. /**
  68. * i协议阅读
  69. * @param string $value [description]
  70. * @return [type] [description]
  71. */
  72. public function doReadStatus()
  73. {
  74. $read_status = input('read_status', 0, 'intval');
  75. $data['update_time'] = NOW_TIMESTAMP;
  76. $data['read_status'] = $read_status;
  77. $res = Db::name('nw_channel_admin')->where(['channel_id' => $this->_channelId])->update($data);
  78. if ($res) {
  79. $guild_info = session('guild_info');
  80. if ($data['read_status']) {
  81. $guild_info['read_status'] = $data['read_status'];
  82. }
  83. session('guild_info', $guild_info);
  84. return json(['data'=>[],'code'=>20000,'msg'=>'阅读协议成功']);
  85. }else{
  86. return json(['data'=>[],'code'=>10020,'msg'=>'网络错误刷新后重试']);
  87. }
  88. }
  89. /**
  90. * 获取账号个人信息
  91. * @param string $value [description]
  92. */
  93. public function edit()
  94. {
  95. $editInfo = Db::name('nw_channel_admin')->field(['id','username','mobile','qq','sex','head_img'])->where(['channel_id' => $this->_channelId])->find();
  96. $editInfo['head_img'] == null && $editInfo['head_img'] = 'image/cps/headimg/user.png';
  97. return json(['data'=>$editInfo,'code'=>20000,'msg'=>'获取账号信息成功']);
  98. }
  99. /**
  100. * 修改账户个人信息
  101. * @param string $value [description]
  102. */
  103. public function doEdit()
  104. {
  105. $fileUpload = new FileUpload();
  106. $data = $this->request->post();
  107. $head_img = $fileUpload->set('allowExt', 'jpg,jpeg,png')->set('maxsize', 2048000)->set('dir','image/personpic/'.$this->_channelId.'/headimg/')->upload(request()->file('head_img'));//头像
  108. if ($head_img) {
  109. $data['head_img'] = $head_img;
  110. }
  111. $data['update_time'] = NOW_TIMESTAMP;
  112. $res = Db::name('nw_channel_admin')->where(['channel_id' => $this->_channelId])->update($data);
  113. if ($res) {
  114. $guild_info = session('guild_info');
  115. if ($head_img) {
  116. $guild_info['head_img'] = $head_img;
  117. }
  118. if ($data['qq']) {
  119. $guild_info['qq'] = $data['qq'];
  120. }
  121. if ($data['sex']) {
  122. $guild_info['sex'] = $data['sex'];
  123. }
  124. session('guild_info', $guild_info);
  125. return json(['data'=>[],'code'=>20000,'msg'=>'修改账号信息成功']);
  126. }else{
  127. return json(['data'=>[],'code'=>10020,'msg'=>'网络错误刷新后重试']);
  128. }
  129. }
  130. /**
  131. * 修改账户详细信息
  132. * @param string $value [description]
  133. */
  134. public function doEditInfo()
  135. {
  136. $type = input('type');//0 个人 1企业
  137. $guild_info = session('guild_info');
  138. switch ($type) {
  139. case '0':
  140. $data = [
  141. 'type' => 0,
  142. 'channel_id' => $this->_channelId,
  143. 'real_name' => input('name'),
  144. 'person_id' => input('person_id'),
  145. 'linkman_mobile' => input('linkman_mobile'),
  146. 'linkman_email' => input('linkman_email'),
  147. 'address' => input('address'),
  148. 'create_time' => NOW_TIMESTAMP
  149. ];
  150. $result = $this->validate($data, [
  151. ['real_name', 'require|max:10|/^[\x{4e00}-\x{9fa5}]+$/u', '姓名不能为空|名称不能超过10个字符|请输入中文'],
  152. ['person_id', ['require','length:18','regex:/^[1-9]\d{5}(19|20)\d{2}[01]\d[0123]\d\d{3}[xX\d]$/'], '身份证号码不能为空|身份证号码需要18个字符|身份证格式错误'],
  153. ['linkman_mobile', 'require|length:11|/^1[3456789]\d{9}$/ims', '手机号码不能为空|手机号码需要11个数字|手机号码格式错误'],
  154. ['linkman_email', 'require|email', '邮箱必须填写|邮箱格式错误'],
  155. ['address', 'require|max:50', '地址必须填写|地址长度限制50字符'],
  156. ]);
  157. if (true !== $result) {
  158. return json(['data'=>[],'code'=>10013,'msg'=>$result]);
  159. }
  160. $res = Db::name('nw_channel_info')->insert($data);
  161. if ($res) {
  162. $guild_info['person_id'] = 1;
  163. session('guild_info', $guild_info);
  164. return json(['data'=>[],'code'=>20000,'msg'=>'实名认证成功']);
  165. }else{
  166. return json(['data'=>[],'code'=>10013,'msg'=>$res]);
  167. }
  168. break;
  169. case '1'://企业
  170. $data = [
  171. 'type' => 1,
  172. 'channel_id' => $this->_channelId,
  173. 'company_name' => input('company_name'),//企业名称
  174. 'us_code' => input('us_code'),//信用码
  175. 'leson_name' => input('leson_name'),//法人姓名
  176. 'leson_person_id' => input('person_id'),
  177. 'linkman_mobile' => input('linkman_mobile'),
  178. 'linkman_email' => input('linkman_email'),
  179. 'address' => input('address'),
  180. 'create_time' => NOW_TIMESTAMP
  181. ];
  182. $result = $this->validate($data, [
  183. ['leson_name', 'require|max:10|/^[\x{4e00}-\x{9fa5}]+$/u', '法人姓名不能为空|法人名称不能超过10个字符|请输入中文'],
  184. ['company_name', 'require|max:20', '公司名称不能为空|公司名称不能超过20个字符'],
  185. ['us_code',['require','regex:[1-9A-GY]{1}[1239]{1}[1-9]{1}[0-9]{5}[0-9A-Z]{10}'], '统一社会信用码不能为空|统一社会信用码格式错误'],
  186. ['leson_person_id', ['require','length:18','regex:/^[1-9]\d{5}(19|20)\d{2}[01]\d[0123]\d\d{3}[xX\d]$/'], '身份证号码不能为空|身份证号码需要18个字符|身份证格式错误'],
  187. ['linkman_mobile', 'require|length:11|/^1[3456789]\d{9}$/ims', '手机号码不能为空|手机号码需要11个数字|手机号码格式错误'],
  188. ['linkman_email', 'require|email', '邮箱必须填写|邮箱格式错误'],
  189. ['address', 'require|max:50', '地址必须填写|地址长度限制50字符'],
  190. ]);
  191. if (true !== $result) {
  192. return json(['data'=>[],'code'=>10013,'msg'=>$result]);
  193. }
  194. $res = Db::name('nw_channel_info')->insert($data);
  195. if ($res) {
  196. $guild_info['person_id'] = 1;
  197. session('guild_info', $guild_info);
  198. return json(['data'=>[],'code'=>20000,'msg'=>'实名认证成功']);
  199. }else{
  200. return json(['data'=>[],'code'=>10013,'msg'=>$res]);
  201. }
  202. break;
  203. default:
  204. return json(['data'=>[],'code'=>10013,'msg'=>'选择认证类型错误']);
  205. break;
  206. }
  207. }
  208. /**
  209. * 发送短信
  210. * @param string $value [description]
  211. * @return [type] [description]
  212. */
  213. public function sendMsg()
  214. {
  215. $data = ['mobile' => input('mobile')];
  216. $result = $this->validate($data, [
  217. ['mobile', 'require|isEmpty|mobile', '手机号码必须填写|手机号码不能为空|请输入正确的手机号码'],
  218. ]);
  219. if (true !== $result) {
  220. return json(['data'=>'','code'=>10014,'msg'=>$result]);
  221. }
  222. //判断该手机号码是否被绑定过
  223. $exist_res = Db::name('nw_channel_admin')->where(['channel_id' => ['neq',$this->_channelId],'mobile'=>$data['mobile']])->find();
  224. if ($exist_res) {
  225. return json(['data'=>'','code'=>10014,'msg'=>'该手机号码已经被其他账号绑定!']);
  226. }
  227. $res = (new \app\common\library\Sms)->sendCode($data['mobile']);
  228. if ($res['status'] == true) {
  229. return json(['data'=>'','code'=>20000,'msg'=>'发送短信验证码成功']);
  230. }else{
  231. return json(['data'=>'','code'=>10014,'msg'=>$res['msg']]);
  232. }
  233. }
  234. /**
  235. * 安全认证
  236. * @param string $value [description]
  237. * @return [type] [description]
  238. */
  239. public function safeAuthentication()
  240. {
  241. $action = input('action');//action 执行模块安全认证操作
  242. $guild_info = session('guild_info');
  243. switch ($action) {
  244. case '2'://绑定手机号码
  245. $mobile = $guild_info['mobile'];
  246. if ($mobile) {
  247. $data = $this->request->post();
  248. $result = $this->validate($data, [
  249. ['mobile', 'require|isEmpty|mobile', '手机号码必须填写|手机号码不能为空|请输入正确的手机号码'],
  250. ['sms_code', 'require|isEmpty', '验证码必须填写|验证码不能为空'],
  251. ['new_mobile', 'require|isEmpty|mobile', '新手机号码必须填写|新手机号码不能为空|请输入新手机号码'],
  252. ['new_sms_code', 'require|isEmpty', '新手机验证码必须填写|新手机验证码不能为空'],
  253. ]);//验证器
  254. if (true !== $result) {
  255. return json(['data'=>'','code'=>10015,'msg'=>$result]);
  256. }
  257. if ($data['new_mobile'] == $mobile) {
  258. return json(['data'=>'','code'=>10015,'msg'=>'手机号跟原绑定手机号一样,请重新填写']);
  259. }
  260. $res = (new \app\common\library\Sms)->checkCode($data['mobile'], $data['sms_code']);
  261. if ($res['status'] == false) {
  262. return json(['data'=>'','code'=>10015,'msg'=>'原手机'.$res['msg']]);
  263. }
  264. $new_res = (new \app\common\library\Sms)->checkCode($data['new_mobile'], $data['new_sms_code']);
  265. if ($new_res['status'] == false) {
  266. return json(['data'=>'','code'=>10015,'msg'=>'新手机'.$new_res['msg']]);
  267. }
  268. if (Db::name('nw_channel_admin')->where(['channel_id' => $guild_info['channel_id']])->update(['mobile' => $data['new_mobile'],'update_time'=>time()])) { // 插入玩家历史记录
  269. Db::table('cy_member_history')->insert([
  270. 'userid' => $guild_info['id'], //todo
  271. 'password' => '',
  272. 'mobile' => $data['new_mobile'],
  273. 'ip' => request()->ip(1),
  274. 'create_time' => time(),
  275. ]);
  276. $guild_info['mobile'] = $data['new_mobile'];
  277. session('guild_info',$guild_info);
  278. return json(['data'=>'','code'=>20000,'msg'=>'绑定手机号码成功']);
  279. }
  280. return json(['data'=>'','code'=>10015,'msg'=>'手机验证码验证失败']);
  281. }else{
  282. $data = $this->request->post();
  283. $result = $this->validate($data, [
  284. ['new_mobile', 'require|isEmpty|mobile', '手机号码必须填写|手机号码不能为空|请输入正确的手机号码'],
  285. ['new_sms_code', 'require|isEmpty', '验证码必须填写|验证码不能为空'],
  286. ]);
  287. if (true !== $result) {
  288. return json(['data'=>'','code'=>10015,'msg'=>$result]);
  289. }
  290. $res = (new \app\common\library\Sms)->checkCode($data['new_mobile'], $data['new_sms_code']);
  291. if ($res['status'] == false) {
  292. return json(['data'=>'','code'=>10015,'msg'=>$res['msg']]);
  293. }
  294. if (Db::name('nw_channel_admin')->where(['channel_id' => $guild_info['channel_id']])->update(['mobile' => $data['new_mobile'],'update_time'=>time()])) { // 插入玩家历史记录
  295. Db::table('cy_member_history')->insert([
  296. 'userid' => $guild_info['id'], //todo
  297. 'password' => '',
  298. 'mobile' => $data['new_mobile'],
  299. 'ip' => request()->ip(1),
  300. 'create_time' => time(),
  301. ]);
  302. $guild_info['mobile'] = $data['new_mobile'];
  303. session('guild_info',$guild_info);
  304. return json(['data'=>'','code'=>20000,'msg'=>'绑定手机号码成功']);
  305. }
  306. return json(['data'=>'','code'=>10015,'msg'=>'手机验证码验证失败']);
  307. }
  308. break;
  309. case '3'://登录密码
  310. $mobile = $guild_info['mobile'];
  311. if ($mobile) {
  312. $data = $this->request->post();
  313. $result = $this->validate($data, [
  314. ['new_mobile', 'require|isEmpty|mobile', '手机号码必须填写|手机号码不能为空|请输入正确的手机号码'],
  315. ['new_sms_code', 'require|isEmpty', '验证码必须填写|验证码不能为空'],
  316. ['new_password', ['require','regex:/(^[a-zA-Z]{1})[0-9a-z_$]{5,19}$/i'], '密码必须填写|密码只能以字母、数字组成并且长度6-20个字符'],
  317. ]);
  318. if (true !== $result) {
  319. return json(['data'=>'','code'=>10015,'msg'=>$result]);
  320. }
  321. $res = (new \app\common\library\Sms)->checkCode($data['new_mobile'], $data['new_sms_code']);
  322. if ($res['status'] == false) {
  323. return json(['data'=>'','code'=>10015,'msg'=>$res['msg']]);
  324. }
  325. $res = Db::name('nw_channel_admin')->where(['channel_id' => $guild_info['channel_id']])->update(['password' => mg_password($data['new_password']),'update_time'=>time()]);
  326. if ($res) { // 插入玩家历史记录
  327. return json(['data'=>'','code'=>20000,'msg'=>'登录密码修改成功']);
  328. }
  329. }else{
  330. return json(['data'=>'','code'=>10015,'msg'=>'您还未绑定手机号,暂时不能修改登录密码,请先绑定手机号。']);
  331. }
  332. break;
  333. case '4'://交易密码
  334. $mobile = $guild_info['mobile'];
  335. if ($mobile) {
  336. $data = $this->request->post();
  337. $pay_password = Db::name('nw_channel_admin')->where(['channel_id' => $guild_info['channel_id']])->value('pay_password');//判断是否有交易密码
  338. if (!$pay_password) {
  339. $result = $this->validate($data, [
  340. ['new_paypassword', ['require','regex:/(^[a-zA-Z]{1})[0-9a-z_$]{5,19}$/i'], '密码必须填写|密码只能以字母、数字组成并且长度6-20个字符'],
  341. ['new_repaypassword', ['require','regex:/(^[a-zA-Z]{1})[0-9a-z_$]{5,19}$/i'], '密码必须填写|密码只能以字母、数字组成并且长度6-20个字符'],
  342. ]);
  343. if ($data['new_paypassword'] != $data['new_repaypassword']) {
  344. return json(['data'=>'','code'=>10015,'msg'=>'两次登录密码输入不一致!']);
  345. }
  346. }else{
  347. $result = $this->validate($data, [
  348. ['new_mobile', 'require|isEmpty|mobile', '手机号码必须填写|手机号码不能为空|请输入正确的手机号码'],
  349. ['new_sms_code', 'require|isEmpty', '验证码必须填写|验证码不能为空'],
  350. ['new_paypassword', ['require','regex:/(^[a-zA-Z]{1})[0-9a-z_$]{5,19}$/i'], '密码必须填写|密码只能以字母、数字组成并且长度6-20个字符'],
  351. ]);
  352. $res = (new \app\common\library\Sms)->checkCode($data['new_mobile'], $data['new_sms_code']);
  353. if ($res['status'] == false) {
  354. return json(['data'=>'','code'=>10015,'msg'=>$res['msg']]);
  355. }
  356. }
  357. if (true !== $result) {
  358. return json(['data'=>'','code'=>10015,'msg'=>$result]);
  359. }
  360. $res = Db::name('nw_channel_admin')->where(['channel_id' => $guild_info['channel_id']])->update(['pay_password' => mg_password($data['new_paypassword']),'update_time'=>time()]);
  361. if ($res) {
  362. return json(['data'=>'','code'=>20000,'msg'=>'交易密码更新成功']);
  363. }
  364. }else{
  365. return json(['data'=>'','code'=>10015,'msg'=>'您还未绑定手机号,暂时不能修改交易密码,请先绑定手机号。']);
  366. }
  367. break;
  368. case '5'://二级密码
  369. $mobile = $guild_info['mobile'];
  370. if ($mobile) {
  371. $data = $this->request->post();
  372. $secondary_password = Db::name('nw_channel_admin')->where(['channel_id' => $guild_info['channel_id']])->value('secondary_password');//判断是否有二级密码
  373. if (!$secondary_password) {
  374. $result = $this->validate($data, [
  375. ['new_sepassword', ['require','regex:/(^[a-zA-Z]{1})[0-9a-z_$]{5,19}$/i'], '密码必须填写|密码只能以字母、数字组成并且长度6-20个字符'],
  376. ['new_serepassword', ['require','regex:/(^[a-zA-Z]{1})[0-9a-z_$]{5,19}$/i'], '密码必须填写|密码只能以字母、数字组成并且长度6-20个字符'],
  377. ]);
  378. if ($data['new_sepassword'] != $data['new_serepassword']) {
  379. return json(['data'=>'','code'=>10015,'msg'=>'两次登录密码输入不一致!']);
  380. }
  381. }else{
  382. $result = $this->validate($data, [
  383. ['new_mobile', 'require|isEmpty|mobile', '手机号码必须填写|手机号码不能为空|请输入正确的手机号码'],
  384. ['new_sms_code', 'require|isEmpty', '验证码必须填写|验证码不能为空'],
  385. ['new_sepassword', ['require','regex:/(^[a-zA-Z]{1})[0-9a-z_$]{5,19}$/i'], '密码必须填写|密码只能以字母、数字组成并且长度6-20个字符'],
  386. ]);
  387. $res = (new \app\common\library\Sms)->checkCode($data['new_mobile'], $data['new_sms_code']);
  388. if ($res['status'] == false) {
  389. return json(['data'=>'','code'=>10015,'msg'=>$res['msg']]);
  390. }
  391. }
  392. if (true !== $result) {
  393. return json(['data'=>'','code'=>10015,'msg'=>$result]);
  394. }
  395. if ($data['new_sepassword'] != $data['new_serepassword']) {
  396. return json(['data'=>'','code'=>10015,'msg'=>'两次密码输入不一致!']);
  397. }
  398. $res = Db::name('nw_channel_admin')->where(['channel_id' => $guild_info['channel_id']])->update(['secondary_password' => mg_password($data['new_sepassword']),'update_time'=>time()]);
  399. if ($res) { // 插入玩家历史记录
  400. $guild_info['secondary_password'] = 1;
  401. session('guild_info', $guild_info);
  402. return json(['data'=>'','code'=>20000,'msg'=>'二级密码更新成功']);
  403. }
  404. }else{
  405. return json(['data'=>'','code'=>10015,'msg'=>'您还未绑定手机号,暂时不能修改二级密码,请先绑定手机号。']);
  406. }
  407. break;
  408. default://默认
  409. return json(['data'=>'','code'=>10015,'msg'=>'模块错误']);
  410. break;
  411. }
  412. }
  413. /**
  414. * 安全认证
  415. * @param string $value [description]
  416. * @return [type] [description]
  417. */
  418. public function detailInfoChange()
  419. {
  420. $fileUpload = new FileUpload();
  421. $guild_info = session('guild_info');
  422. $data = $this->request->post();//数据
  423. if (empty($data['bankNum']) && empty($data['zhifubao_number'])) {
  424. return json(['data'=>[],'code'=>10013,'msg'=>"支付宝账号或者银行卡账号必填一个"]);
  425. }
  426. $result = $this->validate($data, [
  427. ['name', 'require|max:50', '姓名/法人不能为空|姓名/法人不能超过50个字符'],
  428. ['person_id', ['require','length:18','regex:/^[1-9]\d{5}(19|20)\d{2}[01]\d[0123]\d\d{3}[xX\d]$/'], '身份证号码不能为空|身份证号码需要18个字符|身份证格式错误'],
  429. ['mobile', 'require|length:11|/^1[3456789]\d{9}$/ims', '手机号码不能为空|手机号码需要11个数字|手机号码格式错误'],
  430. ]);
  431. if (!empty($data['bankNum'])) {
  432. $result = $this->validate($data, [
  433. ['bankNum', 'max:25|min:15|number', '银行卡号码不能为空|银行卡号码格式错误|银行卡号码格式错误'],
  434. ['provinceCity', 'require', '开户省市不能为空'],
  435. ['bankName', 'require', '开户银行名称不能为空'],
  436. ['openBank', 'require', '开户银行不能为空'],
  437. // ['bankId', 'require', '开户银行编号不能为空'],
  438. ]);
  439. }
  440. if (true !== $result) {
  441. return json(['data'=>[],'code'=>10013,'msg'=>$result]);
  442. }
  443. $back_image_flag = request()->file('back_image_url');
  444. $apply_info = Db::name('nw_channel_info_apply')->where(['channel_id'=>$this->_channelId])->order('id desc')->value('apply_info');
  445. $json_info = json_decode($apply_info,1);
  446. if (!isset($back_image_flag)) {//查看数据库是否有之前保存身份证信息
  447. if ($apply_info) {
  448. $back_image_url = isset($json_info['back_image_url'])?$json_info['back_image_url']:'';
  449. }else{
  450. return json(['data'=>[],'code'=>10013,'msg'=>'身份证/营业执照背面未上传或者已失效请刷新后重试']);
  451. }
  452. }else{
  453. $back_image_url = $fileUpload->set('allowExt', 'jpg,jpeg,png')->set('maxsize', 10485760)->set('dir','image/personpic/'.$this->_channelId.'/')->upload(request()->file('back_image_url'));//身份证照片后面
  454. }
  455. $front_image_flag = request()->file('front_image_url');
  456. if (!isset($front_image_flag)) {
  457. if ($apply_info) {
  458. $front_image_url = isset($json_info['front_image_url'])?$json_info['front_image_url']:'';
  459. }else{
  460. return json(['data'=>[],'code'=>10013,'msg'=>'身份证/营业执照正面未上传或者已失效请刷新后重试']);
  461. }
  462. }else{
  463. $front_image_url = $fileUpload->set('allowExt', 'jpg,jpeg,png')->set('maxsize', 10485760)->set('dir','image/personpic/'.$this->_channelId.'/')->upload(request()->file('front_image_url'));//身份证照片前面
  464. }
  465. if ($back_image_url && $front_image_url) {
  466. $data['back_image_url'] = $back_image_url;
  467. $data['front_image_url'] = $front_image_url;
  468. }else{
  469. return json(['data'=>[],'code'=>10013,'msg'=>'图片错误或者超过10M,请刷新后重试']);
  470. }
  471. $cont = [
  472. 'channel_id' =>$this->_channelId,
  473. 'channel_name' =>$guild_info['channel_name'],
  474. 'apply_info' => json_encode($data),
  475. 'status' => 0,
  476. 'apply_time' => NOW_TIMESTAMP,
  477. 'apply_admin_name' => $guild_info['channel_name'],
  478. ];
  479. $id = Db::name('nw_channel_info_apply')->where(['channel_id'=>$this->_channelId,'status'=>0])->value('id');
  480. if ($id) {//存在待审核中的数据的话 无法在提交审核
  481. return json(['data'=>[],'code'=>10013,'msg'=>'身份认证信息还在审核中,无法重复提交']);
  482. }
  483. //info 状态修改成0
  484. Db::startTrans();
  485. try {
  486. $res = Db::name('nw_channel_info_apply')->insertGetId($cont);
  487. if (!$res) {
  488. throw new Exception("身份认证审核提交失败!");
  489. }
  490. if (Db::name('nw_channel_info')->where(['channel_id'=>$this->_channelId])->value('id') && Db::name('nw_channel_info')->where(['channel_id'=>$this->_channelId])->value('apply_status')) {
  491. $statusUpadte = Db::name('nw_channel_info')->where(['channel_id'=>$this->_channelId])->update(['apply_status' => 0]);
  492. if (!$statusUpadte) {
  493. throw new Exception("修改身份认证状态失败!");
  494. }
  495. }
  496. Db::commit();
  497. } catch (Exception $e) {
  498. Db::rollback();
  499. return json(['data'=>'','code'=>10015,'msg'=>"提交审核失败: " . $e->getMessage()]);
  500. }
  501. //叮叮通知
  502. $template = '有新的身份认证申请:推广账号"'.$this->_channelName.'" 发起身份认证审核申请,请及时安排处理,时间:'.date('Y-m-d H:i:s');
  503. $ddurl = Env::get('operat_url');
  504. curlDD($template, $ddurl,true);
  505. return json(['data'=>[],'code'=>20000,'msg'=>'提交申请成功,等待后台审核']);
  506. }
  507. /**
  508. * 获取提交审核内容
  509. * @param string $value [description]
  510. * @return [type] [description]
  511. */
  512. public function getDetailInfo()
  513. {
  514. $res = Db::name('nw_channel_info_apply')->field('apply_info,status')->where(['channel_id'=>$this->_channelId])->order('id desc')->find();
  515. if ($res) {//check 提交信息表 查看是否有记录
  516. return json(['data'=>$res,'code'=>20000,'msg'=>'获取审核内容成功','status'=>$res["status"]]);
  517. }else{//不存在提交审核记录的情况下,去签署协议找到之前录入的姓名和身份证
  518. $res = Db::name('nw_channel_info')->field('real_name as name,person_id')->where(['channel_id'=>$this->_channelId])->find();
  519. return json(['data'=>['apply_info'=>json_encode($res),'status'=>3],'code'=>20000,'msg'=>'获取审核内容成功','status'=>3]);
  520. }
  521. }
  522. /**
  523. * 获取待审核列表
  524. * @param string $value [description]
  525. * @return [type] [description]
  526. */
  527. public function getExamineList()
  528. {
  529. if ($this->_level != 1) {
  530. return json(['data'=>'','code'=>20013,'msg'=>'只有会长有审核权限!']);
  531. }
  532. $page = input('page',1);
  533. $pageSize = input('pageSize',10);
  534. $status = input('status');
  535. $apply_time_start = input('apply_time_start');
  536. $apply_time_end = input('apply_time_end');
  537. $channel_id = input('channel_id');
  538. $where = [];
  539. if (!empty($status) || $status === '0') {
  540. $where['apply.status'] = (int)$status;
  541. }
  542. if (!empty($channel_id)) {
  543. $where['apply.channel_id'] = $channel_id;
  544. }
  545. if (!empty($apply_time_start) && !empty($apply_time_end)) {
  546. $where['apply.apply_time'] = ['BETWEEN', [strtotime($apply_time_start),strtotime($apply_time_end)]];
  547. }
  548. // halt($where);
  549. $list = Db::name('nw_channel_info_apply')->alias('apply')
  550. ->field('apply.id,apply.channel_id,apply.apply_info,apply.remark,apply.status,apply.apply_time,channel.name')
  551. ->where($where)
  552. ->where(['channel.parent_id' => $this->_channelId])
  553. ->join('nw_channel channel', 'channel.id = apply.channel_id')
  554. ->paginate(['list_rows'=>$pageSize,'page'=>$page])->toArray();
  555. $channelList = Db::table('nw_channel')->field('id,name')->where(['level'=>2,'id_path'=>['LIKE', '%,' . $this->_channelId . ',%']])->select();
  556. return json(['data'=>$list,'code'=>20000,'msg'=>'获取列表信息成功','channelList'=>$channelList]);
  557. }
  558. /**
  559. * 更改审核状态
  560. */
  561. public function doExamine()
  562. {
  563. if ($this->_level != 1) {
  564. return json(['data'=>'','code'=>20013,'msg'=>'只有会长有审核权限!']);
  565. }
  566. $status = input('status');
  567. $e_id = input('e_id');
  568. $remark = input('remark');
  569. $channel_id = input('channel_id');
  570. if (empty($status)) {
  571. return json(['data'=>'','code'=>10025,'msg'=>'请选择审核状态!']);
  572. }
  573. if (empty($status)) {
  574. return json(['data'=>'','code'=>10025,'msg'=>'请选择审核状态!']);
  575. }
  576. $data['status'] = $status;
  577. $data['remark'] = $remark;
  578. $data['check_time'] = NOW_TIMESTAMP;
  579. $data['check_admin_type'] = 2;
  580. $data['check_admin_name'] = $this->_channelId;
  581. $resultChannel = Db::name('nw_channel_info_apply')->where(['channel_id'=>$channel_id,'id'=>$e_id])->update($data);
  582. if ($resultChannel) {
  583. return json(['data'=>'','code'=>20000,'msg'=>'修改成功']);
  584. }
  585. }
  586. /**
  587. * 获取省数据
  588. * @param string $value [description]
  589. * @return [type] [description]
  590. */
  591. public function getProvince()
  592. {
  593. $province = Db::name('cy_city')->field('name,id,parent_id,type')->where(['type' => 1])->select();
  594. $city = Db::name('cy_city')->field('name,id,parent_id,type')->where(['type' => 2])->select();
  595. $out = [];
  596. foreach ($province as $key => $value) {
  597. $out[$value['id']]['value'] = $value['name'];
  598. $out[$value['id']]['label'] = $value['name'];
  599. $out[$value['id']]['children'] = [];
  600. }
  601. foreach ($city as $key => $value) {
  602. $out[$value['parent_id']]['children'][] = ['value'=>$value['name'],'label'=>$value['name']];
  603. }
  604. $out = array_values($out);
  605. return json(['data'=>$out,'code'=>20000,'msg'=>'获取省列表成功']);
  606. }
  607. /**
  608. * 子账号管理(列表)
  609. * @param string $value [description]
  610. */
  611. public function childManagerList()
  612. {
  613. $level = Db::name('nw_channel')->where(['id'=>$this->_channelId])->value('level');//层级
  614. $ChildAccount = [];
  615. $page = input('page',1);
  616. $pageSize = input('pageSize',10);
  617. $where = $this->_getCondition();
  618. switch ($level) {
  619. case 0://B+
  620. $ChildAccount = Db::name('nw_channel')->alias('channel')->field('channel.id,channel.name,channel.level,channel.status,from_unixtime(channel.create_time) as create_time ,channel.share_show,channel.replacement_status,admin.qq,admin.mobile,admin.sex,channel.mcps_settle_period as settle_period')->where($where)->where(['channel.parent_id' => $this->_channelId])->join('nw_channel_admin admin', 'admin.channel_id = nw_channel.id','LEFT')->paginate(['list_rows'=>$pageSize,'page'=>$page])->toArray();
  621. return json(['data'=>$ChildAccount,'code'=>20000,'msg'=>'获取列表信息成功']);
  622. break;
  623. case 1://B
  624. $parent_id = Db::name('nw_channel')->where(['id'=>$this->_channelId])->value('parent_id');
  625. $in_path = ','.$parent_id.','.$this->_channelId.',';
  626. $ChildAccount = Db::name('nw_channel')->alias('channel')->field('channel.id,channel.name,channel.level,channel.status,channel.create_time,parent.name as parent_name,channel.replacement_status,channel.share_show,channel.assets_show,admin.qq,admin.mobile,admin.sex')->where($where)->where(['channel.id_path'=>['LIKE', '%' . $in_path . '%']])->join('nw_channel parent', 'channel.parent_id = parent.id AND parent.level = 2','LEFT')->join('nw_channel_admin admin', 'admin.channel_id = nw_channel.id','LEFT')->paginate(['list_rows'=>$pageSize,'page'=>$page])->toArray();
  627. foreach ($ChildAccount['data'] as $key => $value) {
  628. $ChildAccount['data'][$key]["create_time"] = date('Y-m-d H:i:s',$value['create_time']);
  629. if ($value["level"] == 2) {
  630. $ChildAccount['data'][$key]["parent_name"] = '';
  631. }
  632. }
  633. return json(['data'=>$ChildAccount,'code'=>20000,'msg'=>'获取列表信息成功']);
  634. break;
  635. case 2://B-
  636. $ChildAccount = Db::name('nw_channel')->alias('channel')->field('channel.id,channel.name,channel.level,channel.status,from_unixtime(channel.create_time) as create_time,admin.qq,admin.mobile,admin.sex')->where($where)->where(['channel.parent_id' => $this->_channelId])->join('nw_channel_admin admin', 'admin.channel_id = nw_channel.id','LEFT')->paginate(['list_rows'=>$pageSize,'page'=>$page])->toArray();
  637. return json(['data'=>$ChildAccount,'code'=>20000,'msg'=>'获取列表信息成功']);
  638. break;
  639. default:
  640. return json(['data'=>'','code'=>10015,'msg'=>'模块错误']);
  641. break;
  642. }
  643. }
  644. /**
  645. * 子账号管理(编辑)
  646. * @param string $value [description]
  647. */
  648. public function childManagerDo()
  649. {
  650. $action = input('action');//模块 判断是编辑还是删除
  651. switch ($action) {
  652. case '1'://编辑
  653. $data = $this->request->post();
  654. if ($this->_channelLevel == 3) {//C账号没有子账号管理权限
  655. return json(['data'=>'','code'=>20013,'msg'=>'无核权限!']);
  656. }
  657. Db::startTrans();
  658. try {
  659. $result = $this->validate($data, [
  660. ['id', 'require', '必须参数错误'],
  661. ['status', 'require','必须参数错误'],
  662. ]);
  663. if (true !== $result) {
  664. throw new Exception($result);
  665. }
  666. $level = Db::name('nw_channel')->where(['id'=>$data['id']])->value('level');
  667. $flag = Db::name('nw_channel')->where(['id'=>$data['id'],'id_path'=>['LIKE', '%,' . $this->_channelId . ',%']])->find();
  668. //修改的账号必须是该登录账号的下级账号
  669. if ($this->_channelId >= $level && !$flag) {
  670. throw new Exception('该账户不属于您所管理账户!');
  671. }
  672. if (($data['new_password'] != $data['new_repassword'])) {
  673. throw new Exception("两次登录密码输入不一致!");
  674. }
  675. $cont['update_time'] = time();
  676. if ($level == 1) {//B
  677. $cont['replacement_status'] = $data['replacement_status'];
  678. $cont['status'] = $data['status'];
  679. $cont['share_show'] = $data['share_show'];
  680. }elseif ($level == 2) {//B-
  681. $cont['assets_show'] = $data['assets_show'];
  682. $cont['status'] = $data['status'];
  683. $cont['share_show'] = $data['share_show'];
  684. }elseif ($level == 3) {//C
  685. $cont['status'] = $data['status'];
  686. }
  687. $pwdres = true;
  688. if (!empty($data['new_password'])) {
  689. $flag = preg_match('/(^[a-zA-Z]{1})[0-9a-z_$]{6,19}$/i',$data['new_password']);
  690. if (!$flag) {
  691. throw new Exception("密码只能以字母、数字组成并且长度6-20个字符!");
  692. // return json(['data'=>'','code'=>10015,'msg'=>'密码只能以字母、数字组成并且长度6-20个字符!']);
  693. }
  694. $pwdres = Db::name('nw_channel_admin')->where(['channel_id' => $data['id']])->update(['password' => mg_password($data['new_password']),'status'=>$data['status'],'update_time'=>time()]);
  695. }else{
  696. $pwdres = Db::name('nw_channel_admin')->where(['channel_id' => $data['id']])->update(['status'=>$data['status'],'update_time'=>time()]);
  697. }
  698. $res = Db::name('nw_channel')->where(['id' => $data['id']])->update($cont);
  699. if (!$res || !$pwdres) {
  700. throw new Exception("更新账号信息失败");
  701. // return json(['data'=>'','code'=>10016,'msg'=>'更新账号信息失败']);
  702. }
  703. Db::commit();
  704. } catch (Exception $e) {
  705. Db::rollback();
  706. return json(['data'=>'','code'=>10015,'msg'=>"失败: " . $e->getMessage()]);
  707. }
  708. return json(['data'=>'','code'=>20000,'msg'=>'更新账号信息成功']);
  709. break;
  710. case '2'://冻结
  711. $data = $this->request->post();
  712. $result = $this->validate($data, [
  713. ['id', 'require', '必须参数错误'],
  714. ]);
  715. if (true !== $result) {
  716. return json(['data'=>[],'code'=>10013,'msg'=>$result]);
  717. }
  718. $res = Db::name('nw_channel_admin')->where(['id' => $data['id']])->update(['status' => 0 ,'update_time'=>time()]);
  719. if ($res) {
  720. return json(['data'=>'','code'=>20000,'msg'=>'冻结账号成功']);
  721. }else{
  722. return json(['data'=>'','code'=>10017,'msg'=>'冻结账号失败']);
  723. }
  724. break;
  725. default:
  726. return json(['data'=>'','code'=>10015,'msg'=>'模块错误']);
  727. break;
  728. }
  729. }
  730. /**
  731. * 子账号管理(增加)
  732. * @param string $value [description]
  733. */
  734. public function childManagerAdd()
  735. {
  736. $data = $this->request->post();
  737. $data['name'] = trim($data['name']);
  738. $guildInfo = session('guild_info');
  739. $result = $this->validate($data, [
  740. ['level', 'require', '账号类型必须填写'],
  741. ['name', 'require','账号必须填写'],
  742. ['new_password', ['require','regex:/(^[a-zA-Z]{1})[0-9a-z_$]{5,19}$/i'], '密码必须填写|密码只能以字母、数字组成并且长度6-20个字符'],
  743. ['new_repassword', ['require','regex:/(^[a-zA-Z]{1})[0-9a-z_$]{5,19}$/i'], '密码必须填写|密码只能以字母、数字组成并且长度6-20个字符'],
  744. ]);
  745. if (true !== $result) {
  746. return json(['data'=>[],'code'=>10013,'msg'=>$result]);
  747. }
  748. if (($data['new_password'] != $data['new_repassword'])) {
  749. return json(['data'=>'','code'=>10015,'msg'=>'两次登录密码输入不一致!']);
  750. }
  751. $level = $data['level'];
  752. if ($level == 1) {//B
  753. if ($this->_level !== 0) {
  754. return json(['data'=>'','code'=>10015,'msg'=>'只有联盟才能创建会长渠道!']);
  755. }
  756. $id_path = ','.$this->_channelId.',';
  757. Db::startTrans();
  758. try {
  759. //1. 添加渠道信息
  760. $channelModel = model('channel');
  761. $channelInfo = $channelModel->where(['name' => $data['name']])->find();
  762. if ( $channelInfo ) {
  763. throw new Exception("该渠道信息已存在");
  764. // return json(['data'=>'','code'=>10015,'msg'=>"该渠道信息已存在"]);
  765. }
  766. $userInfo = Db::name('nw_channel_admin')->field('id')->where(['username' => $data['name']])->find();
  767. if ($userInfo) {
  768. throw new Exception("用户名已存在");
  769. // return json(['data'=>'','code'=>10015,'msg'=>"用户名已存在"]);
  770. }
  771. //添加渠道信息
  772. $channelModel->save([
  773. 'name' => $data['name'],
  774. // 'replacement_status' => $data['replacement_status'],//代充
  775. // 'share_show' => $data['share_show'],//分成比例
  776. 'parent_id' => $this->_channelId,
  777. 'id_path' => $id_path,
  778. 'create_time' => NOW_TIMESTAMP,
  779. 'level' => $level,
  780. 'flag' => 3,
  781. 'status' => 1
  782. ]);
  783. if ( !$channelModel->id ) {
  784. // return json(['data'=>'','code'=>10015,'msg'=>"添加渠道账号失败"]);
  785. throw new Exception("添加渠道账号失败");
  786. }
  787. $cont['username'] = $data['name'];
  788. $cont['password'] = mg_password($data['new_password']);
  789. $cont['status'] = 1;
  790. $cont['channel_id'] = $channelModel->id;
  791. $cont['create_time'] = NOW_TIMESTAMP;
  792. $cont['password_update_time'] = NOW_TIMESTAMP;
  793. $res = Db::name('nw_channel_admin')->insertGetId($cont);
  794. if ($res === false) {
  795. throw new Exception("添加渠道账号失败");
  796. }
  797. $cModel = model('channel');
  798. $c_name = $data['name'].'-c1';
  799. $cInfo = $channelModel->where(['name' => $c_name])->find();
  800. $cUserInfo = Db::name('nw_channel_admin')->field('id')->where(['username' => $c_name])->find();
  801. if(!empty($cInfo) || !empty($cUserInfo)){
  802. // 同步增加一个默认推广员账号 规则 原账号账号+ C + 两位随机数mt_rand(10,100)
  803. $c_name = $data['name'].'-c'.mt_rand(10,100);
  804. $cInfo = $channelModel->where(['name' => $c_name])->find();
  805. if ( $cInfo ) {
  806. // return json(['data'=>'','code'=>10015,'msg'=>"该默认推广员信息已存在,请尝试重新创建"]);
  807. throw new Exception("该默认推广员信息已存在,请尝试重新创建");
  808. }
  809. $cUserInfo = Db::name('nw_channel_admin')->field('id')->where(['username' => $c_name])->find();
  810. if ($cUserInfo) {
  811. //return json(['data'=>'','code'=>10015,'msg'=>"该默认推广员名已存在,请尝试重新创建"]);
  812. throw new Exception("该默认推广员名已存在,请尝试重新创建");
  813. }
  814. }
  815. //添加渠道信息
  816. $cid = $cModel->insertGetId([
  817. 'name' => $c_name,
  818. 'parent_id' => $channelModel->id,
  819. 'id_path' => $id_path.$channelModel->id.',',
  820. 'create_time' => NOW_TIMESTAMP,
  821. 'level' => 3,
  822. 'flag' => 3,
  823. 'status' => 1
  824. ]);
  825. if ( !$cid) {
  826. // return json(['data'=>'','code'=>10015,'msg'=>"添加默认推广员渠道账号失败"]);
  827. throw new Exception("添加默认推广员渠道账号失败");
  828. }
  829. $c_cont['username'] = $c_name;
  830. $c_cont['password'] = mg_password('b123456');
  831. $c_cont['status'] = 1;
  832. $c_cont['channel_id'] = $cid;
  833. $c_cont['create_time'] = NOW_TIMESTAMP;
  834. $c_cont['password_update_time'] = NOW_TIMESTAMP;
  835. $cres = Db::name('nw_channel_admin')->insertGetId($c_cont);
  836. if ($cres === false) {
  837. throw new Exception("添加渠道账号失败");
  838. }
  839. Db::commit();
  840. } catch (\Exception $e) {
  841. Db::rollback();
  842. return json(['data'=>'','code'=>10015,'msg'=>"添加失败: " . $e->getMessage()]);
  843. }
  844. }elseif ($level == 2) {//B-
  845. if ($this->_level !== 1) {
  846. return json(['data'=>'','code'=>10015,'msg'=>'只有会长才能创建子会长渠道!']);
  847. }
  848. $parent_id = Db::name('nw_channel')->where(['id'=>$this->_channelId])->value('parent_id');
  849. $id_path = ','.$parent_id.','.$this->_channelId.',';
  850. Db::startTrans();
  851. try {
  852. //1. 添加渠道信息
  853. $channelModel = model('channel');
  854. $channelInfo = $channelModel->where(['name' => $data['name']])->find();
  855. if ( $channelInfo ) {
  856. throw new Exception("该渠道信息已存在");
  857. // return json(['data'=>'','code'=>10015,'msg'=>"该渠道信息已存在"]);
  858. }
  859. $userInfo = Db::name('nw_channel_admin')->field('id')->where(['username' => $data['name']])->find();
  860. if ($userInfo) {
  861. throw new Exception("用户名已存在");
  862. // return json(['data'=>'','code'=>10015,'msg'=>"用户名已存在"]);
  863. }
  864. //添加渠道信息
  865. $channelModel->save([
  866. 'name' => $data['name'],
  867. // 'assets_show' => $data['assets_show'],//资产显示
  868. // 'share_show' => $data['share_show'],//分成比例
  869. 'parent_id' => $guildInfo['channel_id'],
  870. 'id_path' => $id_path,
  871. 'create_time' => NOW_TIMESTAMP,
  872. 'level' => $level,
  873. 'flag' => 3,
  874. 'status' => 1
  875. ]);
  876. if ( !$channelModel->id ) {
  877. throw new Exception("添加渠道账号失败");
  878. // return json(['data'=>'','code'=>10015,'msg'=>"添加渠道账号失败"]);
  879. }
  880. $cont['username'] = $data['name'];
  881. $cont['password'] = mg_password($data['new_password']);
  882. $cont['status'] = 1;
  883. $cont['channel_id'] = $channelModel->id;
  884. $cont['create_time'] = NOW_TIMESTAMP;
  885. $cont['password_update_time'] = NOW_TIMESTAMP;
  886. $res = Db::name('nw_channel_admin')->insertGetId($cont);
  887. if ($result === false) {
  888. throw new Exception("添加渠道账号失败");
  889. }
  890. Db::commit();
  891. } catch (\Exception $e) {
  892. Db::rollback();
  893. return json(['data'=>'','code'=>10015,'msg'=>"添加失败: " . $e->getMessage()]);
  894. }
  895. }elseif ($level == 3) {//C
  896. if ($this->_level == 1 || $this->_level == 2) {
  897. $id_path = Db::name('nw_channel')->where(['id'=>$this->_channelId])->value('id_path').$this->_channelId.',';
  898. Db::startTrans();
  899. try {
  900. //1. 添加渠道信息
  901. $channelModel = model('channel');
  902. $channelInfo = $channelModel->where(['name' => $data['name']])->find();
  903. if ( $channelInfo ) {
  904. // return json(['data'=>'','code'=>10015,'msg'=>"该渠道信息已存在"]);
  905. throw new Exception("该渠道信息已存在");
  906. }
  907. $userInfo = Db::name('nw_channel_admin')->field('id')->where(['username' => $data['name']])->find();
  908. if ($userInfo) {
  909. throw new Exception("用户名已存在");
  910. // return json(['data'=>'','code'=>10015,'msg'=>"用户名已存在"]);
  911. }
  912. //添加渠道信息
  913. $channelModel->save([
  914. 'name' => $data['name'],
  915. 'parent_id' => $guildInfo['channel_id'],
  916. 'id_path' => $id_path,
  917. 'create_time' => NOW_TIMESTAMP,
  918. 'level' => $level,
  919. 'flag' => 3,
  920. 'status' => 1
  921. ]);
  922. if ( !$channelModel->id ) {
  923. throw new Exception("添加渠道账号失败");
  924. // return json(['data'=>'','code'=>10015,'msg'=>"添加渠道账号失败"]);
  925. }
  926. ;
  927. $cont['username'] = $data['name'];
  928. $cont['password'] = mg_password($data['new_password']);
  929. $cont['status'] = 1;
  930. $cont['channel_id'] = $channelModel->id;
  931. $cont['create_time'] = NOW_TIMESTAMP;
  932. $cont['password_update_time'] = NOW_TIMESTAMP;
  933. $res = Db::name('nw_channel_admin')->insertGetId($cont);
  934. if ($result === false) {
  935. throw new Exception("添加渠道账号失败");
  936. }
  937. Db::commit();
  938. } catch (\Exception $e) {
  939. Db::rollback();
  940. return json(['data'=>'','code'=>10015,'msg'=>"添加失败: " . $e->getMessage()]);
  941. }
  942. }else{
  943. return json(['data'=>'','code'=>10015,'msg'=>'目前该渠道无法创建推广员']);
  944. }
  945. }
  946. return json(['data'=>'','code'=>20000,'msg'=>'增加账号成功']);
  947. }
  948. /**
  949. * 搜索条件集合
  950. * @param string $self [description]
  951. * @return [type] [description]
  952. */
  953. protected function _getCondition()
  954. {
  955. $name = input('name');
  956. $status = input('status');
  957. $level = input('level');
  958. $condition = [];
  959. if (! empty($name)) {
  960. $condition['channel.name'] = ['LIKE', '%' . $name . '%'];
  961. }
  962. if (is_numeric($status)) {
  963. $condition['channel.status'] = (int)$status;
  964. }
  965. if (is_numeric($level)) {
  966. $condition['channel.level'] = (int)$level;
  967. }
  968. return $condition;
  969. }
  970. }