UserSynth.php 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. <?php
  2. namespace app\common\service;
  3. use app\common\model\ArticleIntro;
  4. use app\common\model\BillApply;
  5. use app\common\model\BillHeader;
  6. use app\common\model\DatumIntro;
  7. use app\common\model\DeliveryAddress;
  8. use app\common\model\SupplierGoods;
  9. use app\common\model\UserSearch;
  10. use app\common\model\UserVitality;
  11. use app\common\model\VideoIntro;
  12. use think\cache\driver\Redis;
  13. use think\Db;
  14. /**
  15. * 会员身综合管理
  16. * Class UserIdentity
  17. */
  18. class UserSynth extends SerBase
  19. {
  20. public static $ret_val = ['code' => 200 , 'msg'=>'ok','extend'=>''];
  21. // 会员活跃度
  22. public static function vitality($user_id,$type)
  23. {
  24. if($type === false) return false;
  25. $type++;
  26. $redis = new Redis();
  27. $check_key = date('Y-m-d').'_'.$user_id;
  28. // 当天是否登录
  29. if(!$redis->get($check_key)) {
  30. $redis->set($check_key,86400);
  31. $year = date('Y');
  32. $month = date('m');
  33. $day = date('d');
  34. $vitality_info= [
  35. 'user_id'=>$user_id,
  36. 'year'=>$year,
  37. 'month'=>$month,
  38. 'day'=>$day,
  39. 'day_time'=>date('Y-m-d'),
  40. 'create_at'=>date('Y-m-d H:i:s'),
  41. 'type'=>$type
  42. ];
  43. UserVitality::create($vitality_info);
  44. }
  45. }
  46. /**
  47. * 创建申请发票申请记录【申请开票】
  48. * @param $user_id
  49. * @param $order_id
  50. * @param $order_type 订单类型
  51. * @param $bill_info 发票抬头id||发票详情
  52. * @param $add_id 售货地址id
  53. * @param $send_type 物流类型1点子发票2纸质发票
  54. * @param $remark 备注
  55. * @param $order_pay 订单是否完成支付
  56. * @return array
  57. */
  58. public static function buildBillApply($user_id, $order_id, $order_type,$bill_info,$add_id,$send_type,$remark,$order_pay = 1)
  59. {
  60. $order_table = [
  61. 1=>'level_order',// 会员订单
  62. 2=>'store_order',// 商品订单
  63. 3=>'activity_apply',// 活动订单
  64. ];
  65. Db::startTrans();
  66. try {
  67. $apply_info = [
  68. 'order_id' => $order_id,
  69. 'table_name' => $order_table[$order_type],
  70. 'user_id' => $user_id,
  71. 'remark' => $remark,
  72. 'send_type' => $send_type,
  73. 'order_type' => $order_type,
  74. 'create_at' => date("Y-m-d H:i:s"),
  75. 'order_pay' => $order_pay,
  76. ];
  77. if($add_id) {
  78. $add_info = DeliveryAddress::field('id,pro_name,city_name,county_name,mer_name,detail,phone,name')->where('user_id',$user_id)->where('id',$add_id)->find();
  79. $apply_info['address_info'] = json_encode($add_info->toArray());
  80. }
  81. if(is_array($bill_info)){
  82. $apply_info['header'] = $bill_info['header'];
  83. // $apply_info['type'] = $bill_info['type'];
  84. $apply_info['email'] =$bill_info['email'];
  85. // $apply_info['bank'] = $bill_info['bank'];
  86. // $apply_info['card_no'] = $bill_info['card_no'];
  87. // $apply_info['phone'] = $bill_info['phone'];
  88. $apply_info['identify_number'] = $bill_info['identify_number'];
  89. // $apply_info['address'] = $bill_info['address'];
  90. }else if($bill_info){
  91. $bill_header = BillHeader::where('id',$bill_info) ->where('user_id',$user_id)->find();
  92. if(empty($bill_header)) self::exception('发票抬头有误');
  93. $apply_info['header'] = $bill_header->header;
  94. $apply_info['email'] = $bill_header->email;
  95. $apply_info['identify_number'] = $bill_header->identify_number;
  96. }
  97. $order_info = Db::name($order_table[$order_type])
  98. ->where('user_id',$user_id)
  99. ->where('pay_state',1)
  100. ->where('id',$order_id)
  101. ->find();
  102. if(empty($order_info) && $order_type != 3)self::exception('订单有误');
  103. $check_info = BillApply::where('user_id',$user_id)
  104. ->where('order_id',$order_id)
  105. ->where('is_deleted',0)
  106. ->where('table_name',$order_table[$order_type])
  107. ->find();
  108. if(!empty($check_info) && $check_info->status == 1) self::exception('已开票');
  109. $apply_info = BillApply::create($apply_info);
  110. static::$ret_val['extend'] = $apply_info->id ;
  111. Db::commit();
  112. }catch (\Exception $e) {
  113. Db::rollback();
  114. static::$ret_val['code'] = 201 ;
  115. static::$ret_val['msg'] = $e->getMessage();
  116. }
  117. return static::$ret_val;
  118. }
  119. // 获取所有模块设置
  120. public static function getAllModuleTitle()
  121. {
  122. // 视频
  123. $video = VideoIntro::field('id,title,IF(id,\'video\',0) module')->with(['videoArr'=>function($query){
  124. return $query->field('id,title,video_id');
  125. }])->where(['is_deleted'=>0])->order('id desc')->select()->toArray();
  126. array_walk($video,function (&$v){
  127. $v['children'] = $v['video_arr'];
  128. unset($v['video_arr']);
  129. });
  130. // 资料
  131. $datum = DatumIntro::with(['urlArr'=>function($query){
  132. return $query->field('id,title,datum_id');
  133. }])->where(['is_deleted'=>0])->field('id,title,IF(id,\'datum\',0) module')->order('id desc')->select()->toArray();
  134. array_walk($datum,function (&$v){
  135. $v['children'] = $v['url_arr'];
  136. unset($v['url_arr']);
  137. });
  138. // 图文
  139. $article = ArticleIntro::with(['itemChildren'=>function($query){
  140. return $query->field('id,title,article_id');
  141. }])->field('id,title,IF(id,\'article\',0) module')->where(['is_deleted'=>0])->order('id asc')->select()->toArray();
  142. array_walk($article,function (&$v){
  143. $v['children'] = $v['item_children'];
  144. unset($v['item_children']);
  145. });
  146. $supplier_goods = SupplierGoods::alias('g')->field('g.id,g.supplier_id,g.name title,IF(g.id,\'supplier\',0) module')->where(['g.is_deleted'=>0])
  147. ->leftJoin('Supplier s', 's.id = g.supplier_id')->select()->toArray();
  148. return array_merge($video,$datum,$article,$supplier_goods);
  149. // return compact(['video','datum','article','supplier_goods']);
  150. }
  151. // 推荐
  152. public static function getRecommendList($user_id,$module,$page,$page_num)
  153. {
  154. $module_set = [
  155. 'press'=>[
  156. 'type'=> 4,
  157. 'table'=>'dd_press',
  158. 'index_field'=>'name',
  159. 'select_field'=>'a.id,a.title,a.label,a.images,a.read_num,a.transmit_num,a.user_id,a.create_at,IFNULL(is_recommend,0) is_recommend',
  160. ]
  161. ];
  162. $search_log = UserSearch::getSearchTitle($user_id,$module_set[$module]['type']);
  163. $search_arr = [];
  164. $where_str = 'b.id > 0';
  165. foreach ($search_log as $t){
  166. $search_arr[] = " b.$module_set[$module][\"index_field\"] like '".'%'.$t."%'" .' ';
  167. $search_arr[] = " b.label like '".'%'.$t."%'" .' ';
  168. }
  169. if(!empty($search_arr)) $where_str = implode(' OR ',$search_arr);
  170. switch ($module)
  171. {
  172. case "press":
  173. break;
  174. }
  175. }
  176. // 短信发送
  177. public static function phoneMessageSend()
  178. {
  179. }
  180. }