Account.php 49 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017
  1. <?php
  2. /**
  3. * 登录控制器
  4. */
  5. namespace app\guildapi\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.cps_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-Z0-9]{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. $channelId = $channelModel->id;
  826. if ( !$cid) {
  827. // return json(['data'=>'','code'=>10015,'msg'=>"添加默认推广员渠道账号失败"]);
  828. throw new Exception("添加默认推广员渠道账号失败");
  829. }
  830. $c_cont['username'] = $c_name;
  831. $c_cont['password'] = mg_password('b123456');
  832. $c_cont['status'] = 1;
  833. $c_cont['channel_id'] = $cid;
  834. $c_cont['create_time'] = NOW_TIMESTAMP;
  835. $c_cont['password_update_time'] = NOW_TIMESTAMP;
  836. $saveResult = Db::name('nw_channel_admin')->insertGetId($c_cont);
  837. if ($saveResult === false) {
  838. throw new Exception("添加渠道账号失败");
  839. }
  840. Db::commit();
  841. } catch (\Exception $e) {
  842. Db::rollback();
  843. return json(['data'=>'','code'=>10015,'msg'=>"添加失败: " . $e->getMessage()]);
  844. }
  845. }elseif ($level == 2) {//B-
  846. if ($this->_level !== 1) {
  847. return json(['data'=>'','code'=>10015,'msg'=>'只有会长才能创建子会长渠道!']);
  848. }
  849. $parent_id = Db::name('nw_channel')->where(['id'=>$this->_channelId])->value('parent_id');
  850. $id_path = ','.$parent_id.','.$this->_channelId.',';
  851. Db::startTrans();
  852. try {
  853. //1. 添加渠道信息
  854. $channelModel = model('channel');
  855. $channelInfo = $channelModel->where(['name' => $data['name']])->find();
  856. if ( $channelInfo ) {
  857. throw new Exception("该渠道信息已存在");
  858. // return json(['data'=>'','code'=>10015,'msg'=>"该渠道信息已存在"]);
  859. }
  860. $userInfo = Db::name('nw_channel_admin')->field('id')->where(['username' => $data['name']])->find();
  861. if ($userInfo) {
  862. throw new Exception("用户名已存在");
  863. // return json(['data'=>'','code'=>10015,'msg'=>"用户名已存在"]);
  864. }
  865. //添加渠道信息
  866. $channelModel->save([
  867. 'name' => $data['name'],
  868. // 'assets_show' => $data['assets_show'],//资产显示
  869. // 'share_show' => $data['share_show'],//分成比例
  870. 'parent_id' => $guildInfo['channel_id'],
  871. 'id_path' => $id_path,
  872. 'create_time' => NOW_TIMESTAMP,
  873. 'level' => $level,
  874. 'flag' => 3,
  875. 'status' => 1
  876. ]);
  877. if ( !$channelModel->id ) {
  878. throw new Exception("添加渠道账号失败");
  879. // return json(['data'=>'','code'=>10015,'msg'=>"添加渠道账号失败"]);
  880. }
  881. $channelId = $channelModel->id;
  882. $cont['username'] = $data['name'];
  883. $cont['password'] = mg_password($data['new_password']);
  884. $cont['status'] = 1;
  885. $cont['channel_id'] = $channelModel->id;
  886. $cont['create_time'] = NOW_TIMESTAMP;
  887. $cont['password_update_time'] = NOW_TIMESTAMP;
  888. $saveResult = Db::name('nw_channel_admin')->insertGetId($cont);
  889. if ($saveResult === false) {
  890. throw new Exception("添加渠道账号失败");
  891. }
  892. Db::commit();
  893. } catch (\Exception $e) {
  894. Db::rollback();
  895. return json(['data'=>'','code'=>10015,'msg'=>"添加失败: " . $e->getMessage()]);
  896. }
  897. }elseif ($level == 3) {//C
  898. if ($this->_level == 1 || $this->_level == 2) {
  899. $id_path = Db::name('nw_channel')->where(['id'=>$this->_channelId])->value('id_path').$this->_channelId.',';
  900. Db::startTrans();
  901. try {
  902. //1. 添加渠道信息
  903. $channelModel = model('channel');
  904. $channelInfo = $channelModel->where(['name' => $data['name']])->find();
  905. if ( $channelInfo ) {
  906. // return json(['data'=>'','code'=>10015,'msg'=>"该渠道信息已存在"]);
  907. throw new Exception("该渠道信息已存在");
  908. }
  909. $userInfo = Db::name('nw_channel_admin')->field('id')->where(['username' => $data['name']])->find();
  910. if ($userInfo) {
  911. throw new Exception("用户名已存在");
  912. // return json(['data'=>'','code'=>10015,'msg'=>"用户名已存在"]);
  913. }
  914. //添加渠道信息
  915. $channelModel->save([
  916. 'name' => $data['name'],
  917. 'parent_id' => $guildInfo['channel_id'],
  918. 'id_path' => $id_path,
  919. 'create_time' => NOW_TIMESTAMP,
  920. 'level' => $level,
  921. 'flag' => 3,
  922. 'status' => 1
  923. ]);
  924. if ( !$channelModel->id ) {
  925. throw new Exception("添加渠道账号失败");
  926. // return json(['data'=>'','code'=>10015,'msg'=>"添加渠道账号失败"]);
  927. }
  928. $channelId = $channelModel->id;
  929. $cont['username'] = $data['name'];
  930. $cont['password'] = mg_password($data['new_password']);
  931. $cont['status'] = 1;
  932. $cont['channel_id'] = $channelModel->id;
  933. $cont['create_time'] = NOW_TIMESTAMP;
  934. $cont['password_update_time'] = NOW_TIMESTAMP;
  935. $saveResult = Db::name('nw_channel_admin')->insertGetId($cont);
  936. if ($saveResult === false) {
  937. throw new Exception("添加渠道账号失败");
  938. }
  939. Db::commit();
  940. } catch (\Exception $e) {
  941. Db::rollback();
  942. return json(['data'=>'','code'=>10015,'msg'=>"添加失败: " . $e->getMessage()]);
  943. }
  944. }else{
  945. return json(['data'=>'','code'=>10015,'msg'=>'目前该渠道无法创建推广员']);
  946. }
  947. }
  948. return json(['data'=>['channel_id' => $channelId],'code'=>20000,'msg'=>'增加账号成功']);
  949. }
  950. /**
  951. * 搜索条件集合
  952. * @param string $self [description]
  953. * @return [type] [description]
  954. */
  955. protected function _getCondition()
  956. {
  957. $name = input('name');
  958. $status = input('status');
  959. $level = input('level');
  960. $condition = [];
  961. if (! empty($name)) {
  962. $condition['channel.name'] = ['LIKE', '%' . $name . '%'];
  963. }
  964. if (is_numeric($status)) {
  965. $condition['channel.status'] = (int)$status;
  966. }
  967. if (is_numeric($level)) {
  968. $condition['channel.level'] = (int)$level;
  969. }
  970. return $condition;
  971. }
  972. }