Expedite.php 91 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654
  1. <?php
  2. namespace app\api\controller;
  3. use AlibabaCloud\Client\AlibabaCloud;
  4. use AlibabaCloud\Client\Exception\ClientException;
  5. use AlibabaCloud\Client\Exception\ServerException;
  6. use app\common\model\ArticleComment;
  7. use app\common\model\ArticleCommentLike;
  8. use app\common\model\ArticleIntro;
  9. use app\common\model\ArticleItem;
  10. use app\common\model\ArticleLike;
  11. use app\common\model\DatumComment;
  12. use app\common\model\DatumCommentLike;
  13. use app\common\model\DatumLike;
  14. use app\common\model\DatumUrl;
  15. use app\common\model\DemandComment;
  16. use app\common\model\ForumReply;
  17. use app\common\model\ForumReplyComment;
  18. use app\common\model\GoodsOrder;
  19. use app\common\model\PlatformDemand;
  20. use app\common\model\PlatformLike;
  21. use app\common\model\PressComment;
  22. use app\common\model\ShoppingTrolley;
  23. use app\common\model\StoreBanner;
  24. use app\common\model\StoreGoods;
  25. use app\common\model\StoreGoodsItem;
  26. use app\common\model\SupplierComment;
  27. use app\common\model\SupplierGoods;
  28. use app\common\model\TopSearch;
  29. use app\common\model\User;
  30. use app\common\model\UserCollect;
  31. use app\common\model\UserForum;
  32. use app\common\model\UserLevel;
  33. use app\common\model\UserLevelRank;
  34. use app\common\model\UserMessage;
  35. use app\common\model\UserSearch;
  36. use app\common\model\VideoCommentLike;
  37. use app\common\model\VideoUrl;
  38. use app\common\service\CheckPower;
  39. use app\common\service\Elastic;
  40. use app\common\service\UserSynth;
  41. use Dm\Request\V20151123 as Dm;
  42. use library\tools\Data;
  43. use think\cache\driver\Redis;
  44. use think\Db;
  45. use app\common\model\VideoComment;
  46. /**
  47. * @title 其他接口(不需要登录状态)【多模块共用】
  48. * @controller Expedite
  49. * @package app\api\controller
  50. */
  51. class Expedite extends Base
  52. {
  53. public function initialize(){
  54. parent::initialize();
  55. parent::setUid();
  56. }
  57. /**
  58. * @title 获取首页轮播图
  59. * @desc 获取首页轮播图
  60. * @author qc
  61. * @url /api/Expedite/getBanner
  62. * @method GET
  63. * @header name:Authorization require:1 desc:Token
  64. * @param name:num type:int default:5 desc:查询数量
  65. * @param name:is_pc type:int default:0 desc:是否是pc端用(0否1是)
  66. * @return name:cover type:string default:-- desc:图片路径
  67. * @return name:place type:string default:-- desc:跳转模块【video=>视频,article=>图文,datum=>资料,activity=>活动,demand=>需求,forum=>问答,press=>新闻,supplier=>供应商商品,recruit=>招聘,mall=>商城,service=>客服】
  68. * @return name:first_id type:int default:-- desc:详情id(视频、图文、资料为系列id)
  69. * @return name:second_id type:second_id default:-- desc:系列某详情id(视频、图文、资料)
  70. * @return name:is_normal type:int default:-- desc:是否是正常记录(0已删除或是已禁用1可以正常跳转详情)
  71. */
  72. public function getBanner()
  73. {
  74. $num = input('get.num',100);
  75. $is_pc = input('get.is_pc',0);
  76. $list = StoreBanner::field('id,cover,place,first_id,second_id')
  77. ->where(['is_deleted'=>0,'is_pc'=>$is_pc])
  78. ->limit(0,$num)
  79. ->order('sort desc ,id desc')->select()->toArray();
  80. foreach ($list as &$v){
  81. $v['is_normal'] = CheckPower::checkModulesPower($v['first_id'],$v['second_id'],$v['place']);
  82. }
  83. $this->success('ok',['list'=>$list]);
  84. }
  85. /**
  86. * @title 获取会员等级设置
  87. * @desc 获取会员等级设置
  88. * @author qc
  89. * @url /api/Expedite/getUserLevelSet
  90. * @method GET
  91. * @header name:Authorization require:1 desc:Token
  92. * @return name:id type:int default:-- desc:等级id
  93. * @return name:name type:string default:-- desc:等级名称
  94. * @return name:logo type:string default:-- desc:图片
  95. * @return name:price type:array default:-- desc:价格设置【为空,,不能购买】
  96. * @return name:price.title type:string default:-- desc:标题
  97. * @return name:price.time type:string default:-- desc:时间(单位月)
  98. * @return name:price.price type:float default:-- desc:价格
  99. * @return name:price.renew type:int default:-- desc:续费价格
  100. * @return name:is_renew type:int default:-- desc:是否是续费会员【1是0否】
  101. */
  102. public function getUserLevelSet()
  103. {
  104. $list = UserLevel::field('id,logo,name,price')->where("price is not null and price != ''")->where('id',1)->select()->toArray();
  105. foreach ($list as &$v) {
  106. $v['price_arr'] = json_decode($v['price'],true);
  107. }
  108. $is_renew = \app\common\model\LevelOrder::where('user_id',$this->user_id)->where('status',1)->where('pay_state',1)->count();
  109. $this->success('ok',['list'=>$list,'is_renew'=>$is_renew ? 1:0]);
  110. }
  111. /**
  112. * @title 会员等级开关【IOS用】
  113. * @desc 会员等级开关
  114. * @author qc
  115. * @url /api/Expedite/levelSwitch
  116. * @method GET
  117. * @header name:Authorization require:1 desc:Token
  118. * @return name:value type:int default:-- desc:0关闭1开启
  119. */
  120. public function levelSwitch(){
  121. $this->success('ok',['value'=>sysconf('level_switch')]);
  122. }
  123. /**
  124. * @title 注销开关
  125. * @desc 注销开关
  126. * @author qc
  127. * @url /api/Expedite/logoutSwitch
  128. * @method GET
  129. * @header name:Authorization require:1 desc:Token
  130. * @return name:value type:int default:-- desc:0关闭1开启
  131. */
  132. public function logoutSwitch(){
  133. $this->success('ok',['value'=>sysconf('logout_switch')]);
  134. }
  135. /**
  136. * @title 获取热搜列表
  137. * @desc 获取热搜列表
  138. * @author qc
  139. * @url /api/Expedite/getTopSearch
  140. * @method GET
  141. * @param name:page type:int default:-- desc:页数
  142. * @param name:page_num type:int default:-- desc:每页数量
  143. * @param name:module type:string default:-- desc:模块,不传查全部的[video=>视频,article=>图文,datum=>资料,goods=>商城商品,press=>新闻,supplier_goods=>供应商商品,demand=>需求,recruit=>招聘,forum=>问答,activity=>活动]
  144. * @return name:title type:string default:-- desc:标题
  145. * @return name:hot_num type:int default:-- desc:热搜量
  146. * @return name:rel_id type:int default:-- desc:相关详情id【不是系列id】
  147. * @return name:series_id type:int default:-- desc:系列id【图文、视频、资料用】
  148. * @return name:module type:string default:-- desc:[video=>视频,article=>图文,datum=>资料,goods=>商城商品,press=>新闻,supplier_goods=>供应商商品,demand=>需求,recruit=>招聘,forum=>问答,activity=>活动]
  149. */
  150. public function getTopSearch()
  151. {
  152. $module = input('module');
  153. $data = input();
  154. if(isset($data['module'])){
  155. $most_num = 30;
  156. }else{
  157. $most_num = 60;
  158. }
  159. if(!isset($data['page_num'])){
  160. $data['page_num'] = 20;
  161. }
  162. $total_num = (int)$data['page_num'] * (int)$data['page'];
  163. // return $total_num.'-'.$most_num;
  164. $page_num = $this->page_num;
  165. if($total_num > $most_num){
  166. $t_num = $total_num - $most_num;
  167. $l_num = $data['page_num'] - $t_num;
  168. //$this->page_num = $l_num;
  169. $page_num = $l_num;
  170. //$this->off_set = $l_num;
  171. // return $l_num;
  172. }
  173. $sel = [];
  174. $sel['is_deleted'] = 0;
  175. $sel['status'] = 1;
  176. if($module) $sel['module'] =$module;
  177. if($page_num <= 0){
  178. $list = [];
  179. }else{
  180. $list = TopSearch::field('id,title,rel_id,module,hot_num,series_id')
  181. ->where($sel)
  182. ->order('hot_num desc')
  183. ->limit($this->off_set,$page_num)
  184. ->select()->toArray();
  185. }
  186. $total_num =TopSearch::where($sel)->count();
  187. if($total_num > $most_num){
  188. $total_num = $most_num;
  189. }
  190. $this->success('ok',['list'=>$list,'total_count'=>$total_num,'page_num'=>$this->page_num]);
  191. }
  192. /**
  193. * @title 全局搜索【登录状态需要header需要传Authorization】
  194. * @desc 全局搜索
  195. * @author qc
  196. * @url /api/Expedite/globalSearch
  197. * @method GET
  198. * @param name:page type:int default:-- desc:页数
  199. * @param name:page_num type:int default:-- desc:每页数量
  200. * @param name:type type:string default:-- desc:搜索类型(不传查全部)[video=>视频,article=>图文,datum=>资料,goods=>商城商品,press=>新闻,supplier_goods=>供应商商品,demand=>需求,recruit=>招聘,forum=>问答,activity=>活动]
  201. * @param name:search_name type:string default:-- desc:搜索名称
  202. * @param name:search_time type:int default:-- desc:0不限,182半年,365一年
  203. * @param name:sort_type type:int default:1 desc:1默认2时间升序3时间降序 *
  204. * @return name:video_list type:array default:-- desc:视频列表【单个】
  205. * @return name:video_list.url_id type:int default:-- desc:url_id
  206. * @return name:video_list.video_id type:int default:-- desc:video_id
  207. * @return name:video_list.cover type:string default:-- desc:封面
  208. * @return name:video_list.title type:string default:-- desc:标题
  209. * @return name:video_list.is_vip type:int default:-- desc:是否是vip【0否1是】
  210. * @return name:video_list.ali_vid type:string default:-- desc:云点播视频id
  211. * @return name:video_list.read_num type:int default:-- desc:播放量
  212. * @return name:video_list.duration type:int default:-- desc:时长(单位:秒)
  213. * @return name:video_list.app_name type:string default:-- desc:平台名称
  214. * @return name:video_list.app_logo type:string default:-- desc:平台头像
  215. * @return name:video_list.create_at type:string default:-- desc:时间
  216. * @return name:article_list type:array default:-- desc:图文列表【单个】
  217. * @return name:article_list.title type:string default:-- desc:图文标题
  218. * @return name:article_list.is_vip type:int default:-- desc:是否是vip
  219. * @return name:article_list.desc type:int default:-- desc:简介【文本】
  220. * @return name:article_list.cover type:string default:-- desc:封面
  221. * @return name:article_list.images type:int default:-- desc:图片【多张|隔开】
  222. * @return name:article_list.images_arr type:array default:-- desc:图片
  223. * @return name:article_list.read_num type:int default:-- desc:阅读量
  224. * @return name:article_list.app_name type:string default:-- desc:平台名称
  225. * @return name:article_list.app_logo type:string default:-- desc:平台头像
  226. * @return name:article_list.create_at type:string default:-- desc:时间
  227. *
  228. * @return name:datum_list type:array default:-- desc:资料列表【单个】
  229. * @return name:datum_list.id type:int default:-- desc:资料的url_id
  230. * @return name:datum_list.title type:string default:-- desc:标题
  231. * @return name:datum_list.is_vip type:int default:-- desc:是否是vip
  232. *
  233. * @return name:press_list type:array default:-- desc:新闻列表
  234. * @return name:press_list.id type:int default:-- desc:新闻id
  235. * @return name:press_list.title type:string default:-- desc:标题
  236. * @return name:press_list.cover type:string default:-- desc:封面
  237. * @return name:press_list.images_arr type:array default:-- desc:图片
  238. * @return name:press_list.read_num type:int default:-- desc:阅读量
  239. * @return name:press_list.is_collect type:int default:-- desc:是否收藏(0否1是)
  240. * @return name:press_list.transmit_num type:int default:-- desc:转发量
  241. * @return name:press_list.collect_num type:int default:-- desc:收藏量
  242. * @return name:press_list.praise_num type:int default:-- desc:点赞量
  243. * @return name:press_list.is_praise type:int default:-- desc:是否点赞(0否1是)
  244. * @return name:press_list.comment_num type:int default:-- desc:评论量
  245. *
  246. *
  247. *
  248. *
  249. * @return name:recruit_list type:array default:-- desc:招聘列表
  250. * @return name:recruit_list.title type:string default:-- desc:标题
  251. * @return name:recruit_list.company type:string default:-- desc:公司名
  252. * @return name:recruit_list.cover type:string default:-- desc:公司logo
  253. * @return name:recruit_list.label_name type:array default:-- desc:标签
  254. * @return name:recruit_list.welfare_arr type:array default:-- desc:岗位福利
  255. * @return name:recruit_list.education type:string default:-- desc:学历
  256. * @return name:recruit_list.experience_min type:int default:0 desc:最低工作年限
  257. * @return name:recruit_list.experience_max type:int default:0 desc:最高工作年限
  258. * @return name:recruit_list.price_min type:int default:-- desc:最低薪资
  259. * @return name:recruit_list.price_max type:int default:-- desc:最高薪资
  260. * @return name:recruit_list.province type:string default:-- desc:省名
  261. * @return name:recruit_list.city type:string default:-- desc:市名
  262. * @return name:recruit_list.address type:string default:-- desc:地址
  263. * @return name:recruit_list.app_name type:string default:-- desc:发布人名称
  264. * @return name:recruit_list.app_logo type:string default:-- desc:发布人头像
  265. *
  266. * @return name:goods_list type:array default:-- desc:商城商品
  267. * @return name:goods_list.id type:int default:-- desc:d
  268. * @return name:goods_list.name type:string default:-- desc:商品名称
  269. * @return name:goods_list.cover type:string default:-- desc:封面
  270. * @return name:goods_list.low_price type:float default:-- desc:价格
  271. *
  272. * @return name:supplier_goods_list type:array default:-- desc:供应商商品
  273. * @return name:supplier_goods_list.id type:int default:-- desc:供应商商品d
  274. * @return name:supplier_goods_list.name type:string default:-- desc:商品名称
  275. * @return name:supplier_goods_list.cover_arr type:array default:-- desc:封面
  276. * @return name:supplier_goods_list.label_name type:array default:-- desc:标签
  277. * @return name:supplier_goods_list.label type:string default:-- desc:标签
  278. * @return name:supplier_goods_list.read_num type:int default:-- desc:浏览量
  279. * @return name:supplier_goods_list.supplier_name type:float default:-- desc:供应商名称
  280. *
  281. * @return name:demand_list type:array default:-- desc:需求
  282. * @return name:demand_list.title type:string default:-- desc:标题
  283. * @return name:demand_list.content type:string default:-- desc:内容
  284. * @return name:demand_list.cover type:array default:-- desc:封面
  285. * @return name:demand_list.money type:float default:-- desc:价格
  286. * @return name:demand_list.app_name type:string default:-- desc:发布方名称
  287. * @return name:demand_list.app_logo type:string default:-- desc:发布方头像
  288. * @return name:demand_list.is_over type:int default:-- desc:是否解决或开源【0否,1是,2开源】
  289. * @return name:demand_list.company type:string default:-- desc:公司名
  290. * @return name:demand_list.company_logo type:string default:-- desc:公司logo
  291. *
  292. *
  293. * @return name:forum_list type:array default:-- desc:问答
  294. * @return name:forum_list.id type:int default:-- desc:id
  295. * @return name:forum_list.title type:string default:-- desc:标题
  296. * @return name:forum_list.content type:string default:0 desc:内容
  297. * @return name:forum_list.level type:int default:-- desc:vip等级id
  298. * @return name:forum_list.label type:string default:-- desc:标签
  299. * @return name:forum_list.name type:string default:-- desc:发布用户
  300. * @return name:forum_list.headimg type:string default:-- desc:发布用户头像
  301. * @return name:forum_list.browse_num type:int default:-- desc:浏览量
  302. * @return name:forum_list.reply_num type:int default:-- desc:回答量
  303. *
  304. * @return name:activity_list type:array default:-- desc:活动
  305. * @return name:activity_list.id type:int default:-- desc:id
  306. * @return name:activity_list.address type:string default:-- desc:地址
  307. * @return name:activity_list.cover type:string default:-- desc:封面
  308. * @return name:activity_list.label_name type:array default:-- desc:标签
  309. * @return name:activity_list.start_time type:string default:-- desc:开始时间
  310. * @return name:activity_list.end_time type:string default:-- desc:结束时候
  311. * @return name:activity_list.end_time type:string default:-- desc:结束时间
  312. * @return name:activity_list.price type:string default:-- desc:价格
  313. */
  314. public function globalSearch()
  315. {
  316. $type = input('get.type');
  317. $search_name = input('get.search_name');
  318. $search_time = input('get.search_time');
  319. $sort_type = input('get.sort_type');
  320. $app_name = sysconf('app_name');
  321. $app_logo = sysconf('app_logo');
  322. $user_id = $this->user_id;
  323. switch ($sort_type) {
  324. case 1:
  325. $order = ['a.sort'=>'desc','a.id'=>'asc'];
  326. break;
  327. case 2:
  328. $order = ['a.id'=>'asc','a.sort'=>'desc'];
  329. break;
  330. case 3:
  331. $order = ['a.id'=>'desc','a.sort'=>'desc'];
  332. break;
  333. }
  334. if($this->user_id && $search_name) UserSearch::saveSearchTitle($this->user_id,$search_name,0);
  335. // 视频
  336. $video_list = VideoUrl::field('a.id url_id,a.create_at,a.video_id,a.cover,a.title,a.is_vip,a.ali_vid,a.label,a.read_num,a.transmit_num,a.user_id,a.duration')->alias('a')
  337. ->when($search_name,function ($query)use ($search_name,$search_time){
  338. if($search_name) $query->where('a.title|a.label','like','%'.$search_name.'%');
  339. if($search_time) $query->where('a.create_at','> time',date('Y-m-d H:i:s',strtotime('-'.$search_time.' days')));
  340. })->leftJoin('video_intro b','b.id = a.video_id')
  341. ->where('a.status',1)->where('release_time','< time',date('Y-m-d H:i:s'))->where('a.is_deleted',0)
  342. ->where('b.status',1)->where('b.is_deleted',0)->limit($this->off_set,$this->page_num)->order($order)
  343. ->select()->toArray();
  344. array_walk($video_list,function (&$v,$k)use ($app_name,$app_logo){
  345. $v['label_name'] = $v['label'] ? explode(',',trim($v['label'],',')) : null;
  346. $video_auth = VideoUrl::getVideoAuth($v['user_id'],APPNAME,APPLOGO);
  347. $v['app_name'] = $video_auth['app_name'];
  348. $v['app_logo'] = $video_auth['app_logo'];
  349. });
  350. $video_num = VideoUrl::when($search_name,function ($query)use ($search_name,$search_time){
  351. if($search_name) $query->where('a.title|a.label','like','%'.$search_name.'%');
  352. if($search_time) $query->where('a.create_at','> time',date('Y-m-d H:i:s',strtotime('-'.$search_time.' days')));
  353. })->alias('a')->leftJoin('video_intro b','b.id = a.video_id')->where('release_time','< time',date('Y-m-d H:i:s'))
  354. ->where('a.status',1)->where('a.is_deleted',0)->where('b.status',1)->where('b.is_deleted',0)->count();
  355. // 图文
  356. $article_list = ArticleItem::field('a.id item_id,a.user_id,a.create_at,a.article_id,a.cover,a.title,a.is_vip,a.images,a.read_num,a.desc')->alias('a')
  357. ->when($search_name,function ($query)use ($search_name,$search_time){
  358. if($search_name) $query->where('a.title|a.label','like','%'.$search_name.'%');
  359. if($search_time) $query->where('a.create_at','> time',date('Y-m-d H:i:s',strtotime('-'.$search_time.' days')));
  360. })->leftJoin('article_intro b','a.article_id = b.id')
  361. ->where('a.status',1)->where('a.is_deleted',0)->where('b.status',1)->where('b.is_deleted',0) ->where('release_time','< time',date('Y-m-d H:i:s'))->order($order)
  362. ->limit($this->off_set,$this->page_num)->select()->toArray();
  363. array_walk($article_list,function (&$v,$k)use ($app_name,$app_logo){
  364. $article_auth = VideoUrl::getVideoAuth($v['user_id'],APPNAME,APPLOGO);
  365. $v['app_name'] = $article_auth['app_name'];
  366. $v['app_logo'] = $article_auth['app_logo'];
  367. });
  368. $article_num = ArticleItem::when($search_name,function ($query)use ($search_name,$search_time){
  369. if($search_name) $query->where('a.title|a.label','like','%'.$search_name.'%');
  370. if($search_time) $query->where('a.create_at','> time',date('Y-m-d H:i:s',strtotime('-'.$search_time.' days')));
  371. })->leftJoin('article_intro b','a.article_id = b.id')->alias('a') ->where('release_time','< time',date('Y-m-d H:i:s'))
  372. ->where('a.status',1)->where('a.is_deleted',0)->where('b.status',1)->where('b.is_deleted',0)->count();
  373. // 资料
  374. $datum_list = DatumUrl::field('a.id,a.url,a.datum_id,a.title,a.is_vip,a.create_at')->alias('a')
  375. ->when($search_name,function ($query)use ($search_name,$search_time){
  376. if($search_name) $query->where('a.title|a.label','like','%'.$search_name.'%');
  377. if($search_time) $query->where('a.create_at','> time',date('Y-m-d H:i:s',strtotime('-'.$search_time.' days')));
  378. })->leftJoin('datum_intro b','b.id = a.datum_id') ->where('release_time','< time',date('Y-m-d H:i:s'))
  379. ->where('a.status',1)->where('a.is_deleted',0)->where('b.status',1)->where('b.is_deleted',0) ->order($order)
  380. ->limit($this->off_set,$this->page_num)->select()->toArray();
  381. $datum_num = DatumUrl::alias('a')->when($search_name,function ($query)use ($search_name,$search_time){
  382. if($search_name) $query->where('a.title|a.label','like','%'.$search_name.'%');
  383. if($search_time) $query->where('a.create_at','> time',date('Y-m-d H:i:s',strtotime('-'.$search_time.' days')));
  384. })->leftJoin('datum_intro b','b.id = a.datum_id')->where('a.status',1)->where('a.is_deleted',0)->where('b.status',1)
  385. ->where('release_time','< time',date('Y-m-d H:i:s'))->where('b.is_deleted',0)->count();
  386. //新闻
  387. $press_list = \app\common\model\Press::field('id,title,cover,images,read_num')->alias('a')
  388. ->when($search_name,function ($query)use ($search_name,$search_time){
  389. if($search_name) $query->where('title|label','like','%'.$search_name.'%');
  390. if($search_time) $query->where('create_at','> time',date('Y-m-d H:i:s',strtotime('-'.$search_time.' days')));
  391. })->where('status',1)->where('is_deleted',0) ->where('release_time','< time',date('Y-m-d H:i:s'))->order($order)
  392. ->limit($this->off_set,$this->page_num)->select()->toArray();
  393. array_walk($press_list,function (&$v,$k){
  394. $v['comment_num'] = PressComment::where(['first_id'=>$v['id'],'type'=>1,'is_deleted'=>0])->count();
  395. $v['is_collect'] = UserCollect::checkCollectByType($this->user_id,4,$v['id']);
  396. $v['collect_num'] = UserCollect::getCollectNum(4,$v['id']);
  397. $v['is_praise'] = PlatformLike::checkTags($this->user_id,$v['id'],1);
  398. $v['praise_num'] = PlatformLike::getPraiseNum($v['id'],1);
  399. $v['images_arr'] = $v['images'] ? explode('|',$v['images']) : null;
  400. });
  401. $press_num = \app\common\model\Press::when($search_name,function ($query)use ($search_name,$search_time){
  402. if($search_name) $query->where('title|label','like','%'.$search_name.'%');
  403. if($search_time) $query->where('create_at','> time',date('Y-m-d H:i:s',strtotime('-'.$search_time.' days')));
  404. })->where('status',1)->where('is_deleted',0) ->where('release_time','< time',date('Y-m-d H:i:s'))->count();
  405. //招聘
  406. $recruit_list = \app\common\model\Recruit::field('id,title,label,address,price_min,price_max,company,education,experience_min,experience_max,welfare,province,city,salary,user_id')
  407. ->alias('a')->when($search_name,function ($query)use ($search_name,$search_time){
  408. if($search_name) $query->where('title|label','like','%'.$search_name.'%');
  409. if($search_time) $query->where('create_at','> time',date('Y-m-d H:i:s',strtotime('-'.$search_time.' days')));
  410. })->where('status',1)->where('is_deleted',0) ->where('release_time','< time',date('Y-m-d H:i:s'))->order($order)
  411. ->limit($this->off_set,$this->page_num)->select()->toArray();
  412. array_walk($recruit_list,function (&$v,$k)use ($app_logo,$app_name){
  413. $v['label_name'] = $v['label']? explode(',',trim($v['label'],',')) : null;
  414. $v['welfare_arr'] = explode(',',trim($v['welfare'],','));
  415. if(!$v['user_id']){
  416. $v['app_name'] = $app_name;
  417. $v['app_logo'] = $app_logo;
  418. }else{
  419. $user_info = User::where('id',$v['user_id'])->field('name,headimg')->find();
  420. $v['app_name'] = $user_info ? $user_info->name : '';
  421. $v['app_logo'] = $user_info ? $user_info->headimg : '';
  422. }
  423. });
  424. $recruit_num = \app\common\model\Recruit::when($search_name,function ($query)use ($search_name,$search_time){
  425. if($search_name) $query->where('title|label','like','%'.$search_name.'%');
  426. if($search_time) $query->where('create_at','> time',date('Y-m-d H:i:s',strtotime('-'.$search_time.' days')));
  427. })->where('status',1)->where('is_deleted',0) ->where('release_time','< time',date('Y-m-d H:i:s'))->count();
  428. // 商品
  429. $goods_list = StoreGoods::field('id,name,cover,low_price')->alias('a')->when($search_name,function ($query)use ($search_name,$search_time){
  430. if($search_name) $query->where('name','like','%'.$search_name.'%');
  431. if($search_time) $query->where('create_at','> time',date('Y-m-d H:i:s',strtotime('-'.$search_time.' days')));
  432. })->where('is_deleted',0)->where('status',1)->order($order)->limit($this->off_set,$this->page_num)->select()->toArray();
  433. $goods_num =StoreGoods::when($search_name,function ($query)use ($search_name,$search_time){
  434. if($search_name) $query->where('name','like','%'.$search_name.'%');
  435. if($search_time) $query->where('create_at','> time',date('Y-m-d H:i:s',strtotime('-'.$search_time.' days')));
  436. })->where('is_deleted',0)->where('status',1) ->where('release_time','< time',date('Y-m-d H:i:s'))->count();
  437. // 供应商
  438. $supplier_goods_list =SupplierGoods::field('a.id,a.supplier_id,a.name,a.read_num,a.label,a.cover,s.title supplier_name,a.create_at')
  439. ->alias('a')->when($search_name,function ($query)use($search_name,$search_time){
  440. if($search_name) $query->where('a.name','like','%'.$search_name.'%');
  441. if($search_time) $query->where('a.create_at','> time',date('Y-m-d H:i:s',strtotime('-'.$search_time.' days')));
  442. })->leftJoin('Supplier s','a.supplier_id = s.id')->where('a.status','=',1)->where('a.is_deleted','=',0)->where('s.status','=',1)->where('s.is_deleted','=',0)
  443. ->where('release_time','< time',date('Y-m-d H:i:s'))->limit($this->off_set,$this->page_num) ->order($order)->select()->toArray();
  444. array_walk($supplier_goods_list,function (&$v,$k){
  445. $v['label_name'] = $v['label']? explode(',',trim($v['label'],',')) : null;
  446. $v['cover_arr'] = explode('|',trim($v['cover'],'|'));
  447. });
  448. $supplier_goods_num = SupplierGoods::when($search_name,function ($query)use($search_name,$search_time){
  449. if($search_name) $query->where('g.name','like','%'.$search_name.'%');
  450. if($search_time) $query->where('g.create_at','> time',date('Y-m-d H:i:s',strtotime('-'.$search_time.' days')));
  451. })->alias('g')->leftJoin('Supplier s','g.supplier_id = s.id')->where('g.status','=',1) ->where('g.release_time','< time',date('Y-m-d H:i:s'))
  452. ->where('g.is_deleted','=',0)->where('s.status','=',1)->where('s.is_deleted','=',0)->count();
  453. // 需求
  454. $demand_list = PlatformDemand::field('id,cover,money,user_id,label,title,cover,is_over,content,company,company_logo,a.create_at')->alias('a')
  455. ->when($search_name,function ($query)use ($search_name,$search_time){
  456. if($search_name) $query->where('title|label','like','%'.$search_name.'%');
  457. if($search_time) $query->where('create_at','> time',date('Y-m-d H:i:s',strtotime('-'.$search_time.' days')));
  458. })->where('status',1)->where('is_deleted',0) ->where('release_time','< time',date('Y-m-d H:i:s'))
  459. ->limit($this->off_set,$this->page_num)->order($order)->select()->toArray();
  460. array_walk($demand_list,function (&$v,$k)use ($app_logo,$app_name){
  461. if(!$v['user_id']){
  462. $v['app_name'] = $app_name;
  463. $v['app_logo'] = $app_logo;
  464. }else{
  465. $user_info = User::where('id',$v['user_id'])->field('name,headimg')->find();
  466. $v['app_name'] = $user_info ? $user_info->name : '';
  467. $v['app_logo'] = $user_info ? $user_info->headimg : '';
  468. }
  469. $v['label_name'] = $v['label']? explode(',',trim($v['label'],',')) : null;
  470. $v['cover_arr'] = explode('|',trim($v['cover'],'|'));
  471. });
  472. $demand_num = PlatformDemand::when($search_name,function ($query)use ($search_name,$search_time){
  473. if($search_name) $query->where('title|label','like','%'.$search_name.'%');
  474. if($search_time) $query->where('create_at','> time',date('Y-m-d H:i:s',strtotime('-'.$search_time.' days')));
  475. })->where('status',1)->where('is_deleted',0) ->where('release_time','< time',date('Y-m-d H:i:s'))->count();
  476. // 问答
  477. $forum_list = UserForum::field('a.id,a.title,a.content,a.label,a.level,a.browse_num,a.sort,a.create_at,u.name,u.headimg, IFNULL( (SELECT count(DISTINCT r.user_id) FROM dd_forum_reply as r WHERE a.id=r.forum_id),0 ) as reply_num')->alias('a')
  478. ->when($search_name,function ($query)use ($search_name,$search_time){
  479. if($search_name) $query->where('a.title|a.label','like','%'.$search_name.'%');
  480. if($search_time) $query->where('a.create_at','> time',date('Y-m-d H:i:s',strtotime('-'.$search_time.' days')));
  481. })->leftJoin('store_member u','u.id = a.user_id') ->where('release_time','< time',date('Y-m-d H:i:s'))
  482. ->where('a.status',1)->where('a.is_deleted',0)->order($order)->limit($this->off_set,$this->page_num)->select()->toArray();
  483. $forum_num = UserForum::field('a.id')->alias('a')->when($search_name,function ($query)use ($search_name,$search_time){
  484. if($search_name) $query->where('a.title|a.label','like','%'.$search_name.'%');
  485. if($search_time) $query->where('a.create_at','> time',date('Y-m-d H:i:s',strtotime('-'.$search_time.' days')));
  486. })->leftJoin('store_member u','u.id = a.user_id')
  487. ->where('a.status',1) ->where('release_time','< time',date('Y-m-d H:i:s'))
  488. ->where('a.is_deleted',0)->count();
  489. // 活动
  490. $activity_list = \app\common\model\Activity::field('id,cover,title,address,label,start_time,end_time,ladder,price,a.create_at')->alias('a')
  491. ->when($search_name,function ($query)use ($search_name,$search_time){
  492. if($search_name) $query->where('title|label','like','%'.$search_name.'%');
  493. if($search_time) $query->where('create_at','> time',date('Y-m-d H:i:s',strtotime('-'.$search_time.' days')));
  494. })->where('status',1)->where('is_deleted',0)->order($order)->limit($this->off_set,$this->page_num) ->where('release_time','< time',date('Y-m-d H:i:s'))->select()->toArray();
  495. array_walk($activity_list,function (&$v,$k){
  496. $v['label_name'] = $v['label']? explode(',',trim($v['label'],',')) : null;
  497. $v['ladder'] = $v['ladder'] ? json_decode($v['ladder'],true):null;
  498. });
  499. $activity_num = \app\common\model\Activity::when($search_name,function ($query)use ($search_name,$search_time){
  500. if($search_name) $query->where('title|label','like','%'.$search_name.'%');
  501. if($search_time) $query->where('create_at','> time',date('Y-m-d H:i:s',strtotime('-'.$search_time.' days')));
  502. })->where('status',1)->where('is_deleted',0) ->where('release_time','< time',date('Y-m-d H:i:s'))->count();
  503. if(!$type) {
  504. $total_count = $video_num+$article_num+$datum_num+$demand_num+$press_num+$goods_num+$supplier_goods_num + $activity_num + $forum_num+$recruit_num;
  505. }else{
  506. $total_count = compact($type.'_num')[$type.'_num'];
  507. }
  508. $this->success('ok',$type ? compact([$type.'_list','total_count']): compact(['video_list','article_list','datum_list','goods_list','press_list','supplier_goods_list','demand_list','recruit_list','forum_list','activity_list','total_count']));
  509. }
  510. /**
  511. * @title 发送短信验证码
  512. * @desc 发送短信验证码
  513. * @author qc
  514. * @url /api/Expedite/sendSms
  515. * @method POST
  516. * @tag 短信验证码
  517. * @param name:phone type:int require:1 default:-- desc:要获取验证码的手机号
  518. * @param name:phone_pre type:int require:1 default:86 desc:手机号前缀
  519. * @return name:code type:string default:-- desc:验证码
  520. */
  521. public function sendSms(){
  522. $phone_pre = input('post.phone_pre',86);
  523. $phone = input('post.phone');
  524. $user_info = User::where('phone',$phone)
  525. ->where('phone_pre',$phone_pre)
  526. ->where('is_deleted',0)
  527. ->field('id,status,is_deleted')->find();
  528. if($user_info && (!$user_info->status || $user_info->is_deleted))$this ->error('用户被禁用,请联系官方');
  529. if(empty($phone)) $this ->error('参数错误');
  530. $code = rand(0,9).rand(0,9).rand(0,9).rand(0,9).rand(0,9).rand(0,9);
  531. AlibabaCloud::accessKeyClient('LTAI5tJ5p12drZegeWVG33xZ', '82UWAiY5e5wH8tSkRvMtqVoGO0h8SB')->regionId('cn-hangzhou')->asDefaultClient();
  532. try {
  533. $result = AlibabaCloud::rpc()
  534. ->product('Dysmsapi')
  535. ->version('2017-05-25')
  536. ->action('SendSms')
  537. ->method('POST')
  538. ->host('dysmsapi.aliyuncs.com')
  539. ->options([
  540. 'query' => [
  541. 'RegionId' => "cn-hangzhou",
  542. 'PhoneNumbers' => $phone_pre == '86' ? $phone :$phone_pre.$phone,
  543. 'SignName' => "搞一下汽车电子",
  544. 'TemplateCode' => $phone_pre == '86' ? "SMS_234397351" :'SMS_269485496',
  545. 'TemplateParam' => json_encode(array("code"=>$code)),
  546. ],
  547. ])->request();
  548. $result = $result->toArray();
  549. if($result['Code'] != "OK") $this->exception('发送失败');
  550. $sms_data = [
  551. 'phone'=>$phone,
  552. 'code'=>$code,
  553. 'phone_pre'=>$phone_pre,
  554. 'result'=>$result['Message']
  555. ];
  556. Db::name('store_member_sms')->insert($sms_data);
  557. } catch (ClientException $e) {
  558. $this->error($e->getErrorMessage().PHP_EOL);
  559. } catch (ServerException $e) {
  560. $this->error($e->getErrorMessage().PHP_EOL);
  561. }catch (\Exception $e){
  562. $this->error($e->getMessage());
  563. }
  564. $this->success('发送成功');
  565. }
  566. /**
  567. * @title 发送邮箱验证码
  568. * @desc 发送邮箱验证码
  569. * @author qc
  570. * @url /api/Expedite/emailSms
  571. * @method POST
  572. * @tag 邮箱验证码
  573. * @param name:email type:int require:1 default:-- desc:邮箱
  574. * @return name:code type:string default:-- desc:验证码
  575. */
  576. function emailSms(){
  577. $email = input('post.email');
  578. $user_info = User::where('email',$email)->where('is_deleted',0)->field('id,status')->find();
  579. if($user_info && $user_info['status'] == 0)$this ->error('用户被禁用,请联系官方');
  580. $code = rand(0,9).rand(0,9).rand(0,9).rand(0,9).rand(0,9).rand(0,9);
  581. require_once env('root_path').'/vendor/aliyunmail/aliyun-php-sdk-core/Config.php';
  582. $iClientProfile = \DefaultProfile::getProfile("cn-hangzhou", "LTAI5tJ5p12drZegeWVG33xZ", "82UWAiY5e5wH8tSkRvMtqVoGO0h8SB");
  583. $client = new \DefaultAcsClient($iClientProfile);
  584. $request = new Dm\SingleSendMailRequest();
  585. $request->setAccountName("gyx@yzm.gyxqcdz.com");
  586. $request->setFromAlias("[验证码]");
  587. $request->setAddressType(1);
  588. $request->setTagName("zonghuzhuche");
  589. $request->setReplyToAddress("true");
  590. $request->setToAddress($email);
  591. $request->setSubject("验证码");
  592. $img= "http://gaoyixia.hdlkeji.com/code/33.png";
  593. $img ="<img src='$img'/>";
  594. $html_body = '您的验证码'.$code.'有效时间5分钟';
  595. $request->setHtmlBody($html_body);
  596. try {
  597. $send_res = $client->getAcsResponse($request);
  598. $sms_data = array(
  599. 'phone'=>$email,
  600. 'code'=>$code,
  601. 'result'=>'OK'
  602. );
  603. Db::name('store_member_sms')->insert($sms_data);
  604. $this->success('发送成功');
  605. } catch (ClientException $e) {
  606. $this->error($e->getErrorMessage());
  607. // print_r($e->getErrorCode());
  608. // print_r($e->getErrorMessage());
  609. } catch (ServerException $e) {
  610. $this->error($e->getErrorMessage());
  611. // print_r($e->getErrorCode());
  612. // print_r($e->getErrorMessage());
  613. }
  614. }
  615. /**
  616. * @title 获取签名
  617. * @desc 获取签名
  618. * @url /api/Expedite/getWeChatSign
  619. * @method POST
  620. * @param name:url type:string default:-- desc:页面地址
  621. * @return name:appid type:string default:-- desc:appid
  622. * @return name:noncestr type:string default:-- desc:随机字符
  623. * @return name:timestamp type:string default:-- desc:时间戳
  624. * @return name:sign type:string default:-- desc:签名
  625. * @return name:ticket type:string default:-- desc:ticket
  626. **/
  627. public function getWeChatSign(){
  628. $urls = input('post.url');
  629. $appid = config('app.official_account')['appid'];
  630. $secret = config('app.official_account')['secret'];
  631. $redis = new Redis();
  632. $access_token = $redis->get('access_token');
  633. if (!$access_token){
  634. $access_token = '';
  635. $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$secret";
  636. $res= http_curl($url);
  637. if (isset($res['access_token'])){
  638. $redis->set('access_token',$res['access_token'],'7000');
  639. $access_token = $res['access_token'];
  640. }
  641. }
  642. $url2 ="https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=".$access_token."&type=jsapi";
  643. $res2=http_curl($url2);
  644. //var_dump($res2);
  645. if (!isset($res2) || $res2['errcode']!=0) $this->error('获取ticket失败');
  646. $timestamp = time();
  647. $noncestr = get32Str(15);
  648. $string = "jsapi_ticket=".$res2['ticket']."&noncestr=$noncestr&timestamp=$timestamp&url=".$urls;
  649. $sign = sha1($string);
  650. $return = [
  651. 'appid'=>$appid,
  652. 'noncestr'=>$noncestr,
  653. 'timestamp'=>$timestamp,
  654. 'url'=>$urls,
  655. 'sign'=>$sign,
  656. 'ticket'=>$res2['ticket']
  657. ];
  658. $this->success('成功',$return);
  659. }
  660. /**
  661. * @title 获取分享链接
  662. * @desc 获取分享链接
  663. * @url /api/Expedite/getUrlScheme
  664. * @method POST
  665. * @return name:url type:string default:-- desc:url
  666. **/
  667. public function getUrlScheme()
  668. {
  669. $appid = config('app.mini_program')['app_id'];
  670. $secret = config('app.mini_program')['secret'];
  671. $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$secret";
  672. $res= http_curl($url);
  673. $access_token = $res['access_token'];
  674. $api_url = 'https://api.weixin.qq.com/wxa/generatescheme?access_token='.$access_token;
  675. $url_scheme = curl_post($api_url,[]);
  676. $this->success('ok',['url'=>$url_scheme['openlink']]);
  677. }
  678. /**
  679. * @title getUrlLink
  680. * @desc getUrlLink
  681. * @url /api/Expedite/getUrlLink
  682. * @method POST
  683. * @return name:url type:string default:-- desc:url
  684. **/
  685. public function getUrlLink()
  686. {
  687. $appid = config('app.mini_program')['app_id'];
  688. $secret = config('app.mini_program')['secret'];
  689. $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$secret";
  690. $res= http_curl($url);
  691. $access_token = $res['access_token'];
  692. $api_url = 'https://api.weixin.qq.com/wxa/generate_urllink?access_token='.$access_token;
  693. $url_link = curl_post($api_url,[]);
  694. $this->success('ok',['url'=>$url_link['url_link']]);
  695. }
  696. /**
  697. * @title 获取平台文案设置
  698. * @desc 获取平台文案设置
  699. * @author qc
  700. * @url /api/Expedite/getSysConfig
  701. * @method GET
  702. * @param name:search_name type:string default:-- desc:根据下面名称查(不传查全部的)
  703. * @return name:agreement type:string default:-- desc:用户协议
  704. * @return name:about_us type:string default:-- desc:关于我们
  705. * @return name:privacy type:string default:-- desc:隐私政策
  706. * @return name:user_equity type:string default:-- desc:会员权益
  707. * @return name:customer_service type:string default:-- desc:客服设置
  708. * @return name:original_pact type:string default:-- desc:原创公约
  709. * @return name:app_name type:string default:-- desc:平台名称
  710. * @return name:app_logo type:string default:-- desc:平台logo
  711. * @return name:app_version type:string default:-- desc:版本号
  712. */
  713. public function getSysConfig(){
  714. $search_name = input('get.search_name');
  715. $con_name = $search_name? [$search_name] : ['agreement','about_us','privacy','user_equity','customer_service','original_pact','app_version'];
  716. $set = Db::name('system_config')->where('name','in',$con_name)->select();
  717. $ret = [];
  718. foreach ($set as $value) {
  719. $ret[$value['name']]=$value['value'];
  720. }
  721. $this->success('获取成功',$ret);
  722. }
  723. /**
  724. * @title 修改版本信息【安卓】
  725. * @desc 修改版本信息
  726. * @author qc
  727. * @method POST
  728. * @url /api/Expedite/changeVersion
  729. * @header name:Authorization require:1 desc:Token
  730. * @param name:app_version type:string default:1 desc:版本号
  731. * @param name:version_name type:string default:-- desc:版本名
  732. * @param name:version_title type:string default:-- desc:更新标题
  733. * @param name:version_content type:string default:-- desc:更新内容
  734. * @param name:version_url type:string default:-- desc:下载地址
  735. * @param name:version_compel type:string default:-- desc:是否强制更新
  736. */
  737. public function changeVersion()
  738. {
  739. if(input('app_version'))Data::save('system_config',['value'=>input('app_version'),'name'=>'app_version'],'name',['name'=>'app_version']);
  740. if(input('version_name')) Data::save('system_config',['value'=>input('version_name'),'name'=>'version_name'],'name',['name'=>'version_name']);
  741. if(input('version_title')) Data::save('system_config',['value'=>input('version_title'),'name'=>'version_title'],'name',['name'=>'version_title']);
  742. if(input('version_content')) Data::save('system_config',['value'=>input('version_content'),'name'=>'version_content'],'name',['name'=>'version_content']);
  743. if(input('version_url')) Data::save('system_config',['value'=>input('version_url'),'name'=>'version_url'],'name',['name'=>'version_url']);
  744. Data::save('system_config',['value'=>input('version_compel'),'name'=>'version_compel'],'name',['name'=>'version_compel']);
  745. $this->success('修改成功');
  746. }
  747. /**
  748. * @title 获取版本信息【安卓】
  749. * @desc 获取版本信息
  750. * @author qc
  751. * @method GET
  752. * @url /api/Expedite/getVersionInfo
  753. * @header name:Authorization require:1 desc:Token
  754. * @return name:app_version type:string default:1 desc:版本号
  755. * @return name:version_name type:string default:-- desc:版本名
  756. * @return name:version_title type:string default:-- desc:更新标题
  757. * @return name:version_content type:string default:-- desc:更新内容
  758. * @return name:version_url type:string default:-- desc:下载地址
  759. * @return name:version_compel type:string default:-- desc:是否强制更新
  760. */
  761. public function getVersionInfo()
  762. {
  763. $version_sel = ['app_version','version_name','version_title','version_content','version_url','version_compel'];
  764. $set = Db::name('system_config')->where('name','in',$version_sel)->column('value','name');
  765. $ret = [];
  766. foreach ($version_sel as $v) {
  767. $ret[$v] = isset($set[$v]) ? $set[$v] :null;
  768. if($v == 'app_version') $ret[$v] = intval($set[$v]);
  769. }
  770. $this->success('获取成功',$ret);
  771. }
  772. /**
  773. * @title 修改版本信息【IOS】
  774. * @desc 修改版本信息
  775. * @author qc
  776. * @method POST
  777. * @url /api/Expedite/changeIosVersion
  778. * @header name:Authorization require:1 desc:Token
  779. * @param name:app_version_ios type:string default:1 desc:版本号
  780. * @param name:version_name_ios type:string default:-- desc:版本名
  781. * @param name:version_compel_ios type:string default:-- desc:是否强制更新
  782. */
  783. public function changeIosVersion()
  784. {
  785. if(input('app_version_ios'))Data::save('system_config',['value'=>input('app_version_ios'),'name'=>'app_version_ios'],'name',['name'=>'app_version_ios']);
  786. if(input('version_name_ios')) Data::save('system_config',['value'=>input('version_name_ios'),'name'=>'version_name_ios'],'name',['name'=>'version_name_ios']);
  787. Data::save('system_config',['value'=>input('version_compel_ios'),'name'=>'version_compel_ios'],'name',['name'=>'version_compel_ios']);
  788. $this->success('修改成功');
  789. }
  790. /**
  791. * @title 获取版本信息【IOS】
  792. * @desc 获取版本信息
  793. * @author qc
  794. * @method GET
  795. * @url /api/Expedite/getIosVersionInfo
  796. * @header name:Authorization require:1 desc:Token
  797. * @return name:app_version_ios type:string default:1 desc:版本号
  798. * @return name:version_name_ios type:string default:-- desc:版本名
  799. * @return name:version_compel_ios type:string default:-- desc:是否强制更新
  800. */
  801. public function getIosVersionInfo()
  802. {
  803. $version_sel = ['app_version_ios','version_name_ios','version_compel_ios'];
  804. $set = Db::name('system_config')->where('name','in',$version_sel)->column('value','name');
  805. $ret = [];
  806. foreach ($version_sel as $v) {
  807. $ret[$v] = isset($set[$v]) ? $set[$v] :null;
  808. // if($v == 'app_version_ios') $ret[$v] = intval($set[$v]);
  809. }
  810. $this->success('获取成功',$ret);
  811. }
  812. /**
  813. * @title 获取APP启动页信息
  814. * @desc 获取APP启动页信息
  815. * @author qc
  816. * @method GET
  817. * @url /api/Expedite/getAppBootConfig
  818. * @header name:Authorization require:1 desc:Token
  819. * @return name:app_image type:string default:1 desc:启动图
  820. * @return name:app_place type:string default:-- desc:跳转模块【video=>视频,article=>图文,datum=>资料,activity=>活动,demand=>需求,forum=>问答,press=>新闻,supplier=>供应商商品,recruit=>招聘,mall=>商城】
  821. * @return name:first_id type:int default:-- desc:详情id(视频、图文、资料为系列id)
  822. * @return name:second_id type:second_id default:-- desc:系列某详情id(视频、图文、资料)
  823. * @return name:is_normal type:int default:-- desc:是否是正常记录(0已删除或是已禁用1可以正常跳转详情)
  824. */
  825. public function getAppBootConfig()
  826. {
  827. $version_sel = ['app_image','app_place','first_id','second_id'];
  828. $set = Db::name('system_config')->where('name','in',$version_sel)->column('value','name');
  829. $ret = [];
  830. foreach ($version_sel as $v) {
  831. $ret[$v] = isset($set[$v]) ? $set[$v] :null;
  832. $set[$v] = $ret[$v];
  833. }
  834. $ret['is_normal'] = CheckPower::checkModulesPower($set['first_id'],$set['second_id'],$set['app_place']);
  835. $this->success('获取成功',$ret);
  836. }
  837. /**
  838. * @title IOS获取链接
  839. * @desc GET方式获取POST修改
  840. * @author qc
  841. * @method GET||POST
  842. * @url /api/Expedite/iosUrl
  843. * @header name:Authorization require:1 desc:Token
  844. * @param name:ios_url type:string default:-- desc:链接地址
  845. * @return name:ios_url type:string default:-- desc:链接地址
  846. */
  847. public function iosUrl()
  848. {
  849. if($this->request->isPost()) Data::save('system_config',['value'=>input('ios_url'),'name'=>'ios_url'],'name',['name'=>'ios_url']);
  850. $url = Db::name('system_config')->where('name','ios_url')->value('value');
  851. $this->success('获取成功',['ios_url'=>$url ? $url :'']);
  852. }
  853. /**
  854. * @title 获取客服设置【平台的】
  855. * @desc 获取客服设置【平台的】
  856. * @author qc
  857. * @url /api/Expedite/getServiceSet
  858. * @method GET
  859. * @return name:service_qr_code type:string default:-- desc:客服二维码
  860. * @return name:service_phone type:string default:-- desc:客服电话
  861. * @return name:service_email type:string default:-- desc:客服邮箱
  862. */
  863. public function getServiceSet(){
  864. $con_name = ['service_qr_code','service_phone','service_email'];
  865. $set = Db::name('system_config')->where('name','in',$con_name)->select();
  866. $ret = [];
  867. foreach ($set as $value) {
  868. $ret[$value['name']]=$value['value'];
  869. }
  870. $this->success('获取成功',$ret);
  871. }
  872. /**
  873. * @title 获取联系客服设置【模块的】[所有模块的联系我们都用这个接口]
  874. * @desc 获取联系客服设置
  875. * @author qc
  876. * @url /api/Expedite/getContact
  877. * @method GET
  878. * @param name:tag type:string default:-- desc:标识【video=>视频,article=>图文,datum=>资料,activity=>活动,demand=>需求,forum=>问答,press=>新闻,supplier=>供应商,recruit=>招聘,mall=>商城】
  879. * @return name:qrcode type:string default:-- desc:客服二维码
  880. * @return name:phone type:string default:-- desc:客服电话
  881. * @return name:email type:string default:-- desc:客服邮箱
  882. * @return name:place type:string default:-- desc:归属模块
  883. * @return name:tag type:string default:-- desc:归属标识【可以按照这个值查询或是区分所属模块】
  884. */
  885. public function getContact()
  886. {
  887. $tag = input('get.tag');
  888. $sel_tag = $tag ? [$tag] : ['video','article','datum','activity','demand','forum','press','supplier','recruit','mall'];
  889. $list = Db::name('contact')->where('tag','in',$sel_tag)->column('tag,qrcode,phone,email,tag,place','tag');
  890. $this->success('ok',$list);
  891. }
  892. /**
  893. * @title 获取模块封面
  894. * @desc 获取模块封面
  895. * @author qc
  896. * @url /api/Expedite/getModulesCover
  897. * @method GET
  898. * @param name:tag type:string default:-- desc:标识【video=>视频,article=>图文,datum=>资料,activity=>活动,demand=>需求,forum=>问答,press=>新闻,supplier=>供应商,recruit=>招聘,mall=>商城,'search'=>热搜】
  899. * @return name:cover type:string default:-- desc:封面
  900. * @return name:place type:string default:-- desc:归属模块
  901. * @return name:tag type:string default:-- desc:归属标识【可以按照这个值查询或是区分所属模块】
  902. */
  903. public function getModulesCover()
  904. {
  905. $tag = input('get.tag');
  906. $sel_tag = $tag ? [$tag] : ['video','article','datum','activity','demand','forum','press','supplier','recruit','mall','search'];
  907. $list = Db::name('cover')->where('tag','in',$sel_tag)->column('tag,cover,tag,place','tag');
  908. $this->success('ok',$list);
  909. }
  910. /**
  911. * @title 推送测试
  912. * @desc 推送测试
  913. * @author qc
  914. * @url /api/Expedite/messagePush
  915. * @method GET
  916. * @param name:user_id type:int default:-- desc:会员id
  917. * @param name:content type:string default:-- desc:推送内容
  918. * @param name:module type:string default:-- desc:模块
  919. * @param name:type type:类型 default:-- desc:推送类型
  920. * @param name:rel_id type:类型 default:-- desc:关联id
  921. */
  922. public function messagePush()
  923. {
  924. $user_id= input('user_id');
  925. $content= input('content');
  926. $module= input('module');
  927. $type= input('type');
  928. $rel_id= input('rel_id');
  929. $res = UserMessage::Jpush($user_id,$content,$module,$type,$rel_id);
  930. $this->success('',['result'=>$res]);
  931. }
  932. /**
  933. * @title 获取分享地址
  934. * @desc 获取分享地址
  935. * @author qc
  936. * @url /api/Expedite/getShareUrl
  937. * @method GET
  938. * @param name:tag type:string default:-- desc:标识【video=>视频,article=>图文,datum=>资料,activity=>活动,demand=>需求,forum=>问答,press=>新闻,supplier=>供应商商品,recruit=>招聘,mall=>商城商品】
  939. * @param name:first_id type:int default:-- desc:【视频系列id,图文系列id,资料系列id,活动id,需求id,问答id,新闻id,供应商商品id,招聘记录id,商城商品id】
  940. * @param name:second_id type:string default:-- desc:【视频url_id,图文item_id,资料item_id,其他类型的不传】
  941. * @return name:url type:string default:-- desc:跳转地址
  942. */
  943. public function getShareUrl()
  944. {
  945. $tag = input('get.tag');
  946. if(!in_array($tag, ['video','article','datum','activity','demand','forum','press','supplier','recruit','mall'])) $this->error('类型标识错误');
  947. $first_id = input('get.first_id');
  948. $second_id = input('get.second_id');
  949. $url_arr= [
  950. 'video' =>$this->request->root(true) ."/dist/#/video-details?id=$first_id&videoArrId=$second_id",
  951. 'article' =>$this->request->root(true) ."/dist/#/image-text-details?id=$first_id&item_id=$second_id",
  952. 'datum' =>$this->request->root(true) ."/dist/#/information-details?id=$first_id&url_id=$second_id",
  953. 'activity' =>$this->request->root(true) ."/dist/#/activity-sign-up?activity_id=$first_id",
  954. 'demand' =>$this->request->root(true) ."/dist/#/demand-details?demand_id=$first_id",
  955. 'forum' =>$this->request->root(true) ."/dist/#/forum-question-details?forum_id=$first_id",
  956. 'press' =>$this->request->root(true) ."/dist/#/news-details?press_id=$first_id",
  957. 'supplier' =>$this->request->root(true) ."/dist/#/supplier-details?id=$first_id",
  958. 'recruit' =>$this->request->root(true) ."/dist/#/recruit-details?recruit_id=$first_id",
  959. 'mall' =>$this->request->root(true) ."/dist/#/product-details?product_id=$first_id",
  960. ];
  961. $this->success('ok',['url'=>$url_arr[$tag]]);
  962. }
  963. /**
  964. * @title 获取极光推送类型
  965. * @desc module'=>[type=>['title'=>'视频投稿','is_push'=>0,'msg'=>['视频投稿成功请等待审核']]]
  966. * @author qc
  967. * @url /api/Expedite/getJiGuangPushType
  968. * @method GET
  969. * @return name:is_push type:string default:-- desc:模块类型下的消息是否有极光推送(1推送0不推送)
  970. * @return name:exp type:string default:-- desc:module'=>[type=>['title'=>'视频投稿','is_push'=>0,'msg'=>['视频投稿成功请等待审核']]]
  971. *
  972. */
  973. public function getJiGuangPushType()
  974. {
  975. $type_desc = [
  976. 'video'=>[
  977. 3=>['title'=>'视频评论回复【回复我的】','is_push'=>1,'msg'=>['有会员评论了您的回复']],
  978. 4=>['title'=>'视频评论【评论我的】','is_push'=>1,'msg'=>['有会员评论了您的视频']],
  979. ],// 视频
  980. 'article'=>[
  981. 3=>['title'=>'图文评论回复【回复我的】','is_push'=>1,'msg'=>['有会员评论了您的回复']],
  982. 4=>['title'=>'图文评论【评论我的】','is_push'=>1,'msg'=>['有会员评论了您的图文']],
  983. ],//图文
  984. 'forum'=>[
  985. 3=>['title'=>'回复的评论【评论我的】','is_push'=>1,'msg'=>['有会员评论了您的回复']],
  986. 4=>['title'=>'评论的回复【回复我的】','is_push'=>1,'msg'=>['有会员回复了您的评论']],
  987. 5=>['title'=>'问答回复【回答我的】','is_push'=>1,'msg'=>['有会员回复了您的问题']],
  988. ],// 问答
  989. 'press'=>[
  990. 1=>['title'=>'评论回复【回复我的】','is_push'=>1,'msg'=>['有会员回复了您的评论']],
  991. ],// 新闻
  992. 'feedback'=>[
  993. 1=>['title'=>'反馈内容回复','is_push'=>1,'msg'=>['平台回复了您的反馈']],
  994. ],// 反馈
  995. ];
  996. $this->success('ok',$type_desc);
  997. }
  998. /**
  999. * @title 获取模块总角标数量
  1000. * @desc 获取模块总角标数量
  1001. * @author qc
  1002. * @method GET
  1003. * @url /api/Expedite/getTotalMarkNum
  1004. * @header name:Authorization require:1 desc:Token
  1005. * @return name:video_num type:int default:-- desc:视频
  1006. * @return name:article_num type:int default:-- desc:图文
  1007. * @return name:press_num type:int default:-- desc:新闻
  1008. * @return name:demand_num type:int default:-- desc:需求
  1009. * @return name:forum_num type:int default:-- desc:问答
  1010. * @return name:sys_num type:int default:-- desc:系统消息
  1011. * @return name:datum_num type:int default:-- desc:资料
  1012. * @return name:supplier_num type:int default:-- desc:供应商
  1013. * @return name:activity_num type:int default:-- desc:活动
  1014. * @return name:mark_num type:int default:-- desc:商品
  1015. * @return name:recruit_num type:int default:-- desc:招聘
  1016. * @return name:total_num type:int default:-- desc:总计
  1017. */
  1018. public function getTotalMarkNum()
  1019. {
  1020. if(!$this->user_id) $this->success('ok',['video_num'=>0,'article_num'=>0,'press_num'=>0,'demand_num'=>0,'forum_num'=>0,'sys_num'=>0,'datum_num'=>0,'total_num'=>0]);
  1021. $video_all_comment = VideoComment::where(['user_id'=>$this->user_id,'is_deleted'=>0])->column('id');
  1022. // 回复我的
  1023. $video_reply_num = VideoComment::where([['t.is_deleted','=',0],['t.to_deleted','=',0],['t.user_id','<>',$this->user_id],['t.lev','>=',2],['is_read','=',0],['t.pid','in',implode(',',$video_all_comment)]])->alias('t')->count();
  1024. // 评论我的
  1025. $video_comment_num = VideoComment::where([['t.is_deleted','=',0],['i.user_id','=',$this->user_id],['t.user_id','<>',$this->user_id],['t.is_read','=',0],['t.pid','=',0]])
  1026. ->leftJoin('VideoUrl i','t.url_id = i.id')
  1027. ->alias('t')->count();
  1028. // 追更
  1029. $video_follow_num = UserMessage::getUnreadNum($this->user_id,'video',5);
  1030. // 点赞我的
  1031. $all_video = VideoUrl::where('user_id',$this->user_id)->where('is_deleted',0)->column('id');
  1032. $video_praise_num = 0;//VideoCommentLike::where([['type','=',2],['is_read','=',0],['like_id','in',$all_video]])->count();
  1033. $comment_praise_num = 0 ;// VideoCommentLike::where([['type','=',1],['is_read','=',0],['like_id','in',$video_all_comment]])->count();
  1034. $video_num = $video_reply_num + $video_comment_num + $video_follow_num + $video_praise_num + $comment_praise_num;
  1035. // 回复我的
  1036. $article_all_comment = ArticleComment::where(['user_id'=>$this->user_id,'is_deleted'=>0])->column('id');
  1037. $article_reply_num = ArticleComment::where([['t.is_deleted','=',0],['t.to_deleted','=',0],['t.user_id','<>',$this->user_id],['t.lev','>=',2],['is_read','=',0],['t.pid','in',implode(',',$article_all_comment)]])->alias('t')->count();
  1038. // 评论我的
  1039. $article_comment_num = ArticleComment::where([['t.is_deleted','=',0],['i.user_id','=',$this->user_id],['t.user_id','<>',$this->user_id],['t.is_read','=',0],['t.pid','=',0]])
  1040. ->leftJoin('ArticleItem i','t.item_id = i.id')
  1041. ->alias('t')->count();
  1042. // 追更
  1043. $article_follow_num = UserMessage::getUnreadNum($this->user_id,'article',5);
  1044. // 点赞我的
  1045. $all_article = ArticleItem::where('user_id',$this->user_id)->where('is_deleted',0)->column('id');
  1046. $article_praise_num = 0;//ArticleCommentLike::where([['is_read','=',0],['like_id','in',$all_article]])->count();
  1047. $comment_praise_num = 0;//ArticleLike::where([['is_read','=',0],['item_id','in',$article_all_comment]])->count();
  1048. $article_num = $article_reply_num + $article_comment_num + $article_follow_num + $article_praise_num + $comment_praise_num;
  1049. // 评论我的
  1050. $datum_comment_num = DatumComment::where([['t.is_deleted','=',0],['i.user_id','=',$this->user_id],['t.user_id','<>',$this->user_id],['t.is_read','=',0],['t.pid','=',0]])
  1051. ->leftJoin('DatumUrl i','t.url_id = i.id')
  1052. ->alias('t')->count();
  1053. // 回复我的
  1054. $datum_all_comment = DatumComment::where(['user_id'=>$this->user_id,'is_deleted'=>0])->column('id');
  1055. $datum_reply_num = DatumComment::where([['t.is_deleted','=',0],['t.to_deleted','=',0],['t.user_id','<>',$this->user_id],['t.lev','>=',2],['t.is_read','=',0],['t.pid','in',implode(',',$datum_all_comment)]])->alias('t')->count();
  1056. // 点赞我的
  1057. $all_datum = DatumUrl::where('user_id',$this->user_id)->where('is_deleted',0)->column('id');
  1058. $datum_praise_num = DatumCommentLike::where([['is_read','=',0],['like_id','in',$all_datum]])->count();
  1059. $comment_praise_num = DatumLike::where([['is_read','=',0],['url_id','in',$datum_all_comment]])->count();
  1060. $follow_num = UserMessage::getUnreadNum($this->user_id,'datum',5);
  1061. $datum_num =$datum_comment_num + $datum_reply_num +$datum_praise_num + $comment_praise_num +$follow_num;
  1062. // 回复我的
  1063. $press_all_comment = PressComment::where(['user_id'=>$this->user_id,'is_deleted'=>0])->column('id');
  1064. $press_reply_num = PressComment::where([['t.is_deleted','=',0],['t.lev','>=',2],['t.user_id','<>',$this->user_id],['is_read','=',0],['t.pid','in',implode(',',$press_all_comment)]])->alias('t')->count();
  1065. // 评论我的
  1066. $press_comment_num = PressComment::where([['t.is_deleted','=',0],['i.user_id','=',$this->user_id],['t.is_read','=',0],['t.user_id','<>',$this->user_id]])
  1067. ->leftJoin('Press i','t.first_id = i.id')
  1068. ->alias('t')->count();
  1069. $press_num = $press_reply_num + $press_comment_num;
  1070. $demand_num = DemandComment::where([['t.is_deleted','=',0],['i.user_id','=',$this->user_id],['t.is_read','=',0]])
  1071. ->leftJoin('PlatformDemand i','t.first_id = i.id')
  1072. ->alias('t')->count();
  1073. $all_comment = DemandComment::where(['user_id'=>$this->user_id,'is_deleted'=>0])->column('id');
  1074. $reply_num = DemandComment::where([['t.is_deleted','=',0],['t.lev','>=',2],['is_read','=',0],['t.pid','in',implode(',',$all_comment)]])->alias('t')->count();
  1075. $demand_num = $demand_num + $reply_num;
  1076. //回答我的
  1077. $answer_num = ForumReply::where([['r.issue_user','=',$this->user_id],['r.is_deleted','=',0],['r.is_read','=',0]])
  1078. ->alias('r')->leftJoin('user_forum a','r.forum_id = a.id')->count();
  1079. // 回复我的
  1080. $forum_all_comment = ForumReplyComment::where(['user_id'=>$this->user_id,'is_deleted'=>0])->column('id');
  1081. $forum_reply_num = ForumReplyComment::where([['t.is_deleted','=',0],['t.user_id', '<>', $this->user_id],['t.is_read','=',0],['t.pid','in',implode(',',$forum_all_comment)]])->alias('t')->count();
  1082. // 评论我的问题
  1083. $forum_comment = ForumReplyComment::alias('c')
  1084. ->where(['r.user_id' => $this->user_id, 'r.is_deleted' => 0, 'c.is_read' => 0,'c.reply_id'=>0,'c.pid'=>0,'c.to_deleted'=>0])
  1085. ->where('c.user_id','<>',$this->user_id)
  1086. ->leftJoin('UserForum r', 'c.forum_id = r.id')
  1087. ->count();
  1088. // 评论我的回答
  1089. $reply_comment = ForumReplyComment::alias('c')
  1090. ->where(['r.user_id' => $this->user_id, 'r.is_deleted' => 0, 'c.is_read' => 0,'c.pid'=>0,])
  1091. ->leftJoin('forum_reply r', 'c.reply_id = r.id')
  1092. ->count();
  1093. $forum_follow_num = UserMessage::getUnreadNum($this->user_id,'forum',6);
  1094. $forum_num = $answer_num+$forum_reply_num+$forum_comment+$reply_comment+ $forum_follow_num;
  1095. $sys_num = 0;//UserMessage::where(['user_id'=>$this->user_id,'is_deleted'=>0])->where('is_read',0)->count();
  1096. // 供应商
  1097. $supplier_comment_num = SupplierComment::where([['g.user_id', '=', $this->user_id],['c.is_deleted', '=', 0],['c.to_deleted', '=', 0],['c.is_read','=',0],['c.pid','=',0]])
  1098. ->alias('c') ->leftJoin('SupplierGoods g', 'g.id = c.goods_id')->count();
  1099. //回复我的
  1100. $supplier_all_comment = SupplierComment::where(['user_id'=>$this->user_id,'is_deleted'=>0])->column('id');
  1101. $supplier_reply_num = $supplier_all_comment ? SupplierComment::where([['t.is_deleted','=',0],['t.to_deleted','=',0],['t.user_id','<>',$this->user_id],['t.is_read','=',0],['t.pid','in',implode(',',$supplier_all_comment)]])->alias('t')->count() :0;
  1102. //订阅
  1103. $supplier_follow_num = UserMessage::getUnreadNum($this->user_id,'supplier',5);
  1104. $supplier_num = $supplier_comment_num + $supplier_reply_num + $supplier_follow_num;
  1105. // 活动
  1106. $activity_num = UserMessage::where(['m.user_id'=>$this->user_id,'m.is_deleted'=>0,'m.module'=>'activity','is_read'=>0])->alias('m')->count();;
  1107. // 商品
  1108. $trolley_num = ShoppingTrolley::where(['user_id'=>$this->user_id])->sum('num');
  1109. $no_pay_num = GoodsOrder::where(['user_id'=>$this->user_id,'is_deleted'=>0,'pay_state'=>0,'cancel_state'=>0])->count();
  1110. $no_express_num = GoodsOrder::where(['user_id'=>$this->user_id,'is_deleted'=>0,'pay_state'=>1,'express_state'=>0,'cancel_state'=>0])
  1111. ->where('refund_state','in','0,1,2')
  1112. ->count();
  1113. $express_num = GoodsOrder::where(['user_id'=>$this->user_id,'is_deleted'=>0,'pay_state'=>1,'express_state'=>1,'cancel_state'=>0])
  1114. ->where('refund_state','in','0,1,2')
  1115. ->count();
  1116. // $finish_num = GoodsOrder::where(['user_id'=>$this->user_id,'is_deleted'=>0,'pay_state'=>1,'express_state'=>2,'cancel_state'=>0])
  1117. // ->where('refund_state','in','0,1,2')
  1118. // ->count();
  1119. $finish_num = 0;
  1120. $refund_num = GoodsOrder::where(['user_id'=>$this->user_id,'is_deleted'=>0,'pay_state'=>1,'cancel_state'=>0])
  1121. ->where('refund_state','in','1,2,3')
  1122. ->count();
  1123. $mark_num = $trolley_num + $no_pay_num + $no_express_num + $express_num + $finish_num + $finish_num + $refund_num;
  1124. //招聘
  1125. $praise_num = PlatformLike::where([['p.type', '=', 5],['f.user_id', '=', $this->user_id],['p.to_deleted', '=', 0],['p.is_read','=',0]])->alias('p') ->leftJoin('Recruit f', 'f.id = p.like_id')->count();
  1126. $follow_num = UserMessage::where(['m.user_id'=>$this->user_id,'m.is_deleted'=>0,'m.module'=>'recruit','m.type_id'=>5,'is_read'=>0])->alias('m')->count();
  1127. $recruit_num = $praise_num + $follow_num;
  1128. $total_num = $video_num + $article_num + $datum_num + $press_num + $demand_num + $forum_num + $supplier_num + $activity_num + $mark_num + $recruit_num;
  1129. $this->success('ok',compact(['video_num','article_num','press_num','demand_num','forum_num','sys_num','datum_num','activity_num','supplier_num','mark_num','recruit_num','total_num']));
  1130. }
  1131. /**
  1132. * @title 以下接口为二期需求
  1133. * @desc 以下接口为二期需求
  1134. * @author qc
  1135. * @url /api/Expedite/secondPhase
  1136. * @method
  1137. * @return name:1 type:string default:-- desc:以下接口为二期需求
  1138. */
  1139. public function secondPhase(){}
  1140. /**
  1141. * @title 获取平台页面链接
  1142. * @desc 参数自定义!参数自定义!!参数自定义!!!
  1143. * @author qc
  1144. * @url /api/Expedite/getPlatformUrl
  1145. * @method GET
  1146. * @param name:module type:string default:-- desc:模块【video=>视频,article=>图文,datum=>资料,activity=>活动,demand=>需求,forum=>问答,press=>新闻,supplier=>供应商商品,recruit=>招聘,mall=>商城商品】
  1147. * @param name:tag type:string default:-- desc:页面标识【detail=>详情,list=>列表】
  1148. * @param name:from type:string default:-- desc:请求接口来源1:h5,2:ios,3:android
  1149. * @return name:url type:array default:-- desc:链接
  1150. * @return name:desc type:string default:-- desc:页面描述
  1151. * @return name:param type:string default:-- desc:页面参数拼接
  1152. */
  1153. public function getPlatformUrl()
  1154. {
  1155. $request_param = input('get.');
  1156. $module = input('module','activity');
  1157. $tag = input('tag','detail');
  1158. unset($request_param[$module]);
  1159. unset($request_param[$tag]);
  1160. $url = config('platform_url.'.$module)[$tag];
  1161. $this->success('ok',['url'=>$url,'params'=>http_build_query($request_param)]);
  1162. }
  1163. /**
  1164. * @title 获取手机号前缀
  1165. * @desc 获取手机号前缀
  1166. * @author qc
  1167. * @method GET
  1168. * @url /api/Expedite/getPhonePrefix
  1169. * @header name:Authorization require:1 desc:Token
  1170. * @return name:name type:string default:-- desc:名称
  1171. * @return name:code type:string default:-- desc:前缀
  1172. */
  1173. public function getPhonePrefix()
  1174. {
  1175. /*$prefix = [
  1176. ['name' => '中国大陆','code'=>'86'],
  1177. ['name' => '中国香港','code'=>'852'],
  1178. ['name' => '中国澳门','code'=>'853'],
  1179. ['name' => '中国台湾','code'=>'886'],
  1180. ['name' => '韩国','code'=>'82'],
  1181. ['name' => '日本','code'=>'81'],
  1182. ['name' => '美国','code'=>'1'],
  1183. ['name' => '加拿大','code'=>'1'],
  1184. ['name' => '新加坡','code'=>'65'],
  1185. ['name' => '马来西亚','code'=>'62'],
  1186. ['name' => '俄罗斯','code'=>'7'],
  1187. ['name' => '新西兰','code'=>'64'],
  1188. ['name' => '法国','code'=>'33'],
  1189. ['name' => '德国','code'=>'49'],
  1190. ];*/
  1191. $prefix = Db::name('phone_pre')->field('name,code')->where('is_deleted',0)->select();
  1192. $this->success('ok',$prefix);
  1193. }
  1194. /**
  1195. * @title ElasticSearch【登录状态需要header需要传Authorization】
  1196. * @desc ElasticSearch返回参数文档:https://www.elastic.co/guide/en/elasticsearch/reference/master/search-search.html
  1197. * @author qc
  1198. * @url /api/Expedite/ElasticSearch
  1199. * @method GET
  1200. * @param name:page type:int default:-- desc:页数
  1201. * @param name:page_num type:int default:-- desc:每页数量
  1202. * @param name:search type:string default:-- desc:搜索关键词
  1203. * @param name:sort_type type:int default:1 desc:1默认2发布时间正序3发布时间倒序
  1204. * @param name:is_over type:int default:-1 desc:-1全部0未解决1已解决2开源【需求模块用】
  1205. * @param name:city type:string default:-- desc:城市搜索【招聘模块用】
  1206. * @param name:module type:string default:-- desc:搜索类型(不传查全部)[video=>视频,article=>图文,datum=>资料,goods=>商城商品,press=>新闻,supplier_goods=>供应商商品,demand=>需求,recruit=>招聘,forum=>问答,activity=>活动]
  1207. * @return name:highlight type:array default:-- desc:高亮【目前设置三个字段:title、label、desc】
  1208. *
  1209. * @return name:module type:string default:-- desc:模块名
  1210. * @return name:release_time type:string default:-- desc:上架时间
  1211. * @return name:series_id type:int default:-- desc:系列id【视频、图文、资料用】
  1212. * @return name:id type:int default:-- desc:某个模块的详情id【不是系列id】
  1213. * @return name:title type:string default:-- desc:标题或名称
  1214. * @return name:label type:string default:-- desc:标签
  1215. * @return name:label_arr type:array default:-- desc:标签【数组】
  1216. * @return name:desc type:string default:-- desc:描述
  1217. * @return name:desc_text type:string default:-- desc:描述文本【搜索用的,页面展示忽略】
  1218. * @return name:content type:string default:-- desc:内容【富文本】
  1219. * @return name:detail type:string default:-- desc:详情【富文本】
  1220. * @return name:create_at type:string default:-- desc:时间
  1221. * @return name:app_name type:string default:-- desc:发布者
  1222. * @return name:app_logo type:string default:-- desc:发布者头像
  1223. * @return name:read_num type:int default:-- desc:阅读量||播放量【若模块用不到忽略】
  1224. * @return name:comment_num type:int default:-- desc:评论量【若模块用不到忽略】
  1225. * @return name:like_num type:int default:-- desc:点赞量【若模块用不到忽略】
  1226. * @return name:transmit_num type:int default:-- desc:转发量【若模块用不到忽略】
  1227. * @return name:collect_num type:int default:-- desc:收藏量【若模块用不到忽略】
  1228. * @return name:down_num type:int default:-- desc:下载量【若模块用不到忽略】
  1229. * @return name:cover type:string default:-- desc:封面【单张】
  1230. * @return name:is_vip type:int default:-- desc:是否是vip
  1231. *
  1232. * @return name:duration type:string default:-- desc:时长【视频模块】
  1233. * @return name:ali_vid type:int default:-- desc:云点播ID【视频模块】
  1234. *
  1235. * @return name:images_arr type:array default:-- desc:图片【图文】
  1236. * @return name:content_type type:int default:1 desc:1富文本2pdf【图文】
  1237. * @return name:content type:string default:-- desc:内容富文本【图文】
  1238. *
  1239. * @return name:url type:string default:-- desc:资料路径【资料】
  1240. * @return name:is_down type:int default:-- desc:是否允许下载【资料】
  1241. *
  1242. * @return name:browse_num type:string default:-- desc:浏览量【问答】
  1243. * @return name:reply_num type:string default:-- desc:回答量【问答】
  1244. * @return name:level type:string default:-- desc:vip等级id【问答】
  1245. *
  1246. * @return name:start_time type:string default:-- desc:开始时间【活动】
  1247. * @return name:end_time type:string default:-- desc:结束时间【活动】
  1248. *
  1249. * @return name:is_over type:int default:-- desc:0未解决1已解决2开源【需求模块用】
  1250. * @return name:money type:string default:-- desc:金额【需求模块用】
  1251. *
  1252. * @return name:company type:string default:-- desc:公司名称【招聘】
  1253. * @return name:company_intro type:string default:-- desc:公司简介【招聘】
  1254. * @return name:is_ss type:string default:-- desc:是否上市,1上市【招聘】
  1255. * @return name:scale type:string default:-- desc:公司规模(人数)【招聘】
  1256. * @return name:principal type:string default:-- desc:联系人【招聘】
  1257. * @return name:province type:string default:-- desc:省【招聘】
  1258. * @return name:city type:string default:-- desc:市【招聘】
  1259. * @return name:salary type:string default:-- desc:薪资【招聘】
  1260. * @return name:hr_headimg type:string default:-- desc:联系人头像【招聘】
  1261. *
  1262. *
  1263. * @return name:item_list type:array default:-- desc:商品规格详情【商城商品】
  1264. * @return name:min_price type:float default:-- desc:最低价格【商城商品】
  1265. * @return name:max_price type:float default:-- desc:最高价格【商城商品】
  1266. * @return name:sale_num type:int default:-- desc:销量【商城商品】
  1267. *
  1268. */
  1269. public function elasticSearch()
  1270. {
  1271. $index = input('index',config('text.es_index'));
  1272. $search = input('search','');
  1273. $module = input('module','');
  1274. $is_over = intval(input('is_over',-1));
  1275. $sort_type = input('sort_type',1);
  1276. $city = input('city');
  1277. //"全部",1=>'视频',2=>'资料',3=>'图文',4=>'新闻',5=>'问答',6=>'商品',7=>'活动',8=>'招聘',9=>'供应商',10=>'供应商商品',11=>'需求'
  1278. // video=>视频,article=>图文,datum=>资料,goods=>商城商品,press=>新闻,supplier_goods=>供应商商品,demand=>需求,recruit=>招聘,forum=>问答,activity=>活动]
  1279. $search_type = [
  1280. 'video'=>"1",
  1281. 'datum'=>"2",
  1282. 'article'=>"3",
  1283. 'press'=>"4",
  1284. 'forum'=>"5",
  1285. 'goods'=>"6",
  1286. 'activity'=>"7",
  1287. 'recruit'=>"8",
  1288. 'supplier'=>"9",
  1289. 'supplier_goods'=>"10",
  1290. 'demand'=>"11",
  1291. ];
  1292. if($search && $this->user_id) UserSearch::saveSearchTitle($this->user_id,$search,isset($search_type[$module]) ?$search_type[$module] :0 );
  1293. switch ($sort_type) {
  1294. case 1:
  1295. $order = $module ? [['_score'=>['order'=>'desc']],['id'=>['order'=>'desc']]] : ['create_at'=>['order'=>'desc']];
  1296. break;
  1297. case 2:
  1298. // $order = $module ? [['id'=>['order'=>'asc']]] : ['create_at'=>['order'=>'asc']];
  1299. $order = $module ? ['create_at'=>['order'=>'asc']] : ['create_at'=>['order'=>'asc']];
  1300. break;
  1301. case 3:
  1302. // $order = $module ? [['id'=>['order'=>'desc']]] : ['create_at'=>['order'=>'desc']];
  1303. $order = $module ? ['create_at'=>['order'=>'desc']] : ['create_at'=>['order'=>'desc']];
  1304. break;
  1305. }
  1306. $user_level = UserLevelRank::getUserVip($this->user_id);
  1307. $sel_level = $user_level ? $user_level : 1;
  1308. $where = [
  1309. 'index'=>$index,
  1310. 'from' => $this->off_set,
  1311. 'size' => $this->page_num,
  1312. 'body'=>[
  1313. 'sort' => $order,
  1314. 'query'=>[
  1315. 'bool'=>[
  1316. 'must'=> [
  1317. // ['match' => ['module'=> $module]],// module = module
  1318. ['match' => ['status'=>1]], // status !=0
  1319. ['match' => ['is_deleted'=> 0]],// is_deleted !=1
  1320. ['range' => ['release_time'=> ['lte'=>time()]]],//
  1321. // ['range' => ['level'=> ['lte'=>$sel_level]]],//
  1322. /* ['bool'=>[
  1323. 'should'=> [
  1324. 'multi_match' => [
  1325. 'fields'=> ['title','label','desc','content','detail'],
  1326. 'query'=> $search,
  1327. "fuzziness"=>"AUTO",
  1328. 'type'=> 'best_fields',
  1329. ]],
  1330. ]]*/
  1331. ],
  1332. ],
  1333. ],
  1334. 'highlight'=>[
  1335. "fields"=>[
  1336. 'title'=>[
  1337. 'pre_tags'=>["<span style='color:#FF6700'>"],
  1338. 'post_tags'=>["</span>"]
  1339. ],
  1340. 'label'=>[
  1341. 'pre_tags'=>["<span style='color:#FF6700'>"],
  1342. 'post_tags'=>["</span>"]
  1343. ],
  1344. 'desc'=>[
  1345. 'pre_tags'=>["<span style='color:#FF6700'>"],
  1346. 'post_tags'=>["</span>"]
  1347. ],
  1348. 'content'=>[
  1349. 'pre_tags'=>["<span style='color:#FF6700'>"],
  1350. 'post_tags'=>["</span>"]
  1351. ],
  1352. 'detail'=>[
  1353. 'pre_tags'=>["<span style='color:#FF6700'>"],
  1354. 'post_tags'=>["</span>"]
  1355. ],
  1356. 'desc_text'=>[
  1357. 'pre_tags'=>["<span style='color:#FF6700'>"],
  1358. 'post_tags'=>["</span>"]
  1359. ],
  1360. ]
  1361. ]
  1362. ]
  1363. ];
  1364. if($module) $where['body']['query']['bool']['must'][] = ['match' =>['module'=> $module]];
  1365. if($module == 'demand' && $is_over != -1 ) $where['body']['query']['bool']['must'][] = ['match' =>['is_over'=> $is_over]];
  1366. if($module == 'recruit' && $city ) $where['body']['query']['bool']['must'][] = ['match' =>['city'=> $city]];
  1367. if($search) $where['body']['query']['bool']['must'][] = ['bool' =>[
  1368. 'should'=> [
  1369. 'multi_match' => [
  1370. 'fields'=> ['title','label','desc','content','detail'],
  1371. 'query'=> $search,
  1372. "fuzziness"=>"AUTO",
  1373. 'type'=> 'best_fields',
  1374. ]]]];
  1375. $list = Elastic::select($index,$where);
  1376. $speak_list= $list['hits']['hits'];
  1377. foreach ($list['hits']['hits'] as &$v)
  1378. {
  1379. $v['_source']['label_arr'] = $v['_source']['label'] ? explode(',',$v['_source']['label']):null;
  1380. $v['_source']['create_at'] = date("Y-m-d",$v['_source']['create_at']);
  1381. $v['_source']['release_time'] = date("Y-m-d",$v['_source']['release_time']);
  1382. $v['_source']['is_over'] = isset($v['_source']['is_over']) ? intval($v['_source']['is_over']) : 0;
  1383. switch ($v['_source']['module']) {
  1384. case "video":
  1385. $info = VideoUrl::field('is_vip,cover,duration,ali_vid,read_num,video_id')->where('id',$v['_source']['id'])->find()->toArray();
  1386. $v['_source']['series_id'] = $info['video_id'];
  1387. $v['_source']['cover'] = $info['cover'];
  1388. $v['_source']['is_vip'] = $info['is_vip'];
  1389. $v['_source']['duration'] = $info['duration'];
  1390. $v['_source']['ali_vid'] = $info['ali_vid'];
  1391. $v['_source']['read_num'] = numTransform($info['read_num']);
  1392. $info_auth = VideoUrl::getVideoAuth($v['_source']['user_id'],APPNAME,APPLOGO);
  1393. $v['_source']['app_name'] = $info_auth['app_name'];
  1394. $v['_source']['app_logo'] = $info_auth['app_logo'];
  1395. break;
  1396. case "article":
  1397. // var_dump($v['_source']['id']);
  1398. // var_dump($v);
  1399. $info = ArticleItem::field('images,is_vip,cover,read_num,article_id,pdf,content_type')
  1400. ->where('id',$v['_source']['id'])->find();
  1401. $info = $info->toArray();
  1402. $v['_source']['series_id'] = $info['article_id'];
  1403. $v['_source']['cover'] = $info['cover'];
  1404. $v['_source']['is_vip'] = $info['is_vip'];
  1405. $v['_source']['pdf'] = $info['pdf'];
  1406. $v['_source']['content_type'] = $info['content_type'];
  1407. $v['_source']['read_num'] = numTransform($info['read_num']);
  1408. $v['_source']['images_arr'] = $info['images']?explode('|',$info['images']):null;
  1409. $info_auth = ArticleItem::getArticleAuth($v['_source']['user_id'],APPNAME,APPLOGO);
  1410. $v['_source']['app_name'] = $info_auth['app_name'];
  1411. $v['_source']['app_logo'] = $info_auth['app_logo'];
  1412. break;
  1413. case "datum":
  1414. $info = DatumUrl::field('is_vip,read_num,down_num,url,is_down,datum_id')->where('id',$v['_source']['id'])->find()->toArray();
  1415. $v['_source']['series_id'] = $info['datum_id'];
  1416. $v['_source']['is_vip'] = $info['is_vip'];
  1417. $v['_source']['read_num'] = numTransform($info['read_num']);
  1418. $v['_source']['down_num'] = numTransform($info['down_num']);
  1419. $v['_source']['url'] = $info['url'];
  1420. $v['_source']['is_down'] = $info['is_down'];
  1421. $info_auth = DatumUrl::getDatumAuth($v['_source']['user_id'],APPNAME,APPLOGO);
  1422. $v['_source']['app_name'] = $info_auth['app_name'];
  1423. $v['_source']['app_logo'] = $info_auth['app_logo'];
  1424. break;
  1425. case 'forum':
  1426. $info_auth = UserForum::getAuthInfo($v['_source']['user_id'],APPNAME,APPLOGO);
  1427. $v['_source']['app_name'] = $info_auth['app_name'];
  1428. $v['_source']['app_logo'] = $info_auth['app_logo'];
  1429. $reply_num = ForumReply::where('forum_id', $v['_source']['id'])->where('is_deleted', 0)->count();
  1430. $v['_source']['reply_num'] = numTransform( $reply_num);
  1431. $forum_info = UserForum::where('id',$v['_source']['id'])->find()->toArray();
  1432. $v['_source']['browse_num'] = numTransform( $forum_info['browse_num']);
  1433. break;
  1434. case 'activity':
  1435. $auth_info = \app\common\model\Activity::getAuth($v['_source']['user_id'],APPNAME,APPLOGO);
  1436. $v['_source']['app_name'] = $auth_info['app_name'];
  1437. $v['_source']['app_logo'] = $auth_info['app_logo'];
  1438. $info = \app\common\model\Activity::where('id',$v['_source']['id'])->find()->toArray();
  1439. $v['_source']['start_time'] = $info['start_time'];
  1440. $v['_source']['end_time'] = $info['end_time'];
  1441. $v['_source']['cover'] = $info['cover'];
  1442. $v['_source']['read_num'] = numTransform($info['read_num']);
  1443. break;
  1444. case 'supplier_goods':
  1445. $info = SupplierGoods::where('id',$v['_source']['id'])->find()->toArray();
  1446. $auth_info = SupplierGoods::getAuth($v['_source']['user_id'],APPNAME,APPLOGO);
  1447. $v['_source']['app_name'] = $auth_info['app_name'];
  1448. $v['_source']['app_logo'] = $auth_info['app_logo'];
  1449. $v['_source']['read_num'] = numTransform($info['read_num']);
  1450. $v['_source']['cover'] = $info['cover'];
  1451. break;
  1452. case 'press':
  1453. $info = \app\common\model\Press::where('id',$v['_source']['id'])->find()->toArray();
  1454. $auth_info = SupplierGoods::getAuth($v['_source']['user_id'],APPNAME,APPLOGO);
  1455. $v['_source']['app_name'] = $auth_info['app_name'];
  1456. $v['_source']['app_logo'] = $auth_info['app_logo'];
  1457. $v['_source']['read_num'] = numTransform($info['read_num']);
  1458. $images_arr = $info['images'] ? explode('|',$info['images']) : null;
  1459. $v['_source']['cover'] = $images_arr ? $images_arr[0] : null;
  1460. break;
  1461. case 'demand':
  1462. $info = PlatformDemand::where('id',$v['_source']['id'])->find()->toArray();
  1463. $auth_info = PlatformDemand::getAuth($v['_source']['user_id'],APPNAME,APPLOGO);
  1464. $v['_source']['app_name'] = $auth_info['app_name'];
  1465. $v['_source']['app_logo'] = $auth_info['app_logo'];
  1466. $v['_source']['read_num'] = numTransform($info['read_num']);
  1467. $images_arr = $info['images'] ? explode('|',$info['images']) : null;
  1468. $v['_source']['cover'] = $info['cover'];
  1469. $v['_source']['money'] = $info['money'];
  1470. break;
  1471. case 'recruit':
  1472. $info = \app\common\model\Recruit::where('id',$v['_source']['id'])->find()->toArray();
  1473. $auth_info = \app\common\model\Recruit::getAuth($v['_source']['user_id'],APPNAME,APPLOGO);
  1474. $v['_source']['app_name'] = $auth_info['app_name'];
  1475. $v['_source']['app_logo'] = $auth_info['app_logo'];
  1476. $v['_source']['scale'] = $info['scale'];
  1477. $v['_source']['is_ss'] = $info['is_ss'];
  1478. $v['_source']['company'] = $info['company'];
  1479. $v['_source']['company_intro'] = $info['company_intro'];
  1480. $v['_source']['province'] = $info['province'];
  1481. $v['_source']['salary'] = $info['salary'];
  1482. $v['_source']['city'] = $info['city'];
  1483. $v['_source']['principal'] = $info['principal'];
  1484. $v['_source']['hr_headimg'] = $info['hr_headimg'];
  1485. break;
  1486. case 'goods':
  1487. $info = \app\common\model\StoreGoods::where('id',$v['_source']['id'])->find()->toArray();
  1488. $auth_info = \app\common\model\StoreGoods::getAuth($v['_source']['user_id'],APPNAME,APPLOGO);
  1489. $v['_source']['app_name'] = $auth_info['app_name'];
  1490. $v['_source']['app_logo'] = $auth_info['app_logo'];
  1491. $v['_source']['cover'] = $info['cover'];
  1492. $v['_source']['sale_num'] = $info['sale_num'];
  1493. $v['_source']['specs'] = json_decode($info['specs'],true);
  1494. $v['_source']['item_list'] = StoreGoodsItem::getGoodsSpec($info['id']);
  1495. $v['_source']['min_price'] = empty($v['_source']['item_list']) ? 0 : min(array_column($v['_source']['item_list'],'sell_price'));
  1496. $v['_source']['max_price'] = empty($v['_source']['item_list']) ? 0 : max(array_column($v['_source']['item_list'],'sell_price'));
  1497. break;
  1498. }
  1499. }
  1500. $this->success('ok',['list'=>$list,'total_count'=>$list['hits']['total']['value'],'page_num'=>$this->page_num]);
  1501. }
  1502. /**
  1503. * @title 获取DRM无法播放机型
  1504. * @desc 获取DRM无法播放机型
  1505. * @author qc
  1506. * @url /api/Expedite/getBanPhoneModel
  1507. * @method GET
  1508. */
  1509. public function getBanPhoneModel()
  1510. {
  1511. $list = Db::name('ban_phone_model')->where('is_deleted',0)->column('name');
  1512. $this->success('ok',$list);
  1513. }
  1514. /**
  1515. * @title 获取各个模分享图片
  1516. * @desc 获取各个模分享图片
  1517. * @author qc
  1518. * @url /api/Expedite/getModuleBgImages
  1519. * @method GET
  1520. * @return name:activity type:string default:-- desc:活动
  1521. * @return name:video type:string default:-- desc:视频
  1522. * @return name:datum type:string default:-- desc:资料
  1523. * @return name:forum type:string default:-- desc:问答
  1524. * @return name:article type:string default:-- desc:图文
  1525. * @return name:supplier type:string default:-- desc:供应商
  1526. * @return name:press type:string default:-- desc:新闻
  1527. * @return name:demand type:string default:-- desc:需求
  1528. * @return name:recruit type:string default:-- desc:招聘
  1529. * @return name:goods type:string default:-- desc:商品
  1530. */
  1531. public function getModuleBgImages()
  1532. {
  1533. $list = [
  1534. 'activity' => 'https://gaoyixia.oss-cn-hangzhou.aliyuncs.com/images/activity.png',// 活动
  1535. 'video' => 'https://gaoyixia.oss-cn-hangzhou.aliyuncs.com/images/video.png',// 视频
  1536. 'datum' => 'https://gaoyixia.oss-cn-hangzhou.aliyuncs.com/images/datum.png',//资料
  1537. 'forum' => 'https://gaoyixia.oss-cn-hangzhou.aliyuncs.com/images/forum.png',// 问答
  1538. 'article' => 'https://gaoyixia.oss-cn-hangzhou.aliyuncs.com/images/article.png',// 图文
  1539. 'supplier' => 'https://gaoyixia.oss-cn-hangzhou.aliyuncs.com/images/supplier.png',// 供应商
  1540. 'press' => 'https://gaoyixia.oss-cn-hangzhou.aliyuncs.com/images/press.png',//新闻
  1541. 'demand' => 'https://gaoyixia.oss-cn-hangzhou.aliyuncs.com/images/demand.png',// 需求
  1542. 'recruit' => 'https://gaoyixia.oss-cn-hangzhou.aliyuncs.com/images/recruit.png',// 招聘
  1543. 'goods' => 'https://gaoyixia.oss-cn-hangzhou.aliyuncs.com/images/goods.png',// 商品
  1544. ];
  1545. $this->success('ok',$list);
  1546. }
  1547. }