Huoma.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328
  1. <?php
  2. namespace app\sys\controller;
  3. use think\facade\View;
  4. use think\facade\Request;
  5. use app\model\Huoma as HuomaModel;
  6. use app\model\HuomaUser;
  7. use app\model\HuomaZima;
  8. use think\facade\Db;
  9. use app\model\ShortUrl;
  10. use toolkits\QrCodeGen;
  11. use app\model\Miniprogram;
  12. use app\model\Employee;
  13. class Huoma extends Base
  14. {
  15. //添加活码
  16. public function add_code()
  17. {
  18. //return View::fetch();
  19. if (!request()->isAjax()){
  20. return View::fetch();
  21. }else{
  22. $request = request();
  23. $data=$request->only(['name','switch_type','is_poster','poster_img','sign_type','zima_list']);
  24. if(empty($data['poster_img'])) return json(['code' => 1, 'msg' => '请上传活动海报']);
  25. $zima=json_decode(strip_tags($data['zima_list']),true);
  26. $add['root_id']=$request->employee->root_id;
  27. $add['name'] = $data['name'];
  28. $add['addtime'] = date('Y-m-d',time());
  29. $add['switch_type'] = $data['switch_type'];
  30. $add['is_poster'] = !empty($data['is_poster'])?$data['is_poster']:2;
  31. $add['poster_img'] = !empty($data['poster_img'])?$data['poster_img']:null;
  32. $add['employee_id'] = request()->employee->id;
  33. //$add['sign_type'] = $data['sign_type'];
  34. Db::startTrans();
  35. try {
  36. $ms=HuomaModel::insertGetId($add);
  37. $xin=null;
  38. $allpr=0;
  39. foreach($zima as $key=>$val){
  40. $parr[]=$val['validity_date'];
  41. $gd=array(
  42. 'stort'=>$val['priority'],
  43. 'qrcode_img' =>$val['qrcode_img'],
  44. 'max_visit'=>$val['limit'],
  45. 'file_name'=>$val['file_name'],
  46. 'code_invalid_time'=>$val['validity_date'],
  47. 'mid'=>$ms
  48. );
  49. $xin[]=$gd;
  50. $code_invalid_time=$val['validity_date'];
  51. }
  52. array_multisort($parr, SORT_DESC, $zima);
  53. $tm=HuomaZima::insertAll($xin);
  54. if($tm){
  55. $url=$this->produce_url($ms);
  56. HuomaModel::where('id',$ms)->update(array('code_url'=>$url,'invalid_time'=>$zima[0]['validity_date']));
  57. }
  58. Db::commit();
  59. }catch (\Exception $e) {
  60. Db::rollback();
  61. //var_dump($e->getMessage());
  62. return json(['code' => 1, 'msg' => '提交数据失败.']);
  63. }
  64. return json(['code' => 0, 'msg' => '添加成功']);
  65. }
  66. }
  67. public function add_qrcode()
  68. {
  69. return View::fetch();
  70. }
  71. //生成分享链接
  72. public function produce_url($id)
  73. {
  74. $request = request();
  75. $notify=Miniprogram::where('root_id',$request->employee->root_id)->value('notify');
  76. $param=array(
  77. 'query'=>'id='.$id.'&ctp='.$notify,
  78. 'path'=>'/share/pages/channelsignup/channelsignup',
  79. 'env_version'=>'',
  80. 'id'=>$id,
  81. 'type'=>'huoma',
  82. 'user_id'=>'',
  83. 'client_type'=>$notify
  84. );
  85. // 存储参数
  86. $data = [
  87. 'content' => json_encode($param),
  88. 'type' => 'share'
  89. ];
  90. $shortUrl = ShortUrl::create($data);
  91. // 将ID进行
  92. $uri = dec52($shortUrl->id);
  93. $shortUrl->uri = $uri;
  94. $shortUrl->save();
  95. $domain = $request->domain();
  96. return $domain . '/' . $uri;
  97. }
  98. //添加图片
  99. public function add_img()
  100. {
  101. $request = request();
  102. $data=$request->only(['qrcode_img']);
  103. $ali_oss_bindurl='http://'.config('app.ali_oss_bindurl').'/';
  104. $data['link_qrcode_img']=$ali_oss_bindurl.$data['qrcode_img'];
  105. $data['name_qrcode_img']=str_replace('Huoma/','',$data['qrcode_img']);
  106. return json(['code' => 0, 'data' => $data, 'msg' => '获取成功']);
  107. }
  108. //修改活码
  109. public function edit_code()
  110. {
  111. $request = request();
  112. $data=$request->only(['name','switch_type','is_poster','poster_img','sign_type','zima_list','id']);
  113. if (!request()->isAjax()){
  114. $data=$request->only(['id']);
  115. $code_data=HuomaModel::with(['zima'])
  116. ->where([['id','=',$data['id']],['root_id','=',$request->employee->root_id]])
  117. ->find();
  118. foreach($code_data['zima'] as $key=>$val){
  119. $code_data['zima'][$key]['qrcode_name']=str_replace('http://'.config('app.ali_oss_bindurl').'/Huoma/','',$val['qrcode_img']);
  120. }
  121. View::assign('data',$code_data);
  122. return View::fetch();
  123. }else{
  124. $ali_oss_bindurl='http://' .config('app.ali_oss_bindurl').'/';
  125. $add['name'] = $data['name'];
  126. $add['switch_type'] = $data['switch_type'];
  127. $add['is_poster'] = !empty($data['is_poster'])?$data['is_poster']:2;
  128. if(!empty($data['poster_img'])){
  129. $add['poster_img'] = str_replace($ali_oss_bindurl,'',$data['poster_img']);
  130. }
  131. $zima=json_decode(strip_tags($data['zima_list']),true);
  132. $gen=$in=null;
  133. foreach($zima as $key=>$val){
  134. $parr[]=$val['validity_date'];
  135. if($val['id']){
  136. $gd=array(
  137. 'id'=>$val['id'],
  138. 'stort'=>$val['priority'],
  139. 'qrcode_img' =>str_replace($ali_oss_bindurl,'',$val['qrcode_img']),
  140. 'max_visit'=>$val['limit'],
  141. 'file_name'=>$val['file_name'],
  142. 'code_invalid_time'=>$val['validity_date']
  143. );
  144. $gen[]=$gd;
  145. }else{
  146. $pd=array(
  147. 'stort'=>$val['priority'],
  148. 'qrcode_img' =>$val['qrcode_img'],
  149. 'max_visit'=>$val['limit'],
  150. 'code_invalid_time'=>$val['validity_date'],
  151. 'file_name'=>$val['file_name'],
  152. 'mid'=>$data['id']
  153. );
  154. $in[]=$pd;
  155. }
  156. }
  157. array_multisort($parr, SORT_DESC, $zima);
  158. $add['invalid_time']=$zima[0]['validity_date'];
  159. $ms=HuomaModel::where([['id','=',$data['id']],['root_id','=',$request->employee->root_id]])->update($add);
  160. $ltg = new HuomaZima();
  161. if(!empty($gen)){
  162. $ltg->saveAll($gen);
  163. }
  164. if(!empty($in)){
  165. $ltg->insertAll($in);
  166. }
  167. return json(['code' => 0, 'msg' => '修改成功']);
  168. }
  169. }
  170. //编辑活
  171. public function edit_qrcode()
  172. {
  173. return View::fetch();
  174. $request = request();
  175. $data=$request->only(['id','max_visit','stort','code_invalid_time','qrcode_img']);
  176. if (!request()->isAjax()){
  177. $code_data=HuomaZima::where('id',$data['id'])->find();
  178. View::assign('code_data',$code_data);
  179. return View::fetch();
  180. }else{
  181. $ali_oss_bindurl='http://' .config('app.ali_oss_bindurl').'/';
  182. $save=array(
  183. 'max_visit'=>$data['max_visit'],
  184. 'stort'=>$data['stort'],
  185. 'qrcode_img'=>str_replace($ali_oss_bindurl,'',$data['qrcode_img']),
  186. );
  187. $ms=HuomaZima::where('id',$data['id'])->update($save);
  188. if($ms){
  189. return json(['code' => 0, 'msg' => '修改成功']);
  190. }else{
  191. return json(['code' => 0, 'msg' => '修改失败']);
  192. }
  193. }
  194. }
  195. //删除二维码
  196. public function del_qrcode()
  197. {
  198. $request = request();
  199. $data=$request->only(['id']);
  200. HuomaUser::where('bind_code',$data['id'])->delete();
  201. $ms=HuomaZima::where('id',$data['id'])->delete();
  202. if($ms){
  203. return json(['code' => 0, 'msg' => '修改成功']);
  204. }else{
  205. return json(['code' => 0, 'msg' => '修改失败']);
  206. }
  207. }
  208. //删除活码
  209. public function del_code()
  210. {
  211. $request = request();
  212. $data=$request->only(['id']);
  213. $ms=HuomaModel::where('id',$data['id'])->delete();
  214. if($ms){
  215. return json(['code' => 0, 'msg' => '删除成功']);
  216. }else{
  217. return json(['code' => 0, 'msg' => '删除失败']);
  218. }
  219. }
  220. //活码列表
  221. public function code_list()
  222. {
  223. if (!request()->isAjax()){
  224. $eid = HuomaModel::where([['root_id','=',request()->employee->root_id],['employee_id','>',0]])->group('employee_id')->column('employee_id');
  225. $where = [
  226. ['id','in',$eid],
  227. ['grant_id', '>', 0],
  228. ['root_id', '=', request()->employee->root_id]
  229. ];
  230. // 运营人员列表
  231. $employee = Employee::where($where)->field(['id', 'opt_name as name'])->select()->toArray();
  232. View::assign('employee', $employee);
  233. return View::fetch();
  234. }else{
  235. $request = request();
  236. $data=$request->only(['page','limit','keyword','employee_id','date']);
  237. //条件
  238. $condition = [
  239. ['root_id','=',$request->employee->root_id]
  240. ];
  241. if(!empty($data['keyword'])){
  242. $condition[] = ['name', 'like', '%' . $data['keyword'] . '%'];
  243. }
  244. if (!empty($data['employee_id'])) {
  245. $condition[] = ['employee_id', '=', $data['employee_id']];
  246. }
  247. if (!empty($data['date'])) {
  248. $arr = explode(' - ',$data['date']);
  249. $condition[] = ['addtime','<=', "$arr[0]"];
  250. $condition[] = ['invalid_time','>=',"$arr[1]"];
  251. }
  252. $list=HuomaModel::with(['employee'])
  253. ->where($condition)
  254. ->page($data['page'], $data['limit'])
  255. ->order(['addtime' => 'desc','id' => 'desc'])
  256. ->select()
  257. ->toArray();
  258. $time=date('Y-m-d',time());
  259. foreach($list as $key=>$val){
  260. $num=HuomaUser::where([['addtime','>=',$time.' 00:00:00'],['addtime','<=',$time.' 23:59:59'],['mid','=',$val['id']]])->count();
  261. $list[$key]['num']=$num;
  262. }
  263. $count=HuomaModel::where($condition)->count();
  264. return json(['code' => 0, 'count'=>$count,'data' => $list, 'msg' => '获取成功']);
  265. }
  266. }
  267. //扫码统计
  268. public function visit_list()
  269. {
  270. $request = request();
  271. $data=$request->only(['page','limit','id']);
  272. if (!request()->isAjax()){
  273. View::assign('id',$data['id']);
  274. return View::fetch();
  275. }else{
  276. $list=HuomaZima::where('mid','=',$data['id'])
  277. ->page($data['page'], $data['limit'])
  278. //->order(['stort'=>'desc'])
  279. ->select()
  280. ->toArray();
  281. foreach($list as $key=>$val){
  282. $list[$key]['qrcode_img']=str_replace('http://'.config('app.ali_oss_bindurl').'/Huoma/','',$val['qrcode_img']);
  283. }
  284. $count=HuomaZima::where('mid','=',$data['id'])->count();
  285. return json(['code' => 0, 'count'=>$count,'data' => $list, 'msg' => '获取成功']);
  286. }
  287. }
  288. //修改活码状态
  289. public function up_status()
  290. {
  291. $request = request();
  292. $data=$request->only(['id']);
  293. $ms=HuomaModel::find($data['id']);
  294. $ms->status = $ms->status == 1 ? 2 : 1;
  295. $ms->save();
  296. if($ms){
  297. return json(['code' => 0, 'msg' => '修改成功']);
  298. }else{
  299. return json(['code' => 0, 'msg' => '修改失败']);
  300. }
  301. }
  302. //扫码详情
  303. public function user_list()
  304. {
  305. $request = request();
  306. $data=$request->only(['page','limit','id']);
  307. $list=HuomaUser::with(['user'=>function($query){
  308. $query->field('id,nickname,headimgurl,phone');
  309. }])->where('bind_code','=',$data['id'])
  310. //->page($data['page'], $data['limit'])
  311. ->order(['addtime'=>'desc'])
  312. ->select()
  313. ->toArray();
  314. $count=HuomaUser::where('bind_code','=',$data['id'])->count();
  315. return json(['code' => 0, 'count'=>$count,'data' => $list, 'msg' => '获取成功']);
  316. }
  317. }
  318. ?>