Advertising.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. <?php
  2. namespace App\Modes;
  3. use Illuminate\Database\Eloquent\Model;
  4. /**
  5. * App\Modes\Advertising
  6. *
  7. * @property int $id
  8. * @property int $uid 用户id
  9. * @property string $order_no 订单号
  10. * @property string $title 广告标题
  11. * @property string|null $image 主图
  12. * @property int $scene 投放形式 1-三分之一屏幕 2-半屏幕 3-全屏
  13. * @property string|null $image_group 图组
  14. * @property int $industry 行业
  15. * @property int $shop_cate 商家类型
  16. * @property string|null $content 内容
  17. * @property string $redirect 重定向url
  18. * @property int $province 省份(area.id)
  19. * @property int $city 市(area.id)
  20. * @property int $district 区(area.id)
  21. * @property string|null $start_time 有效时间段-开始
  22. * @property string|null $end_time 有效时间段-结束
  23. * @property string $area 区域范围
  24. * @property int $total_num 总展现次数
  25. * @property int $residue_num 剩余展现次数
  26. * @property float $price 单价
  27. * @property float $total_price 总价
  28. * @property int $status 广告状态 1-待支付 2-待审核 3-发布中 4-屏蔽 5-拒绝 9-过期
  29. * @property string $rejuse_remark 拒绝备注
  30. * @property int $pay_type 支付方式 0-未支付 1-现金 2-支付宝 3-微信 4-银行转账 5-桃牛支付
  31. * @property int $guarantee 是否平台担保:0-否 1-是
  32. * @property string|null $guarantee_content 担保内容
  33. * @property int $protocol_status 是否面签担保协议 0-否 1-已签
  34. * @property int $bet_status 对赌状态 0-提交上级确认 1-通过 2-拒绝 3-城区运行商审核通过 4-城区运营商审核不通过 5-对赌生效 6-对赌失效 (审核通过才能通过给后台审核支付)
  35. * @property string $bet_rejuse_remark 对赌拒绝备注
  36. * @property int $bet_uid 对赌人
  37. * @property float $bet_money 对赌金额
  38. * @property string|null $bet_start_time 对赌开始时间
  39. * @property string|null $bet_end_time 对赌结束时间
  40. * @property int $is_company 是否企业广告 1-个人 2-企业
  41. * @property string $company_name 企业名称
  42. * @property string $compny_industry 行业
  43. * @property string $license 营业执照
  44. * @property string $license_number 营业执照号
  45. * @property int $click_num 点击量
  46. * @property int $show_num 展现次数
  47. * @property int $browse_num 浏览量
  48. * @property \Illuminate\Support\Carbon $created_at
  49. * @property \Illuminate\Support\Carbon $updated_at
  50. * @property-read \App\Modes\User $User
  51. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising newModelQuery()
  52. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising newQuery()
  53. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising query()
  54. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising whereArea($value)
  55. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising whereBetEndTime($value)
  56. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising whereBetMoney($value)
  57. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising whereBetRejuseRemark($value)
  58. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising whereBetStartTime($value)
  59. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising whereBetStatus($value)
  60. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising whereBetUid($value)
  61. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising whereBrowseNum($value)
  62. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising whereCity($value)
  63. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising whereClickNum($value)
  64. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising whereCompanyName($value)
  65. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising whereCompnyIndustry($value)
  66. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising whereContent($value)
  67. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising whereCreatedAt($value)
  68. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising whereDistrict($value)
  69. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising whereEndTime($value)
  70. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising whereGuarantee($value)
  71. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising whereGuaranteeContent($value)
  72. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising whereId($value)
  73. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising whereImage($value)
  74. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising whereImageGroup($value)
  75. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising whereIndustry($value)
  76. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising whereIsCompany($value)
  77. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising whereLicense($value)
  78. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising whereLicenseNumber($value)
  79. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising whereOrderNo($value)
  80. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising wherePayType($value)
  81. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising wherePrice($value)
  82. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising whereProtocolStatus($value)
  83. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising whereProvince($value)
  84. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising whereRedirect($value)
  85. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising whereRejuseRemark($value)
  86. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising whereResidueNum($value)
  87. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising whereScene($value)
  88. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising whereShopCate($value)
  89. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising whereShowNum($value)
  90. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising whereStartTime($value)
  91. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising whereStatus($value)
  92. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising whereTitle($value)
  93. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising whereTotalNum($value)
  94. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising whereTotalPrice($value)
  95. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising whereUid($value)
  96. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising whereUpdatedAt($value)
  97. * @mixin \Eloquent
  98. * @property string $guarantee_url 担保协议文件路径
  99. * @property string $company_industry 行业
  100. * @property-read \App\Modes\Industry $Industry
  101. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising whereCompanyIndustry($value)
  102. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising whereGuaranteeUrl($value)
  103. * @property int $activity_id 活动id 0-没有参加活动 n-zx_adver_activity.id
  104. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising whereActivityId($value)
  105. * @property int $is_update 是否更新 0-否 1-是
  106. * @method static \Illuminate\Database\Eloquent\Builder|\App\Modes\Advertising whereIsUpdate($value)
  107. */
  108. class Advertising extends Model
  109. {
  110. protected $table = 'advertising';
  111. public static function getList($where = [], $field = [], $userField = [], $param = [])
  112. {
  113. // 合并查询字段
  114. $select = ['id', 'uid', 'title', 'image', 'content', 'bet_status', 'guarantee', 'status', 'created_at','end_time','province','city','district'];
  115. $select = array_merge($select, $field);
  116. // 合并查询字段
  117. $userSelect = ['id', 'nick_name'];
  118. $userSelect = array_merge($userSelect, $userField);
  119. $res = Advertising::where($where)
  120. ->with(['User' => function ($query) use ($userSelect) {
  121. $query->select($userSelect);
  122. }])
  123. ->orderByDesc('id')
  124. ->groupBy('id')
  125. ->select($select);
  126. if (!empty($param['type'])) {
  127. if($param['type']==4){
  128. $res->whereIn('status',[2,3,4,5,6,9]);
  129. $res->where('end_time','<',date('Y-m-d H:i:s'));
  130. }else{
  131. $res->where('status', $param['type']);
  132. $res->where('end_time','>',date('Y-m-d H:i:s'));
  133. }
  134. }else{
  135. $res->whereIn('status',[2,3,4,5,6,9]);
  136. }
  137. $r=$res->paginate(perPage());
  138. if($r->isNotEmpty()){
  139. collect($r->items())->each(function ($item, $key) {
  140. if($item->end_time<date('Y-m-d H:i:S')){
  141. $item->status=9;
  142. }
  143. $allowarea=Proxy::whereProvince($item->province)->whereUid(0)->where('city',$item->city)->where('district',$item->district)->whereStatus(1)->count();
  144. $item->allowdArea=$allowarea;//0地区冻结 >0未冻结
  145. if($item->guarantee==1){
  146. $item->bet=\DB::table('advertising_bet')->where('advertising_id','=',$item->id)->first();
  147. }
  148. });
  149. }
  150. return $r;
  151. }
  152. /**
  153. * 更新广告位状态
  154. * @author lyh
  155. * @date 2019/3/22
  156. * @date 2019/3/22
  157. * @param $out_trade_no
  158. * @param $price
  159. * @param $status
  160. * @param $payType
  161. * @description
  162. */
  163. public static function updateAdver($out_trade_no)
  164. {
  165. $adver = Advertising::whereOrderNo($out_trade_no)->first();
  166. if (empty($adver)) {
  167. ErrorLog::saveMsg("广告位订单号[{$out_trade_no}]不存在");
  168. }
  169. /* if ($adver->status!=1) {
  170. return;
  171. }*/
  172. $adverUpdate = Advertising::whereOrderNo($out_trade_no)->update([
  173. 'status' => 2
  174. ]);
  175. // 生成流水日志
  176. AccountLog::saveData(6, '-'.$adver->total_price, 0, 2, 0, "购买广告位花费".$adver->total_price.'元');
  177. if (empty($adverUpdate)) {
  178. ErrorLog::saveMsg("广告位订单号[{$out_trade_no}]状态更新为待审核失败");
  179. }
  180. // 修改活动记录状态
  181. if ($adver->activity_id) {
  182. AdverActivityLog::whereId($adver->activity_id)->update(['status' => 2]);
  183. }
  184. }
  185. /**
  186. * @author lyh
  187. * @date 2019/3/21
  188. * @description
  189. */
  190. public function User()
  191. {
  192. return $this->hasOne('App\Modes\User', 'id', 'uid');
  193. }
  194. public function Industry()
  195. {
  196. return $this->hasOne('App\Modes\Industry', 'id', 'company_industry');
  197. }
  198. }