Newhome.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338
  1. <?php
  2. namespace app\controller\api\newhome;
  3. use app\common\model\store\product\Product;
  4. use app\common\repositories\store\product\ProductRepository;
  5. use app\controller\api\store\product\Jt;
  6. use crmeb\basic\BaseController;
  7. use think\App;
  8. use think\facade\Db;
  9. class Newhome extends BaseController
  10. {
  11. private $merId;
  12. private $source;
  13. public function __construct(App $app)
  14. {
  15. parent::__construct($app);
  16. $this->source = $this->request->header('source');
  17. $this->merId = $this->request->header('merId');
  18. }
  19. //首页商品列表
  20. public function product_lst()
  21. {
  22. [$page, $limit] = $this->getPage();
  23. $ProductRepository=app() -> make(ProductRepository::class);
  24. $where=[
  25. 'is_used'=>1,
  26. 'mer_status'=>1,
  27. 'is_show'=>1,
  28. 'is_hide'=>0,
  29. 'is_del' => 0,
  30. 'status' => 1,
  31. ];
  32. $product_id_yin = explode('=',systemConfig('product_ids_yin'));
  33. $Productmodel=new Product();
  34. $da_cang_product=$Productmodel->where('type',5) ->whereNotIn('product_id',$product_id_yin)->where($where)->page($page,50)->order('returrn_profit_rate DESC')->select()->toArray();
  35. foreach ($da_cang_product as &$da_cang){
  36. $da_cang['flag']='1';
  37. // $da_cang['yanglao']=bcmul(bcmul($da_cang['dc_price'],'0.1',2),'0.5',2);
  38. $da_cang['yanglao']=set_price_rtrim($ProductRepository->yanglaojin($da_cang['product_id']));
  39. $dacang_price=Db::name('store_product_attr_value')->where('product_id',$da_cang['product_id'])->order('dacang_price','asc')->limit(1)->value('dacang_price');
  40. $da_cang['da_cang_price']=set_price_rtrim($dacang_price);
  41. $da_cang['shop_name'] = Db::name('merchant')->where('mer_id',$da_cang['mer_id'])->value('mer_name');
  42. }
  43. return app('json')->success($da_cang_product);
  44. }
  45. //会员免费商品
  46. public function free_product()
  47. {
  48. $Productmodel=new Product();
  49. $data=$Productmodel->field('store_name,image,price,product_id')->where('product_id',systemConfig('vip_exclusive_product'))->find();
  50. if($data)
  51. return app('json')->success($data);
  52. return app('json')->fail('暂无数据');
  53. }
  54. //大仓banner
  55. public function banner($type)
  56. {
  57. if($this->source=='yhc'){
  58. $banner = merchantGroupData($this->merId,$type);
  59. }else{
  60. $banner = systemGroupData($type);
  61. }
  62. return app('json')->success($banner);
  63. }
  64. //签到
  65. public function sgin()
  66. {
  67. $uid=$this->request->uid();
  68. $year=date('Y',time());
  69. $month=date('m',time());
  70. $day=date('d',time());
  71. //查到最后一天签到记录
  72. $signdata=Db::name('sign')->where('uid',$uid)->where('status',1)->order('num','desc')->find();
  73. if($signdata){
  74. if($year==$signdata['year']&&$month==$signdata['month']&&$day==$signdata['day']){
  75. return app('json')->fail('今日已签到');
  76. }
  77. }
  78. //第一天签到获得2积分,第二天获得4积分,第三天获得6积分,第四天获得 10 积分,第五天获得 14积分第六天获得 20积分,
  79. //连续签到从第七天开始,每日签到获得3积分,第七天连续签到额外奖励 38积分,第 14 天连续签到额外奖励 68 积分,第 21天连续签到额外奖励 128 积分第 30 天连续签到额外奖励 188 积分
  80. $guizeList = ['1'=>2,'2'=>4,'3'=>6,'4'=>10,'5'=>14,'6'=>20];
  81. $guizeLxList = [['sizi'=>7, 'value'=> 38], ['sizi'=>14, 'value'=> 68], ['sizi'=>21, 'value'=> 38], ['sizi'=>30, 'value'=> 188]];//连续签到额外奖励
  82. if(!$signdata){
  83. $pension=$this->one_sign($uid);
  84. }elseif($signdata['num']>=1&&$signdata['num']<7){
  85. $res=$this->lianxu_sign($signdata['day'],$uid);
  86. if($res==0){
  87. $this->one_sign($uid);
  88. }else {
  89. $pension = rand('1', '50');
  90. $pension=$pension*0.01;
  91. $score = $guizeList[$signdata['num']]??3;
  92. $this->sign_add($uid, $score,1,'签到赠送积分','','');
  93. Db::name('sign')->insert(['uid' => $uid, 'year' => $year, 'month' => $month, 'day' => $day,'num' => $signdata['num'] + 1, 'score' => $score, 'pension' => $pension, 'status' => 1]);
  94. }
  95. }elseif($signdata['num'] >= 7){
  96. $res=$this->lianxu_sign($signdata['day'],$uid);
  97. if($res==0){
  98. Db::name('sign')->where('uid',$uid)->update(['status'=>3]);
  99. $this->one_sign($uid);
  100. }else {
  101. $pension = rand('10', '100');
  102. $pension=$pension*0.01;
  103. $score = $guizeList[$signdata['num']]??3;
  104. $this->sign_add($uid, $score,1,'签到赠送积分','','');
  105. $scoreGw = 0;
  106. foreach ($guizeLxList as $val) {
  107. if ($signdata['num'] >= $val['sizi']) {
  108. $scoreGw = $val['value'];
  109. }
  110. }
  111. if($scoreGw > 0){
  112. $this->sign_add($uid, $score,1,'连续签到赠送额外奖励积分','','');
  113. }
  114. Db::name('sign')->insert(['uid' => $uid, 'year' => $year, 'month' => $month, 'day' => $day, 'num' => $signdata['num'] + 1, 'score' => $score, 'pension' => $pension, 'status' => 1]);
  115. }
  116. }else{
  117. $pension='0.00';
  118. }
  119. return app('json')->success($pension);
  120. }
  121. //首次签到
  122. public function one_sign($uid)
  123. {
  124. $year=date('Y',time());
  125. $month=date('m',time());
  126. $day=date('d',time());
  127. $pension=['0.5','0.6','1'];
  128. $pensions=array_rand($pension);
  129. Db::name('sign')->insert(['uid'=>$uid,'year'=>$year,'month'=>$month,'day'=>$day,'num'=>1,'pension'=>$pension[$pensions],'status'=>1]);
  130. // //首次签到送30积分,同时赠送邀请人30积分
  131. // $this->sign_add($uid, 30,1,'首次签到送30积分','','');
  132. // $member_info = Db::name('user')->where( array('uid' => $uid) )->find();
  133. // if($member_info['spread_uid']){
  134. // $spreadUid = $member_info['spread_uid'];
  135. // $this->sign_add($spreadUid, 30,1,'邀请人首次签到送30积分','','');
  136. // }
  137. return $pension[$pensions];
  138. }
  139. /**
  140. * @param int $uid 用户ID
  141. * @param string $score 积分
  142. * @param int $status 积分状态
  143. * @param string $mark 备注
  144. * @param string $has_qian 连续签到天数
  145. * @param string $today_signintime 签到时间
  146. * @param int $order_id 订单ID
  147. * @param int $pm 1-收入。2-支出
  148. * @param string $order_type
  149. * @throws DbException
  150. */
  151. public function sign_add($uid, $score, $status, $mark, $has_qian = '', $today_signintime = '', $order_id = 0, $pm = 1, $order_type = '',$type='',$settlement_time = '')
  152. {
  153. if(!in_array($type,[1,2])){
  154. // 其他情况都直接返回,因为目前只有365专区购买才可以获得
  155. return false;
  156. }
  157. $ins_data['uid'] = $uid;
  158. $ins_data['continuity_day'] = $has_qian;
  159. $ins_data['reward_socre'] = $score;
  160. $ins_data['signin_time'] = $today_signintime;
  161. $ins_data['addtime'] = time();
  162. $ins_data['status'] = $status;
  163. $ins_data['mark'] = $mark;
  164. $ins_data['type'] = $type;
  165. $ins_data['settlement_time'] = $settlement_time;// 结算时间 真正到了结算时间会结算
  166. $ins_data['order_id'] = $order_id;
  167. $ins_data['pm'] = $pm;
  168. $ins_data['order_type'] = $order_type;
  169. Db::name('user_sign_score')->insertGetId($ins_data);
  170. if($pm == 1 && $status == 1){
  171. Db::name('user')->where('uid',$uid)->inc('score', $score)->update();
  172. }
  173. if($pm == 2){
  174. Db::name('user')->where('uid', $uid)->dec('score', $score)->update();
  175. }
  176. }
  177. //签到是否正常
  178. public function lianxu_sign($day,$uid)
  179. {
  180. $data=date('d',time()-86400);
  181. if($data==$day){
  182. return 1;//正常签到
  183. }else{
  184. Db::name('sign')->where('uid',$uid)->where('status','1')->update(['status'=>3]);
  185. return 0;//中断签到
  186. }
  187. }
  188. //每日结算已达到九天签到的养老金
  189. public function jiesuanpension()
  190. {
  191. //已达到九天的用户
  192. $uid=Db::name('sign')->where('num',9)->where('status',1)->field('uid,id')->select()->toArray();
  193. $pension=0;
  194. foreach ($uid as $k => $v){
  195. $pension=Db::name('sign')->where('uid',$v['uid'])->where('status',1)->sum('pension');
  196. if($pension!=0) {
  197. $billData = [
  198. 'uid' => $v['uid'],
  199. 'link_id' => 0,
  200. 'pm' => 1,
  201. 'title' => '签到养老金',
  202. 'category' => 'now_money',
  203. 'type' => 'commission',
  204. 'number' => $pension,
  205. 'balance' => 0,
  206. 'mark' => '连续签到9天得' . $pension . '养老金',
  207. 'create_time' => date("Y-m-d H:i:s", time()),
  208. 'status' => 1,
  209. 'order_sn' => "111111111111111111",
  210. 'type_shop' => 0,
  211. 'commission_type' => 5,
  212. 'order_type' => 1,
  213. 'source' => 0,
  214. 'gzc' => 0,
  215. ];
  216. Db::name('user_bill')->insert($billData);
  217. Db::name('sign')->where('uid',$v['uid'])->where('status',1)->update(['status'=>2]);
  218. Db::name('user')->where('uid',$v['uid'])->inc('annuity',$pension);
  219. Db::name('user')->where('uid',$v['uid'])->inc('annuity_num',1);
  220. }
  221. echo "签到:给用户".$v['uid'].'--'.$pension.'养老金';echo "<br>";
  222. }
  223. }
  224. public function sign_lst()
  225. {
  226. $uid=$this->request->uid();
  227. $today=date('d',time());
  228. $year=date('Y',time());
  229. $month=date('m',time());
  230. //签到天数
  231. $sign_day=Db::name('sign')->where('uid',$uid)->where('status',1)->order('num','desc')->find();
  232. if($sign_day){
  233. if($today!=$sign_day['day']||$sign_day['year']!=$year||$month!=$sign_day['month']) {
  234. $res = $this->lianxu_sign($sign_day['day'], $uid);
  235. if ($res==1) {
  236. $sign_day = $sign_day['num'];
  237. } else {
  238. $sign_day = 0;
  239. }
  240. }else{
  241. $sign_day=$sign_day['num'];
  242. }
  243. }else{
  244. $sign_day=0;
  245. }
  246. $pensions=Db::name('sign')->where('uid',$uid)->where('status',1)->sum('pension');
  247. $return_data=['pension'=>$pensions,'sign_day'=>$sign_day];
  248. return app('json')->success($return_data);
  249. // //查今天有没有签到
  250. // $data=explode("-",date('Y-m-d'));
  251. // $year = $data[0];
  252. // $month = $data[1];
  253. // $day = $data[2];
  254. // $signdata=Db::name('sign')
  255. // ->where('uid',$uid)
  256. // ->where('status',1)
  257. // ->where('year',$year)
  258. // ->where('month',$month)
  259. // ->where('day',$day)
  260. // ->find();
  261. // dump($signdata);
  262. // if($signdata){
  263. // $pensions=Db::name('sign')->where('uid',$uid)->where('status',1)->sum('pension');
  264. // //签到天数
  265. // $sign_day=Db::name('sign')->where('uid',$uid)->where('status',1)->order('num','desc')->value('num');
  266. // }else{
  267. // //查昨天有没有签到
  268. // $data=explode("-",date('Y-m-d',time()-86400));
  269. // $year = $data[0];
  270. // $month = $data[1];
  271. // $day = $data[2];
  272. // $signdata=Db::name('sign')
  273. // ->where('uid',$uid)
  274. // ->where('status',1)
  275. // ->where('year',$year)
  276. // ->where('month',$month)
  277. // ->where('day',$day)
  278. // ->find();
  279. // //昨天没有签到
  280. // if(!$signdata){
  281. // $pensions=$sign_day=0;
  282. // }else{
  283. // //昨天签到了
  284. // $pensions=Db::name('sign')->where('uid',$uid)->where('status',1)->sum('pension');
  285. // //签到天数
  286. // $sign_day=Db::name('sign')->where('uid',$uid)->where('status',1)->order('num','desc')->value('num');
  287. // }
  288. // }
  289. $return_data=['pension'=>$pensions,'sign_day'=>$sign_day??0];
  290. return app('json')->success($return_data);
  291. }
  292. public function sign_today()
  293. {
  294. $uid=$this->request->uid();
  295. $today=date('d',time());
  296. $year=date('Y',time());
  297. $month=date('m',time());
  298. $where=[
  299. 'day'=>$today,
  300. 'month'=>$month,
  301. 'year'=>$year
  302. ];
  303. $res=Db::name('sign')->where('uid',$uid)->where($where)->find();
  304. if($res){
  305. return app('json')->success(1);
  306. }else{
  307. return app('json')->success(0);
  308. }
  309. }
  310. }