Pub.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | [ WE CAN DO IT MORE SIMPLE ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2018-2020 rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Author: TABLE ME
  8. // +----------------------------------------------------------------------
  9. // | Date: 2020-08-25 17:23
  10. // +----------------------------------------------------------------------
  11. declare (strict_types=1);
  12. namespace app\api\controller;
  13. use think\facade\View;
  14. use app\BaseController;
  15. use app\Request;
  16. use library\services\UtilService;
  17. use library\utils\UtilsTool;
  18. use think\facade\Db;
  19. use think\Image;
  20. use app\model\api\AppBug;
  21. use app\model\api\User as UserModel;
  22. use app\model\api\ShowTemplate;
  23. use app\model\api\UserShowTemplate;
  24. use app\model\api\ServiceType;
  25. use app\model\api\ServiceTimeType;
  26. use app\model\api\UserWorkType;
  27. use app\model\api\Advert as AdvertModel;
  28. use library\utils\WxpayV2 as wxpayApi;
  29. class Pub extends BaseController
  30. {
  31. private $user = null;
  32. public function checkUser($token=null){
  33. if(empty($token)){
  34. return false;
  35. }
  36. $memData = (new UserModel)
  37. ->where('token',$token)
  38. ->where('status',1)
  39. ->find();
  40. if(empty($memData)){
  41. return false;
  42. }
  43. $this->user = $memData->toArray();
  44. return true;
  45. }
  46. /**
  47. * 获取支付类型数据
  48. */
  49. public function getPayTypeData(){
  50. $data = [
  51. ["code"=>"wxpay","title"=>"微信支付","img"=> env('appinfo.app_api_domain', '')."/resource/icon/"."wxicon.png"],
  52. ["code"=>"balance","title"=>"余额支付","img"=>env('appinfo.app_api_domain', '')."/resource/icon/"."balance.png"],
  53. ];
  54. return app('json')->success($data);
  55. }
  56. /**
  57. * 获取模板详情
  58. * @param Request $request
  59. * @return type
  60. */
  61. public function getShowTemplateItem(Request $request){
  62. $post = UtilService::getMore([
  63. ['id', '','empty','参数错误'],
  64. ], $request);
  65. $data = (new ShowTemplate)
  66. ->field("id,title,price,old_price,status,imgs,is_hot,is_recommend,code,look_count,real_sales,unreal_sales")
  67. ->where("id",$post["id"])
  68. ->find();
  69. if(empty($data)){
  70. return app('json')->fail("模板不存在");
  71. }
  72. if($data["status"]!=1){
  73. return app('json')->fail("模板已下架");
  74. }
  75. $data = $data->toArray();
  76. $data["is_use"] = 0;
  77. $data["imgs"] = getImageAr($data["imgs"]);
  78. $data["img"] = empty($data["imgs"]) ? "" : $data["imgs"][0];
  79. $data["sales_count"] = $data["real_sales"] + $data["unreal_sales"];
  80. unset($data["real_sales"]);
  81. unset($data["unreal_sales"]);
  82. //验证是否购买过并添加浏览记录
  83. $this->checkUser($request->header("token", ""));
  84. if(!empty($this->user)){
  85. $data["is_use"]=(new UserShowTemplate)->where("uid",$this->user["uid"])->where("show_template_id",$data["id"])->count()>0?1:0;
  86. (new ShowTemplate)->where('id', $data["id"])->inc('look_count', 1)->update();
  87. }
  88. return app('json')->success($data);
  89. }
  90. /**
  91. * 获取皮肤模板列表
  92. * @param Request $request
  93. */
  94. public function getShowTemplateList(Request $request){
  95. $post = UtilService::getMore([
  96. ['is_hot', '0'],
  97. ['is_recommend', '0'],
  98. ['page', 1],
  99. ['pageSize', 50],
  100. ], $request);
  101. $post["pageSize"] = $post["pageSize"]>50 ? 50 : (int)$post["pageSize"];
  102. $post["page"] = $post["page"]<=0 ? 1 : (int)$post["page"];
  103. $where=[];
  104. $where[]=["status","=",1];
  105. if((int)$post["is_hot"]==1){
  106. $where[]=["is_hot","=",1];
  107. }
  108. if((int)$post["is_recommend"]==1){
  109. $where[]=["is_recommend","=",1];
  110. }
  111. $totalCount = (new ShowTemplate)->where($where)->count();
  112. $data=null;
  113. if($totalCount>0){
  114. $data = (new ShowTemplate)
  115. ->field("id,title,price,old_price,status,imgs,is_hot,is_recommend,code,look_count,real_sales,unreal_sales")
  116. ->where($where)
  117. ->order("id", "desc")
  118. ->page((int)$post["page"], $post["pageSize"])
  119. ->select();
  120. foreach($data as $k=>$v){
  121. $data[$k]["is_use"] = 0;//是否已经购买或者可以使用
  122. $data[$k]["imgs"] = getImageAr($v["imgs"]);
  123. $data[$k]["img"] = empty($data[$k]["imgs"]) ? "" : $data[$k]["imgs"][0];
  124. $data[$k]["sales_count"] = $data[$k]["real_sales"] + $data[$k]["unreal_sales"];
  125. unset($data[$k]["real_sales"]);
  126. unset($data[$k]["unreal_sales"]);
  127. }
  128. }
  129. $data = empty($data)?[]:$data;
  130. return app('json')->success(["list" => $data, "pageSize" => $post["pageSize"],"page"=>$post["page"],"totalCount"=>$totalCount]);
  131. }
  132. /**
  133. * 获取轮播图
  134. * @param Request $request
  135. */
  136. public function getBannerList(Request $request){
  137. $post = UtilService::getMore([
  138. ['type', ''],
  139. ['page', 1],
  140. ['pageSize', 50],
  141. ], $request);
  142. $post["pageSize"] = $post["pageSize"]>50 ? 50 : (int)$post["pageSize"];
  143. $post["page"] = $post["page"]<=0 ? 1 : (int)$post["page"];
  144. $where=[];
  145. $where[]=["is_show","=",1];
  146. $where[]=["page_id","=",70];
  147. $totalCount = (new AdvertModel)->where($where)->count();
  148. $data=null;
  149. if($totalCount>0){
  150. $data = (new AdvertModel)
  151. ->field("id,img,title,url")
  152. ->where($where)
  153. ->order("sort","desc")
  154. ->page($post["page"], $post["pageSize"])
  155. ->select();
  156. }
  157. $data = empty($data)?[]:$data;
  158. return app('json')->success(["list" => $data, "pageSize" => $post["pageSize"],"page"=>$post["page"],"totalCount"=>$totalCount]);
  159. }
  160. /**
  161. * 获取服务类型列表
  162. * @param Request $request
  163. * @return type
  164. */
  165. public function getServiceTypeList(Request $request){
  166. $post = UtilService::getMore([
  167. ['page', 1],
  168. ['pageSize', 50],
  169. ], $request);
  170. $post["pageSize"] = $post["pageSize"]>50 ? 50 : (int)$post["pageSize"];
  171. $post["page"] = $post["page"]<=0 ? 1 : (int)$post["page"];
  172. $where=[];
  173. $where[]=["status","=",1];
  174. $totalCount = (new ServiceType)->where($where)->count();
  175. $data=null;
  176. if($totalCount>0){
  177. $data = (new ServiceType)
  178. ->field("id,title,content,img")
  179. ->where($where)
  180. ->order("seq", "desc")
  181. ->page($post["page"], $post["pageSize"])
  182. ->select();
  183. }
  184. $data = empty($data)?[]:$data;
  185. return app('json')->success(["list" => $data, "pageSize" => $post["pageSize"],"page"=>$post["page"],"totalCount"=>$totalCount]);
  186. }
  187. /**
  188. * 获取用户工作服务类型
  189. * @param Request $request
  190. */
  191. public function getUserWorkTypeList(Request $request){
  192. $post = UtilService::getMore([
  193. ['page', 1],
  194. ['pageSize', 50],
  195. ], $request);
  196. $post["pageSize"] = $post["pageSize"]>50 ? 50 : (int)$post["pageSize"];
  197. $post["page"] = $post["page"]<=0 ? 1 : (int)$post["page"];
  198. $where=[];
  199. $where[]=["status","=",1];
  200. $totalCount = (new UserWorkType)->where($where)->count();
  201. $data=null;
  202. if($totalCount>0){
  203. $data = (new UserWorkType)
  204. ->field("id,title,content,img")
  205. ->where($where)
  206. ->order("seq", "desc")
  207. ->page($post["page"], $post["pageSize"])
  208. ->select();
  209. }
  210. $data = empty($data)?[]:$data;
  211. return app('json')->success(["list" => $data, "pageSize" => $post["pageSize"],"page"=>$post["page"],"totalCount"=>$totalCount]);
  212. }
  213. /**
  214. * 获取服务时长类型
  215. * @param Request $request
  216. * @return type
  217. */
  218. public function getServiceTimeTypeList(Request $request){
  219. $post = UtilService::getMore([
  220. ['page', 1],
  221. ['pageSize', 50],
  222. ], $request);
  223. $post["pageSize"] = $post["pageSize"]>50 ? 50 : (int)$post["pageSize"];
  224. $post["page"] = $post["page"]<=0 ? 1 : (int)$post["page"];
  225. $where=[];
  226. $where[]=["status","=",1];
  227. $totalCount = (new ServiceTimeType)->where($where)->count();
  228. $data=null;
  229. if($totalCount>0){
  230. $data = (new ServiceTimeType)
  231. ->field("title,code")
  232. ->where($where)
  233. ->order("id", "asc")
  234. ->page($post["page"], $post["pageSize"])
  235. ->select();
  236. }
  237. $data = empty($data)?[]:$data;
  238. return app('json')->success(["list" => $data, "pageSize" => $post["pageSize"],"page"=>$post["page"],"totalCount"=>$totalCount]);
  239. }
  240. /**
  241. * 获取系统信息
  242. * @param Request $request
  243. */
  244. public function getSysData(Request $request){
  245. $data = (new Sys)->where("id",1)->find()->toArray();
  246. $data=[];
  247. return app("json")->success($data);
  248. }
  249. /**
  250. * 首页轮播
  251. * @param Request $request
  252. */
  253. public function getHomeBanner(Request $request){
  254. $data = (new AdvertModel)
  255. ->field("id,img,title,url")
  256. ->where("page_id",70)
  257. ->where("is_show",1)
  258. ->order("sort","desc")
  259. ->select()
  260. ->toArray();
  261. $data = empty($data)?[]:$data;
  262. return app("json")->success($data);
  263. }
  264. /**
  265. * bug提交
  266. * @param Request $request
  267. */
  268. public function appBugSub(Request $request){
  269. [$error] = UtilService::getMore([
  270. ['error', '','empty',"错误信息为空"],
  271. ], $request,true);
  272. $deviceId = $request->header("deviceId", "");
  273. $deviceType = $request->header("deviceType", "");
  274. $fromPlat = $request->header("fromPlat", "");
  275. $version = $request->header("version", "");
  276. (new AppBug)->insert([
  277. "device_id" => $deviceId,
  278. "device_type" => $deviceType,
  279. "from_plat" => $fromPlat,
  280. "version" => $version,
  281. "error" => $error,
  282. "time" => time()
  283. ]);
  284. return app("json")->success("提交成功");
  285. }
  286. /**
  287. * 测试
  288. */
  289. public function appTest(Request $request){
  290. $money = $request->post("money",0);
  291. $money = bcadd("0", $money."",2);
  292. echo $money;exit;
  293. $xml = "<xml><appid><![CDATA[wx57a473fc2f83f7e5]]></appid>
  294. <attach><![CDATA[微信小程序支付]]></attach>
  295. <bank_type><![CDATA[OTHERS]]></bank_type>
  296. <cash_fee><![CDATA[1]]></cash_fee>
  297. <fee_type><![CDATA[CNY]]></fee_type>
  298. <is_subscribe><![CDATA[N]]></is_subscribe>
  299. <mch_id><![CDATA[1640972417]]></mch_id>
  300. <nonce_str><![CDATA[TTEMpfip075pcFNNhS5P60tDtis91veA]]></nonce_str>
  301. <openid><![CDATA[oOqrp4tndyR_iDwrGC5P7Y4moP2Y]]></openid>
  302. <out_trade_no><![CDATA[A202304201681959554328879382]]></out_trade_no>
  303. <result_code><![CDATA[SUCCESS]]></result_code>
  304. <return_code><![CDATA[SUCCESS]]></return_code>
  305. <sign><![CDATA[146B5ADFF5ADC399A92C60D62C54638A]]></sign>
  306. <time_end><![CDATA[20230420105928]]></time_end>
  307. <total_fee>1</total_fee>
  308. <trade_type><![CDATA[JSAPI]]></trade_type>
  309. <transaction_id><![CDATA[4200001803202304202712861307]]></transaction_id>
  310. </xml>";
  311. $wxpay = new wxpayApi();
  312. // $r = $wxpay->notifyCheckSign($xml);
  313. $r = $wxpay->searchOrderQuery("A202304201681959554328879382");
  314. var_dump($r);
  315. }
  316. }