General.php 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331
  1. <?php
  2. namespace app\api\controller;
  3. use library\tools\Data;
  4. use think\Db;
  5. /**
  6. * @title 其他接口(订单转换,许愿单等)
  7. * @controller General
  8. * @group base
  9. */
  10. class General extends Base
  11. {
  12. public function initialize()
  13. {
  14. parent::initialize();
  15. parent::check_login();
  16. }
  17. /**
  18. * @title 提交订单转换
  19. * @desc 提交订单转换
  20. * @author qc
  21. * @url /api/General/orderShift
  22. * @method POST
  23. * @tag 订单转换
  24. * @header name:Authorization require:1 desc:Token
  25. * @param name:order_sn type:string require:1 default:-- desc:第三方订单号
  26. */
  27. public function orderShift()
  28. {
  29. $order_no = input('post.order_sn');
  30. if(!$order_no) $this->error('请填写订单号');
  31. $ck = Db::table('order_shift')->where('order_no',$order_no)->value('id');
  32. if($ck) $this->error('您已提交过相同的订单ID,请核实后重新提交,有疑问咨询专属客服哦~');
  33. Data::save('order_shift', ['uid'=>$this->uid, 'create_at'=>date('Y-m-d H:i:s'), 'order_no'=>$order_no],'uid', ['uid'=>$this->uid, 'order_no'=>$order_no]);
  34. /* Db::table('order_shift')->insert(
  35. ['uid'=>$this->uid,
  36. 'create_at'=>date('Y-m-d H:i:s'),
  37. 'order_no'=>$order_no
  38. ]);*/
  39. $this->success('订单提交成功,等待审核!');
  40. }
  41. /**
  42. * @title 获取提交的转换记录
  43. * @desc 获取提交的转换记录
  44. * @author qc
  45. * @url /api/General/getOrderShiftList
  46. * @method GET
  47. * @header name:Authorization require:1 desc:Token
  48. * @param name:page type:int : default:1 desc:页数
  49. * @param name:page_num type:int : default:20 desc:每页数
  50. * @param name:ck_status type:int : default:-1 desc:审核状态(默认全部)0待审核,1审核通过,2审核不通过,
  51. * @return name:id type:int default:-- desc:记录id
  52. * @return name:uid type:string default:-- desc:会员id
  53. * @return name:order_no type:string default:-- desc:提交的订单号
  54. * @return name:sh_status type:int default:-- desc:审核状态(0待审核,1审核通过,2审核不通过)
  55. * @return name:remark type:string default:-- desc:审核备注
  56. * @return name:ck_time type:string default:-- desc:审核时间
  57. * @return name:integral type:int default:-- desc:转化多少积分
  58. * @return name:growth type:int default:-- desc:转化多少成长值
  59. */
  60. public function getOrderShiftList()
  61. {
  62. $where['o.uid'] = $this->uid;
  63. $ck_status = input('ck_status',-1);
  64. if(in_array($ck_status,[0,1,2]))$where['o.sh_status'] =$ck_status;
  65. $list = Db::table('order_shift')
  66. ->field('o.id,o.order_no,o.sh_status,ck_time,integral,growth,d.title as remark')
  67. ->alias('o')
  68. ->join('audit_desc d','d.id = o.audit_id',"LEFT")
  69. ->where($where)
  70. ->limit($this->off_set,$this->page_num)
  71. ->order('o.id desc')
  72. ->select();
  73. $this->success('ok',$list);
  74. }
  75. /**
  76. * @title 获取许愿分类
  77. * @desc 获取许愿分类
  78. * @author qc
  79. * @url /api/General/getWishCate
  80. * @method GET
  81. * @header name:Authorization require:1 desc:Token
  82. * @return name:id type:int default:-- desc:分类id
  83. * @return name:title type:string default:-- desc:分类名称
  84. */
  85. public function getWishCate()
  86. {
  87. $list = Db::table('wish_cate')
  88. ->field('id,title')
  89. ->where('is_deleted',0)->where('status',1)
  90. ->order('sort desc,id desc')->select();
  91. $this->success('提交成功',['list'=>$list]);
  92. }
  93. /**
  94. * @title 提交许愿单
  95. * @desc 提交许愿单
  96. * @author qc
  97. * @url /api/General/proWish
  98. * @method POST
  99. * @header name:Authorization require:1 desc:Token
  100. * @param name:phone type:string require:1 default:-- desc:手机号
  101. * @param name:first_classify type:int require:1 default:-- desc:分类id
  102. * @param name:detail type:string require:1 default:-- desc:详情
  103. */
  104. public function proWish()
  105. {
  106. $phone = input('post.phone');
  107. $first_classify = input('post.first_classify');
  108. $detail = input('post.detail');
  109. if(!$detail ) $this->error('请填写愿望号');
  110. $ck = Db::table('user_wish')
  111. ->where(['uid'=>$this->uid,'first_classify'=>$first_classify,'detail'=>$detail])
  112. ->value('id');
  113. if($ck) $this->error('愿望不能重复提交');
  114. Db::table('user_wish')->insert(['uid'=>$this->uid,'phone'=>$phone,'first_classify'=>$first_classify,'detail'=>$detail,'create_at'=>date('Y-m-d H:i:s')]);
  115. $this->success('提交成功');
  116. }
  117. /**
  118. * @title 获取物流详情
  119. * @desc 获取物流详情
  120. * @author qc
  121. * @url /api/General/deliveryDetails
  122. * @method GET
  123. * @header name:Authorization require:1 desc:Token
  124. * @param name:company_id type:int require:1 default:-- desc:快递id(订单express_company_id字段)
  125. * @param name:send_no type:string require:1 default:-- desc:物流单号
  126. * @return name:number type:string default:-- desc:单号
  127. * @return name:type type:string default:-- desc:快递类型
  128. * @return name:list type:array default:-- desc:数据列表
  129. * @return name:list.time type:string default:-- desc:时间
  130. * @return name:list.status type:string default:-- desc:内容
  131. * @return name:deliverystatus type:int default:-- desc:0:快递收件(揽件)1.在途中2.正在派件3.已签收4.派送失败5.疑难件6.退件签收
  132. * @return name:issign type:int default:-- desc:是否签收(1.是否签收)
  133. * @return name:expName type:string default:-- desc:快递公司名称
  134. * @return name:expSite type:string default:-- desc:快递公司官网
  135. * @return name:expPhone type:string default:-- desc:快递公司电话
  136. * @return name:courier type:string default:-- desc:快递员 或 快递站(没有则为空)
  137. * @return name:courierPhone type:string default:-- desc:快递员电话 (没有则为空)
  138. * @return name:updateTime type:string default:-- desc:快递轨迹信息最新时间
  139. * @return name:takeTime type:string default:-- desc:发货到收货消耗时长 (截止最新轨迹)
  140. * @return name:logo type:string default:-- desc:快递公司LOGO
  141. */
  142. public function deliveryDetails(){
  143. $send_no = input('get.send_no');
  144. $data = get_delivery($send_no);
  145. $this->success('ok',$data);
  146. }
  147. /**
  148. * @title 验证会员当天是否签到
  149. * @desc 验证会员当天是否签到
  150. * @author qc
  151. * @url /api/General/checkSign
  152. * @method GET
  153. * @header name:Authorization require:1 desc:Token
  154. * @return name:is_sign type:int default:0 desc:是否签到0未签到,1已签到
  155. */
  156. public function checkSign()
  157. {
  158. $year = date('Y');
  159. $month = date('m');
  160. $day = date('d');
  161. $ck_sign = Db::table('user_sign')
  162. ->where(['uid'=>$this->uid,'year'=>$year,'month'=>$month,'day'=>$day,'type'=>1])
  163. ->count();
  164. $this->success('ok',['is_sign'=>$ck_sign]);
  165. }
  166. /**
  167. * @title 会员当月签到详情
  168. * @desc 会员当月签到详情
  169. * @author qc
  170. * @url /api/General/getUserMonthSign
  171. * @method GET
  172. * @header name:Authorization require:1 desc:Token
  173. * @return name:month_data type:array default:-- desc:日历
  174. * @return name:month_data.date_str type:array default:-- desc:时间
  175. * @return name:month_data.date type:array default:-- desc:日期
  176. * @return name:month_data.prefix_date type:array default:-- desc:日期
  177. * @return name:month_data.week type:string default:-- desc:星期几
  178. * @return name:month_data.live_num type:int default:-- desc:当天直播场数(没有直播是0)
  179. * @return name:month_data.is_sign type:int default:-- desc:是否签到(未签到是0,签到是1)
  180. * @return name:month_data.live_sign type:string default:-- desc:标签
  181. * @return name:today_sign type:int default:0 desc:当天是否签到(未签到是0,签到是1)
  182. * @return name:count type:int default:0 desc:月签到次数
  183. * @return name:acc_data type:array default:-- desc:月累计签到签到
  184. * @return name:acc_data.seven type:int default:0 desc:累计7天奖励是否领取(0未领取,1已领取)
  185. * @return name:acc_data.seventeen type:int default:0 desc:累计17天奖励是否领取(0未领取,1已领取)
  186. * @return name:acc_data.twenty_seven type:int default:0 desc:累计27天奖励是否领取(0未领取,1已领取)
  187. * @return name:sign_set type:array default:0 desc:签到设置
  188. * @return name:sign_set.type type:int default:0 desc:签到类型(1每日签到,2累积签到)
  189. * @return name:sign_set.day type:int default:0 desc:天数
  190. * @return name:sign_set.integral type:int default:0 desc:积分
  191. * @return name:sign_set.growth type:int default:0 desc:成长值
  192. */
  193. public function getUserMonthSign()
  194. {
  195. $year = date('Y');
  196. $month = date('m');
  197. $month_data = get_month_days();
  198. $today_sign = 0;
  199. foreach ($month_data as &$v) {
  200. $is_live = Db::table('store_live')
  201. ->where('start_at','>= time',$v['date_str'].' 00:00:00')
  202. ->where('start_at','<= time',$v['date_str'].' 23:59:59')
  203. ->find();
  204. $v['live_num'] = !empty($is_live) ? 1:0;
  205. $v['live_sign'] = !empty($is_live) ? $is_live['title_sign']:'';
  206. $v['is_sign'] = Db::table('user_sign')
  207. ->where(['uid'=>$this->uid,'year'=>$year,'month'=>$month,'set_id'=>1,'day'=>$v['prefix_date']])
  208. ->count();
  209. if($v['date_str'] == date('Y-m-d') )$today_sign = $v['is_sign'] ;
  210. }
  211. $acc = Db::table('user_sign')
  212. ->where(['uid'=>$this->uid,'year'=>$year,'month'=>$month,'set_id'=>[2,3,4]])
  213. ->select();
  214. $acc_data =['seven'=>0,'seventeen'=>0,'twenty_seven'=>0];
  215. array_map(function ($val)use (&$acc_data){
  216. switch ($val['set_id']){
  217. case 2:
  218. $acc_data['seven']=1;
  219. break;
  220. case 3:
  221. $acc_data['seventeen']=1;
  222. break;
  223. case 4:
  224. $acc_data['twenty_seven']=1;
  225. break;
  226. }
  227. },$acc);
  228. $sign_set = Db::table('store_sign')->select();
  229. $this->success('ok',['month_data'=>$month_data,'today_sign'=>$today_sign,'count'=>array_sum(array_column($month_data,'is_sign')),'acc_data'=>$acc_data,'sign_set'=>$sign_set]);
  230. }
  231. /**
  232. * @title 会员签到
  233. * @desc 会员签到
  234. * @author qc
  235. * @url /api/General/userSign
  236. * @method POST
  237. * @header name:Authorization require:1 desc:Token
  238. * @param name:type type:int require:1 default:1 desc:签到类型1普通签到,2累计7天,3,累计17天,4累计27天
  239. * @return name:send_integral type:int default:0 desc:发放积分数
  240. */
  241. public function userSign()
  242. {
  243. $type = input('post.type',1);
  244. $year = date('Y');
  245. $month = date('m');
  246. $day = date('d');
  247. $send_integral = 0;
  248. $daily_set = Db::table('store_sign')->where(['type'=>1])->find();//每日签到
  249. $cumulant_set = Db::table('store_sign')->where(['type'=>2])->select();// 累积签到
  250. $ck_sign = Db::table('user_sign')
  251. ->where(['uid'=>$this->uid,'year'=>$year,'month'=>$month,'day'=>$day,'type'=>$type])
  252. ->count();
  253. if($ck_sign) $this->error('已签到');
  254. $sign_data=[
  255. 'uid' =>$this->uid,
  256. 'year' =>$year,
  257. 'month' =>$month,
  258. 'day' =>$day,
  259. 'type' =>$type,
  260. 'create_at' => date('Y-m-d H:i:s'),
  261. 'desc' => '每日签到',
  262. 'integral' => $daily_set['integral'],
  263. 'set_id' => $daily_set['id'],
  264. 'growth' => $daily_set['growth'],
  265. ];
  266. Db::table('user_sign')->insert($sign_data);// 签到日志
  267. $int_id = Db::getLastInsID();
  268. $send_integral = bcadd($send_integral,$daily_set['integral']);
  269. update_user_integral($this->uid,$daily_set['integral'],3,'恭喜亲通过每日签到获得'.$daily_set['integral'].'积分',$int_id);// 更新积分
  270. if($daily_set['growth'] > 0) update_user_growth($this->uid,$daily_set['growth'],3,'恭喜亲通过每日签到获得'.$daily_set['growth'].'成长值');// 更新成长值
  271. /**
  272. * 累积签到
  273. */
  274. // 当月每日签到
  275. $month_sign = Db::table('user_sign')
  276. ->where(['uid'=>$this->uid,'year'=>$year,'month'=>$month,'type'=>1])
  277. ->count();
  278. foreach ($cumulant_set as $val)
  279. {
  280. if($val['day'] <= $month_sign){
  281. // 当月的累积签到是否发放
  282. $ck_sign = Db::table('user_sign')
  283. ->where(['uid'=>$this->uid,'year'=>$year,'month'=>$month,'set_id'=>$val['id']])
  284. ->count();
  285. if($ck_sign) continue;
  286. $sign_data=[
  287. 'uid' =>$this->uid,
  288. 'year' =>$year,
  289. 'month' =>$month,
  290. 'day' =>$day,
  291. 'type' =>$val['id'],
  292. 'create_at' => date('Y-m-d H:i:s'),
  293. 'desc' => '恭喜亲通过累积签到'.$val['day'].'天获得'.$val['integral'].'积分',
  294. 'integral' => $val['integral'],
  295. 'growth' => $val['growth'],
  296. 'set_id' => $val['id'],
  297. ];
  298. Db::table('user_sign')->insert($sign_data);
  299. $int_id = Db::getLastInsID();
  300. // 更新积分余额
  301. $send_integral = bcadd($send_integral,$val['integral']);
  302. update_user_integral($this->uid, $val['integral'],3,$sign_data['desc'],$int_id);
  303. if($val['growth'] > 0) update_user_growth($this->uid,$val['growth'],3,'恭喜亲通过累积签到'.$val['day'].'天获得'.$val['growth'].'成长值');// 更新成长值
  304. }
  305. }
  306. $this->success('签到成功',['send_integral'=>intval($send_integral)]);
  307. }
  308. }