GoodsController.php 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729
  1. <?php
  2. namespace app\controller;
  3. use app\business\GoodsBusiness;
  4. use app\business\StreamBusiness;
  5. use Illuminate\Support\Arr;
  6. use Respect\Validation\Validator;
  7. use support\Db;
  8. use support\Request;
  9. use hg\apidoc\annotation as Apidoc;
  10. use function Symfony\Component\String\s;
  11. #[Apidoc\Title("项目管理")]
  12. #[Apidoc\Group("Goods")]
  13. #[Apidoc\Sort(3)]
  14. class GoodsController
  15. {
  16. #[Apidoc\Title("列表")]
  17. #[Apidoc\Url("api/goods/charity.html")]
  18. #[Apidoc\Method("POST")]
  19. #[Apidoc\Param("page", type: "int", require: true, desc: "页面", mock: 1)]
  20. #[Apidoc\Param("limit", type: "int", require: true, desc: "输出条数", mock: 10)]
  21. #[Apidoc\Param("type", type: "int", require: true, desc: "类型:1=中国供销", mock: 1)]
  22. #[Apidoc\Returned(name: "id", type: "int", require: true, desc: '产品ID', default: '')]
  23. #[Apidoc\Returned(name: "name", type: "string", require: true, desc: '名称', default: '')]
  24. #[Apidoc\Returned(name: "pay_price", type: "string", require: true, desc: '支付金额', default: '')]
  25. #[Apidoc\Returned(name: "bonus", type: "string", require: true, desc: '每日分红', default: '')]
  26. #[Apidoc\Returned(name: "balance", type: "string", require: true, desc: '股权数量', default: '')]
  27. #[Apidoc\Returned(name: "gift_money", type: "string", require: true, desc: '股权价值', default: '')]
  28. #[Apidoc\Returned(name: "daily_limit", type: "string", require: true, desc: '日限额', default: '')]
  29. #[Apidoc\Returned(name: "monthly_limit", type: "string", require: true, desc: '月限额', default: '')]
  30. #[Apidoc\Returned(name: "is_buy", type: "string", require: true, desc: '是否认购专属股权:true false', default: '')]
  31. #[Apidoc\Returned(name: "is_apply_for", type: "string", require: true, desc: '是否已经申请:true=正在邮寄 false=申请邮寄 ', default: '')]
  32. #[Apidoc\Returned(name: "img", type: "string", require: true, desc: '图片', default: '')]
  33. #[Apidoc\Returned(name: "total_num", type: "int", require: true, desc: '总数', default: '')]
  34. #[Apidoc\Returned(name: "num", type: "int", require: true, desc: '剩余数量', default: '')]
  35. #[Apidoc\Returned(name: "is_restore", type: "int", require: true, desc: '是否恢复过,0=未恢复,1=已恢复', default: '')]
  36. public function charity(Request $request)
  37. {
  38. try {
  39. $param = $request->param_data;
  40. $data = Db::table('wa_goods')
  41. ->where(function ($query) use ($param) {
  42. $query->where('state', 1);
  43. if (Arr::get($param, 'type')) {
  44. $query->where('type', $param['type']);
  45. } else {
  46. $query->where('type', 1);
  47. }
  48. })
  49. ->orderBy('sort')
  50. ->paginate(Arr::get($param, 'limit', 10))
  51. ->toArray();
  52. foreach ($data['data'] as $k => $v) {
  53. $data['data'][$k]->img = imageToBase64($v->img);
  54. $is_buy = Db::table('wa_payorder')
  55. ->where('user_id', $request->user_data['id'])
  56. ->where('is_pay', 2)
  57. ->where('goods_id', $v->id)
  58. ->exists();
  59. $data['data'][$k]->is_buy = $is_buy ? true : false;
  60. $is_apply_for = Db::table('wa_sign_record')
  61. ->where('uid', $request->user_data['id'])
  62. ->where('goods_id', $v->id)
  63. ->exists();
  64. $is_record = Db::table('wa_sign_record')
  65. ->where('uid', $request->user_data['id'])
  66. ->where('goods_id', $v->id)
  67. ->where('is_restore', 1)
  68. ->first();
  69. if ($is_record) {
  70. $data['data'][$k]->is_restore = 1;
  71. } else {
  72. $data['data'][$k]->is_restore = 0;
  73. }
  74. $data['data'][$k]->is_apply_for = $is_apply_for ? true : false;
  75. }
  76. } catch (\Throwable $exception) {
  77. return error($exception->getMessage());
  78. }
  79. return success($data);
  80. }
  81. #[Apidoc\Title("支付")]
  82. #[Apidoc\Url("api/goods/charity_buy.html")]
  83. #[Apidoc\Method("POST")]
  84. #[Apidoc\Header("token", type: "string", require: true, desc: "身份令牌Token", mock: "@token")]
  85. #[Apidoc\Param(name: "id", type: "int", require: true, desc: '产品ID', default: '')]
  86. #[Apidoc\Param(name: "pay_characteristic", type: "int", require: true, desc: '支付通道标识', default: '1')]
  87. #[Apidoc\Param(name: "num", type: "int", require: true, desc: '购买数量:默认1', default: '1')]
  88. #[Apidoc\Param(name: "name", type: "string", require: true, desc: '姓名', default: '1')]
  89. #[Apidoc\Param(name: "mobile", type: "string", require: true, desc: '手机号', default: '1')]
  90. #[Apidoc\Param(name: "number", type: "string", require: true, desc: '身份证', default: '1')]
  91. #[Apidoc\Param(name: "address", type: "string", require: true, desc: '地址', default: '1')]
  92. #[Apidoc\Param(name: "restore_array", type: "string", require: true, desc: '恢复银行卡ID字符串,逗号隔开', default: '1')]
  93. #[Apidoc\Returned(name: "type", type: "int", require: true, desc: '类型 1直接购买 2支付通道', default: 2)]
  94. #[Apidoc\Returned(name: "url", type: "string", require: true, desc: '支付地址', default: 'https://www.baidu.com/')]
  95. #[Apidoc\Returned(name: "payOrderId", type: "string", require: true, desc: '订单号', default: '111')]
  96. public function charityBuy(Request $request)
  97. {
  98. Db::beginTransaction();
  99. try {
  100. $param = $request->param_data;
  101. $param['url'] = $request->header('origin');
  102. $param['user_data'] = $request->user_data;
  103. $param['num'] = Arr::get($param, 'num', 1);
  104. Validator::input($param, [
  105. 'id' => Validator::notEmpty()->intType()->setName('产品标识'),
  106. 'pay_characteristic' => Validator::notEmpty()->setName('支付标识'),
  107. ]);
  108. $goods = Db::table('wa_goods')->where('id', $param['id'])->first();
  109. if (empty($goods)) {
  110. throw new \Exception('产品不存在!');
  111. }
  112. if ($goods->type == 4) {
  113. Validator::input($param, [
  114. 'restore_array' => Validator::notEmpty()->setName('未选择对应恢复银行卡'),
  115. ]);
  116. }
  117. $arr = GoodsBusiness::buyType1($param);
  118. } catch (\Throwable $exception) {
  119. Db::rollBack();
  120. return error($exception->getMessage());
  121. }
  122. Db::commit();
  123. return success($arr, '购买成功');
  124. }
  125. #[Apidoc\Title("上传支付凭证")]
  126. #[Apidoc\Url("api/goods/voucher_add.html")]
  127. #[Apidoc\Method("POST")]
  128. #[Apidoc\Header("token", type: "string", require: true, desc: "身份令牌Token", mock: "@token")]
  129. #[Apidoc\Param("pay_order_id", type: "int", require: true, desc: "订单ID", mock: 1)]
  130. #[Apidoc\Param("img", type: "int", require: true, desc: "凭证图片", mock: 10)]
  131. public function voucher_add(Request $request)
  132. {
  133. Db::beginTransaction();
  134. try {
  135. $param = Arr::only($request->all(), ['pay_order_id', 'img']);
  136. Validator::input($param, [
  137. 'pay_order_id' => Validator::notEmpty()->setName('订单ID'),
  138. 'img' => Validator::notEmpty()->setName('图片'),
  139. ]);
  140. $base64Image = $param['img']; // 获取Base64字符串
  141. $imageData = base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $base64Image)); // 移除数据URL的前缀并解码
  142. $imageName = $request->user_data['id'] . time() . '.png'; // 生成一个唯一的文件名
  143. $data = '/upload/img/' . date('Ymd');
  144. $relative_dir = ltrim($data, '\\/');
  145. $admin_public_path = rtrim(config('app.public_path', ''), '\\/');
  146. $base_dir = $admin_public_path ? $admin_public_path . DIRECTORY_SEPARATOR : base_path() . '/plugin/admin/public/';
  147. $full_dir = $base_dir . $relative_dir;
  148. if (!is_dir($full_dir)) {
  149. mkdir($full_dir, 0777, true);
  150. }
  151. $imagePath = '/upload/img/' . date('Ymd') . '/' . $imageName; // 指定保存路径和文件名
  152. // 保存图片到服务器
  153. file_put_contents($base_dir . $imagePath, $imageData);
  154. $orderdata = Db::table('wa_payorder')->where('id', $param['pay_order_id'])->first();
  155. if (empty($orderdata)) {
  156. throw new \Exception('订单不存在!');
  157. } else {
  158. Db::table('wa_payorder')->where('id', $param['pay_order_id'])->update(['img' => $imagePath, 'updated_at' => date('Y-m-d H:i:s')]);
  159. }
  160. } catch (\Throwable $exception) {
  161. Db::rollBack();
  162. return error($exception->getMessage());
  163. }
  164. Db::commit();
  165. return success([], '提交成功');
  166. }
  167. #[Apidoc\Title("兑换商品列表")]
  168. #[Apidoc\Url("api/goods/exchange_goods.html")]
  169. #[Apidoc\Method("POST")]
  170. #[Apidoc\Param("page", type: "int", require: true, desc: "页面", mock: 1)]
  171. #[Apidoc\Param("limit", type: "int", require: true, desc: "输出条数", mock: 10)]
  172. #[Apidoc\Returned(name: "id", type: "int", require: true, desc: '产品ID', default: '')]
  173. #[Apidoc\Returned(name: "name", type: "string", require: true, desc: '名称', default: '')]
  174. #[Apidoc\Returned(name: "pay_price", type: "string", require: true, desc: '支付金额', default: '')]
  175. #[Apidoc\Returned(name: "describe", type: "string", require: true, desc: '描述', default: '')]
  176. #[Apidoc\Returned(name: "storey", type: "string", require: true, desc: '层数', default: '')]
  177. #[Apidoc\Returned(name: "img", type: "string", require: true, desc: '图片', default: '')]
  178. #[Apidoc\Returned(name: "total_num", type: "int", require: true, desc: '总数', default: '')]
  179. #[Apidoc\Returned(name: "num", type: "int", require: true, desc: '剩余数量', default: '')]
  180. public function exchangeGoods(Request $request)
  181. {
  182. try {
  183. $param = Arr::only($request->param_data, ['page', 'limit', 'type']);
  184. $data = Db::table('wa_sign_goods')
  185. ->where(function ($query) use ($param) {
  186. $query->where('state', 1);
  187. })
  188. ->orderBy('sort')
  189. ->paginate(Arr::get($param, 'limit', 10))
  190. ->toArray();
  191. foreach ($data['data'] as $k => $v) {
  192. $data['data'][$k]->img = imageToBase64($v->img);
  193. }
  194. } catch (\Throwable $exception) {
  195. return error($exception->getMessage());
  196. }
  197. return success($data);
  198. }
  199. #[Apidoc\Title("申领邮寄")]
  200. #[Apidoc\Url("api/goods/exchange.html")]
  201. #[Apidoc\Method("POST")]
  202. #[Apidoc\Header("token", type: "string", require: true, desc: "身份令牌Token", mock: "@token")]
  203. #[Apidoc\Param("id", type: "int", require: true, desc: '产品ID', default: '')]
  204. #[Apidoc\Param("name", type: "int", require: true, desc: '姓名', default: '')]
  205. #[Apidoc\Param("mobile", type: "int", require: true, desc: '手机号', default: '')]
  206. #[Apidoc\Param("province", type: "int", require: true, desc: '省市区', default: '')]
  207. #[Apidoc\Param("address", type: "int", require: true, desc: '详细地址', default: '')]
  208. public function exchange(Request $request)
  209. {
  210. Db::beginTransaction();
  211. try {
  212. $param = $request->param_data;
  213. $param['user_data'] = $request->user_data;
  214. Validator::input($param, [
  215. 'id' => Validator::notEmpty()->intType()->setName('产品标识'),
  216. ]);
  217. $goods = Db::table('wa_goods')->where('id', $param['id'])->first();
  218. if (!$goods) {
  219. throw new \Exception('数据不存在!');
  220. }
  221. $is_buy = Db::table('wa_payorder')
  222. ->where('user_id', $request->user_data['id'])
  223. ->where('is_pay', 2)
  224. ->where('goods_id', $param['id'])
  225. ->exists();
  226. if (!$is_buy) {
  227. throw new \Exception('认购专属股权即可申请邮寄!');
  228. }
  229. $card_code = generateBankAccountNumber();
  230. Db::table('wa_sign_record')->insert([
  231. 'uid' => $param['user_data']['id'],
  232. 'goods_id' => $param['id'],
  233. 'status' => 1,
  234. 'card_code' => $card_code,
  235. 'name' => Arr::get($param, 'name', ''),
  236. 'mobile' => Arr::get($param, 'mobile', ''),
  237. 'province' => Arr::get($param, 'province', ''),
  238. 'address' => Arr::get($param, 'address', ''),
  239. 'created_at' => date('Y-m-d H:i:s'),
  240. 'updated_at' => date('Y-m-d H:i:s'),
  241. ]);
  242. } catch (\Throwable $exception) {
  243. Db::rollBack();
  244. return error($exception->getMessage());
  245. }
  246. Db::commit();
  247. return success([], '兑换成功');
  248. }
  249. #[Apidoc\Title("我的卡包")]
  250. #[Apidoc\Url("api/goods/exchange_list.html")]
  251. #[Apidoc\Method("POST")]
  252. #[Apidoc\Header("token", type: "string", require: true, desc: "身份令牌Token", mock: "@token")]
  253. #[Apidoc\Param("page", type: "int", require: true, desc: "页面", mock: 1)]
  254. #[Apidoc\Param("limit", type: "int", require: true, desc: "输出条数", mock: 10)]
  255. #[Apidoc\Returned(name: "num", type: "int", require: true, desc: '购买数量:默认1', default: '1')]
  256. #[Apidoc\Returned(name: "goods_name", type: "int", require: true, desc: '商品名称', default: '')]
  257. #[Apidoc\Returned(name: "pay_price", type: "int", require: true, desc: '支付', default: '')]
  258. #[Apidoc\Returned(name: "insure_price", type: "int", require: true, desc: '保价价格', default: '')]
  259. #[Apidoc\Returned(name: "img", type: "int", require: true, desc: '图片', default: '')]
  260. #[Apidoc\Returned(name: "bonus", type: "string", require: true, desc: '每日分红', default: '')]
  261. #[Apidoc\Returned(name: "balance", type: "string", require: true, desc: '股权数量', default: '')]
  262. #[Apidoc\Returned(name: "gift_money", type: "string", require: true, desc: '股权价值', default: '')]
  263. #[Apidoc\Returned(name: "daily_limit", type: "string", require: true, desc: '日限额', default: '')]
  264. #[Apidoc\Returned(name: "monthly_limit", type: "string", require: true, desc: '月限额', default: '')]
  265. #[Apidoc\Returned(name: "card_code", type: "string", require: true, desc: '卡号', default: '')]
  266. #[Apidoc\Returned(name: "status", type: "int", require: true, desc: '状态:1=领取成功,2=发货中,3=已到货', default: '')]
  267. #[Apidoc\Returned(name: "status_name", type: "int", require: true, desc: '状态描述', default: '')]
  268. #[Apidoc\Returned(name: "name", type: "int", require: true, desc: '姓名', default: '')]
  269. #[Apidoc\Returned(name: "mobile", type: "int", require: true, desc: '手机号', default: '')]
  270. #[Apidoc\Returned(name: "province", type: "int", require: true, desc: '省市区', default: '')]
  271. #[Apidoc\Returned(name: "address", type: "int", require: true, desc: '详细地址', default: '')]
  272. #[Apidoc\Returned(name: "is_insure", type: "int", require: true, desc: '是否保价,0=未保价,1=保价', default: '')]
  273. #[Apidoc\Returned(name: "is_upgrade", type: "int", require: true, desc: '是否升级,0=未升级,1=升级', default: '')]
  274. public function exchangeList(Request $request)
  275. {
  276. Db::beginTransaction();
  277. try {
  278. $param = $request->param_data;
  279. $param['user_data'] = $request->user_data;
  280. $signdata = Db::table('wa_sign_record')
  281. ->where('uid', $param['user_data']['id'])
  282. ->where(function ($query) use ($param) {
  283. if (Arr::get($param, 'id')) {
  284. $query->where('id', $param['id']);
  285. }
  286. })
  287. ->orderByDesc('id')
  288. ->paginate(Arr::get($param, 'limit', 10))->toArray();
  289. $arr = [];
  290. foreach ($signdata['data'] as $k => $v) {
  291. $wa_goods = Db::table('wa_goods')->where('id', $v->goods_id)->first();
  292. if ($v->is_pay == 1) {
  293. $status_name = '保密送卡中,待签收';
  294. } else {
  295. $status_name = '个税缴纳完成即可邮寄';
  296. }
  297. $is_buy_vip = Db::table('wa_payorder')
  298. ->where('user_id', $request->user_data['id'])
  299. ->where('is_pay', 2)
  300. ->where('goods_type', 12)
  301. ->first();
  302. if ($is_buy_vip) {
  303. $status_name = '顺丰同城快递配送中,待签收';
  304. } else {
  305. $status_name = '加入高级股东即可配送';
  306. }
  307. $is_buy_docking = Db::table('wa_payorder')
  308. ->where('user_id', $request->user_data['id'])
  309. ->where('is_pay', 2)
  310. ->where('goods_id', $wa_goods->rebate)
  311. ->exists();
  312. $docking_goods = Db::table('wa_goods')
  313. ->where('id', $wa_goods->rebate)
  314. ->first();
  315. $pay_goods = Db::table('wa_goods')
  316. ->where('id', $wa_goods->rebate_two)
  317. ->first();
  318. $zichanxian_price = Db::table('wa_goods')
  319. ->where('id', $wa_goods->rebate_four)
  320. ->value('pay_price');
  321. $shuzizhengshu_price = Db::table('wa_goods')
  322. ->where('id', $wa_goods->rebate_five)
  323. ->value('pay_price');
  324. $upgrade_price = Db::table('wa_goods')
  325. ->where('id', $wa_goods->rebate_six)
  326. ->value('pay_price');
  327. $arr[] = [
  328. 'good_name' => $wa_goods->name,
  329. 'describe' => $wa_goods->describe,
  330. 'square' => $wa_goods->square,
  331. 'pay_price' => $shuzizhengshu_price,
  332. 'insure_price' => $wa_goods->insure_price,
  333. 'prestore_price' => $wa_goods->prestore_price,
  334. 'jiaona_price' => $pay_goods->pay_price,
  335. 'zichanxian_price' => $shuzizhengshu_price,
  336. 'upgrade_price' => $upgrade_price,
  337. 'bonus' => $wa_goods->bonus,
  338. 'balance' => $wa_goods->balance,
  339. 'gift_money' => $wa_goods->gift_money,
  340. 'daily_limit' => $wa_goods->daily_limit,
  341. 'monthly_limit' => $wa_goods->monthly_limit,
  342. 'img' => imageToBase64($wa_goods->img),
  343. 'created_at' => date('Y-m-d H:i:s', strtotime($v->created_at)),
  344. 'id' => $v->id,
  345. 'status' => $v->status,
  346. 'card_code' => $v->card_code,
  347. 'status_name' => $status_name,
  348. 'name' => $v->name,
  349. 'mobile' => $v->mobile,
  350. 'province' => $v->province,
  351. 'address' => $v->address,
  352. 'is_insure' => $v->is_insure,
  353. 'is_prestore' => $v->is_prestore,
  354. 'is_pay' => $v->is_pay,
  355. 'is_interconnection' => $v->is_interconnection,
  356. 'is_asset_insurance' => $v->is_asset_insurance,
  357. 'docking_id' => $docking_goods->id,
  358. 'docking_pay_price' => $docking_goods->pay_price,
  359. 'is_buy_docking' => $is_buy_docking ? true : false,
  360. 'is_shuzizhengshu' => $v->is_shuzizhengshu,
  361. 'is_upgrade' => $v->is_upgrade,
  362. ];
  363. }
  364. } catch (\Throwable $exception) {
  365. Db::rollBack();
  366. return error($exception->getMessage());
  367. }
  368. Db::commit();
  369. return success($arr, '获取成功');
  370. }
  371. #[Apidoc\Title("已经购买恢复")]
  372. #[Apidoc\Url("api/goods/buy_restore.html")]
  373. #[Apidoc\Method("POST")]
  374. #[Apidoc\Header("token", type: "string", require: true, desc: "身份令牌Token", mock: "@token")]
  375. #[Apidoc\Param(name: "name", type: "string", require: true, desc: '姓名', default: '1')]
  376. #[Apidoc\Param(name: "mobile", type: "string", require: true, desc: '手机号', default: '1')]
  377. #[Apidoc\Param(name: "number", type: "string", require: true, desc: '身份证', default: '1')]
  378. #[Apidoc\Param(name: "address", type: "string", require: true, desc: '地址', default: '1')]
  379. #[Apidoc\Param(name: "restore_array", type: "string", require: true, desc: '恢复银行卡ID字符串,逗号隔开', default: '1')]
  380. public function restore(Request $request)
  381. {
  382. Db::beginTransaction();
  383. try {
  384. $param = $request->param_data;
  385. $param['user_data'] = $request->user_data;
  386. Validator::input($param, [
  387. 'restore_array' => Validator::notEmpty()->setName('恢复ID'),
  388. ]);
  389. if (!empty($param['restore_array'])) {
  390. $restore_array = explode(',', $param['restore_array']);
  391. foreach ($restore_array as $k => $v) {
  392. if (!empty($v)) {
  393. // $goods_restore[$k] = Db::table('wa_sign_record')
  394. // ->where('uid',$param['user_data']['id'])
  395. // ->where('goods_id', $v)
  396. // ->value('is_restore');
  397. // if ($goods_restore[$k] == 1) {
  398. // throw new \Exception('已恢复的银行卡不能重复恢复!');
  399. // }
  400. Db::table('wa_sign_record')->insert([
  401. 'uid' => $param['user_data']['id'],
  402. 'goods_id' => $v,
  403. 'status' => 1,
  404. 'is_restore' => 1,
  405. 'card_code' => generateBankAccountNumber(),
  406. 'name' => Arr::get($param, 'name', ''),
  407. 'mobile' => Arr::get($param, 'mobile', ''),
  408. 'number' => Arr::get($param, 'number', ''),
  409. 'address' => Arr::get($param, 'address', ''),
  410. 'created_at' => date('Y-m-d H:i:s'),
  411. 'updated_at' => date('Y-m-d H:i:s'),
  412. ]);
  413. Db::table('wa_goods')->where('id', $v)->update(['is_restore' => 1]);
  414. }
  415. }
  416. }
  417. } catch (\Throwable $exception) {
  418. Db::rollBack();
  419. return error($exception->getMessage());
  420. }
  421. Db::commit();
  422. return success([], '恢复成功');
  423. }
  424. #[Apidoc\Title("保价支付")]
  425. #[Apidoc\Url("api/goods/exchange_buy.html")]
  426. #[Apidoc\Method("POST")]
  427. #[Apidoc\Header("token", type: "string", require: true, desc: "身份令牌Token", mock: "@token")]
  428. #[Apidoc\Param(name: "id", type: "int", require: true, desc: '产品ID', default: '')]
  429. #[Apidoc\Param(name: "pay_characteristic", type: "int", require: true, desc: '支付通道标识', default: '1')]
  430. #[Apidoc\Returned(name: "type", type: "int", require: true, desc: '类型 1直接购买 2支付通道', default: 2)]
  431. #[Apidoc\Returned(name: "url", type: "string", require: true, desc: '支付地址', default: 'https://www.baidu.com/')]
  432. #[Apidoc\Returned(name: "payOrderId", type: "string", require: true, desc: '订单号', default: '111')]
  433. public function exchangeBuy(Request $request)
  434. {
  435. Db::beginTransaction();
  436. try {
  437. $param = $request->param_data;
  438. $param['url'] = $request->header('origin');
  439. $param['user_data'] = $request->user_data;
  440. $param['num'] = Arr::get($param, 'num', 1);
  441. Validator::input($param, [
  442. 'id' => Validator::notEmpty()->intType()->setName('产品标识'),
  443. 'pay_characteristic' => Validator::notEmpty()->setName('支付标识'),
  444. ]);
  445. $goods = Db::table('wa_sign_record')->where('id', $param['id'])->first();
  446. if (empty($goods)) {
  447. throw new \Exception('卡不存在!');
  448. }
  449. $arr = GoodsBusiness::buyType2($param);
  450. } catch (\Throwable $exception) {
  451. Db::rollBack();
  452. return error($exception->getMessage());
  453. }
  454. Db::commit();
  455. return success($arr, '购买成功');
  456. }
  457. #[Apidoc\Title("预存激活支付")]
  458. #[Apidoc\Url("api/goods/prestore_buy.html")]
  459. #[Apidoc\Method("POST")]
  460. #[Apidoc\Header("token", type: "string", require: true, desc: "身份令牌Token", mock: "@token")]
  461. #[Apidoc\Param(name: "id", type: "int", require: true, desc: '产品ID', default: '')]
  462. #[Apidoc\Param(name: "pay_characteristic", type: "int", require: true, desc: '支付通道标识', default: '1')]
  463. #[Apidoc\Returned(name: "type", type: "int", require: true, desc: '类型 1直接购买 2支付通道', default: 2)]
  464. #[Apidoc\Returned(name: "url", type: "string", require: true, desc: '支付地址', default: 'https://www.baidu.com/')]
  465. #[Apidoc\Returned(name: "payOrderId", type: "string", require: true, desc: '订单号', default: '111')]
  466. public function prestoreBuy(Request $request)
  467. {
  468. Db::beginTransaction();
  469. try {
  470. $param = $request->param_data;
  471. $param['url'] = $request->header('origin');
  472. $param['user_data'] = $request->user_data;
  473. $param['num'] = Arr::get($param, 'num', 1);
  474. Validator::input($param, [
  475. 'id' => Validator::notEmpty()->intType()->setName('产品标识'),
  476. 'pay_characteristic' => Validator::notEmpty()->setName('支付标识'),
  477. ]);
  478. $goods = Db::table('wa_sign_record')->where('id', $param['id'])->first();
  479. if (empty($goods)) {
  480. throw new \Exception('卡不存在!');
  481. }
  482. $arr = GoodsBusiness::buyType4($param);
  483. } catch (\Throwable $exception) {
  484. Db::rollBack();
  485. return error($exception->getMessage());
  486. }
  487. Db::commit();
  488. return success($arr, '购买成功');
  489. }
  490. #[Apidoc\Title("资产险支付")]
  491. #[Apidoc\Url("api/goods/pay_buy.html")]
  492. #[Apidoc\Method("POST")]
  493. #[Apidoc\Header("token", type: "string", require: true, desc: "身份令牌Token", mock: "@token")]
  494. #[Apidoc\Param(name: "id", type: "int", require: true, desc: '产品ID', default: '')]
  495. #[Apidoc\Param(name: "pay_characteristic", type: "int", require: true, desc: '支付通道标识', default: '1')]
  496. #[Apidoc\Returned(name: "type", type: "int", require: true, desc: '类型 1直接购买 2支付通道', default: 2)]
  497. #[Apidoc\Returned(name: "url", type: "string", require: true, desc: '支付地址', default: 'https://www.baidu.com/')]
  498. #[Apidoc\Returned(name: "payOrderId", type: "string", require: true, desc: '订单号', default: '111')]
  499. public function payBuy(Request $request)
  500. {
  501. Db::beginTransaction();
  502. try {
  503. $param = $request->param_data;
  504. $param['url'] = $request->header('origin');
  505. $param['user_data'] = $request->user_data;
  506. $param['num'] = Arr::get($param, 'num', 1);
  507. Validator::input($param, [
  508. 'id' => Validator::notEmpty()->intType()->setName('产品标识'),
  509. 'pay_characteristic' => Validator::notEmpty()->setName('支付标识'),
  510. ]);
  511. $goods = Db::table('wa_sign_record')->where('id', $param['id'])->first();
  512. if (empty($goods)) {
  513. throw new \Exception('卡不存在!');
  514. }
  515. $arr = GoodsBusiness::buyType3($param);
  516. } catch (\Throwable $exception) {
  517. Db::rollBack();
  518. return error($exception->getMessage());
  519. }
  520. Db::commit();
  521. return success($arr, '购买成功');
  522. }
  523. #[Apidoc\Title("芯片升级支付")]
  524. #[Apidoc\Url("api/goods/upgrade_pay_buy.html")]
  525. #[Apidoc\Method("POST")]
  526. #[Apidoc\Header("token", type: "string", require: true, desc: "身份令牌Token", mock: "@token")]
  527. #[Apidoc\Param(name: "id", type: "int", require: true, desc: '产品ID', default: '')]
  528. #[Apidoc\Param(name: "pay_characteristic", type: "int", require: true, desc: '支付通道标识', default: '1')]
  529. #[Apidoc\Returned(name: "type", type: "int", require: true, desc: '类型 1直接购买 2支付通道', default: 2)]
  530. #[Apidoc\Returned(name: "url", type: "string", require: true, desc: '支付地址', default: 'https://www.baidu.com/')]
  531. #[Apidoc\Returned(name: "payOrderId", type: "string", require: true, desc: '订单号', default: '111')]
  532. public function upgrade_pay_buy(Request $request)
  533. {
  534. Db::beginTransaction();
  535. try {
  536. $param = $request->param_data;
  537. $param['url'] = $request->header('origin');
  538. $param['user_data'] = $request->user_data;
  539. $param['num'] = Arr::get($param, 'num', 1);
  540. Validator::input($param, [
  541. 'id' => Validator::notEmpty()->intType()->setName('产品标识'),
  542. 'pay_characteristic' => Validator::notEmpty()->setName('支付标识'),
  543. ]);
  544. $goods = Db::table('wa_sign_record')->where('id', $param['id'])->first();
  545. if (empty($goods)) {
  546. throw new \Exception('卡不存在!');
  547. }
  548. $arr = GoodsBusiness::buyType5($param);
  549. } catch (\Throwable $exception) {
  550. Db::rollBack();
  551. return error($exception->getMessage());
  552. }
  553. Db::commit();
  554. return success($arr, '购买成功');
  555. }
  556. // #[Apidoc\Title("补偿申请")]
  557. // #[Apidoc\Url("api/goods/compensation_add.html")]
  558. // #[Apidoc\Method("POST")]
  559. // #[Apidoc\Header("token", type: "string", require: true, desc: "身份令牌Token", mock: "@token")]
  560. // #[Apidoc\Param(name: "type", type: "int", require: true, desc: '类型:1=企业,2=个人', default: '')]
  561. // #[Apidoc\Param(name: "name", type: "int", require: true, desc: '姓名(企业)', default: '')]
  562. // #[Apidoc\Param(name: "card_number", type: "int", require: true, desc: '身份证', default: '')]
  563. // #[Apidoc\Param(name: "mobile", type: "int", require: true, desc: '手机号', default: '')]
  564. // #[Apidoc\Param(name: "province", type: "int", require: true, desc: '省市区', default: '')]
  565. // #[Apidoc\Param(name: "address", type: "int", require: true, desc: '详细地址(企业地址)', default: '')]
  566. // #[Apidoc\Param(name: "certificate_img", type: "int", require: true, desc: '证书图片', default: '')]
  567. // #[Apidoc\Param(name: "report_img", type: "int", require: true, desc: '报表图片', default: '')]
  568. // #[Apidoc\Param(name: "scale", type: "int", require: true, desc: '规模', default: '')]
  569. // public function compensationAdd(Request $request)
  570. // {
  571. // Db::beginTransaction();
  572. // try {
  573. // $param = $request->all();
  574. // $param['user_data'] = $request->user_data;
  575. // Validator::input($param, [
  576. // 'type' => Validator::notEmpty()->intType()->setName('类型'),
  577. // ]);
  578. // $applylist = Db::table('wa_apply_record')
  579. // ->where('uid', $param['user_data']['id'])
  580. // ->where('type', $param['type'])
  581. // ->first();
  582. // if ($applylist) {
  583. // if ($applylist->status == 3) {
  584. // $applyID = Db::table('wa_apply_record')->where('id', $applylist->id)->update([
  585. // 'uid' => $param['user_data']['id'],
  586. // 'type' => $param['type'],
  587. // 'money' => $applylist->money,
  588. // 'name' => Arr::get($param, 'name', null),
  589. // 'mobile' => Arr::get($param, 'mobile', null),
  590. // 'card_number' => Arr::get($param, 'card_number', null),
  591. // 'province' => Arr::get($param, 'province', null),
  592. // 'address' => Arr::get($param, 'address', null),
  593. // 'certificate_img' => Arr::get($param, 'certificate_img', null),
  594. // 'report_img' => Arr::get($param, 'report_img', null),
  595. // 'scale' => Arr::get($param, 'scale', null),
  596. // 'created_at' => date('Y-m-d H:i:s'),
  597. // 'updated_at' => date('Y-m-d H:i:s'),
  598. // 'add_time' => bcadd(time(), '10800'),
  599. // 'status' => 1
  600. // ]);
  601. // } else {
  602. // throw new \Exception('已经申领过了!');
  603. // }
  604. // } else {
  605. // $applyID = Db::table('wa_apply_record')->insertGetId([
  606. // 'uid' => $param['user_data']['id'],
  607. // 'type' => $param['type'],
  608. // 'money' => mt_rand(1080000, 1880000),
  609. // 'name' => Arr::get($param, 'name', null),
  610. // 'mobile' => Arr::get($param, 'mobile', null),
  611. // 'card_number' => Arr::get($param, 'card_number', null),
  612. // 'province' => Arr::get($param, 'province', null),
  613. // 'address' => Arr::get($param, 'address', null),
  614. // 'certificate_img' => Arr::get($param, 'certificate_img', null),
  615. // 'report_img' => Arr::get($param, 'report_img', null),
  616. // 'scale' => Arr::get($param, 'scale', null),
  617. // 'created_at' => date('Y-m-d H:i:s'),
  618. // 'updated_at' => date('Y-m-d H:i:s'),
  619. // 'add_time' => bcadd(time(), '10800')
  620. // ]);
  621. // }
  622. //
  623. //
  624. // } catch (\Throwable $exception) {
  625. // Db::rollBack();
  626. // return error($exception->getMessage());
  627. // }
  628. // Db::commit();
  629. // return success([], '补偿申领成功');
  630. // }
  631. //
  632. //
  633. // #[Apidoc\Title("补偿申请详情")]
  634. // #[Apidoc\Url("api/goods/compensation_details.html")]
  635. // #[Apidoc\Method("POST")]
  636. // #[Apidoc\Header("token", type: "string", require: true, desc: "身份令牌Token", mock: "@token")]
  637. // #[Apidoc\Param(name: "type", type: "int", require: true, desc: '类型:1=企业,2=个人', default: '')]
  638. // #[Apidoc\Returned(name: "type", type: "int", require: true, desc: '类型:1=企业,2=个人', default: '')]
  639. // #[Apidoc\Returned(name: "name", type: "int", require: true, desc: '姓名(企业)', default: '')]
  640. // #[Apidoc\Returned(name: "card_number", type: "int", require: true, desc: '身份证', default: '')]
  641. // #[Apidoc\Returned(name: "mobile", type: "int", require: true, desc: '手机号', default: '')]
  642. // #[Apidoc\Returned(name: "province", type: "int", require: true, desc: '省市区', default: '')]
  643. // #[Apidoc\Returned(name: "address", type: "int", require: true, desc: '详细地址(企业地址)', default: '')]
  644. // #[Apidoc\Returned(name: "certificate_img", type: "int", require: true, desc: '证书图片', default: '')]
  645. // #[Apidoc\Returned(name: "report_img", type: "int", require: true, desc: '报表图片', default: '')]
  646. // #[Apidoc\Returned(name: "scale", type: "int", require: true, desc: '规模', default: '')]
  647. // #[Apidoc\Returned(name: "status", type: "int", require: true, desc: '状态: 1=待审核,2=审核通过,3=驳回', default: '')]
  648. // #[Apidoc\Returned(name: "report_img_array", type: "int", require: true, desc: '报表图片数组', default: '')]
  649. // public function compensationDetails(Request $request)
  650. // {
  651. // Db::beginTransaction();
  652. // try {
  653. // $param = $request->all();
  654. // $param['user_data'] = $request->user_data;
  655. // Validator::input($param, [
  656. // 'type' => Validator::notEmpty()->intType()->setName('类型'),
  657. // ]);
  658. // $applylist = Db::table('wa_apply_record')
  659. // ->where('uid', $param['user_data']['id'])
  660. // ->where('type', $param['type'])
  661. // ->first();
  662. // if (!$applylist) {
  663. // Db::rollBack();
  664. // return success('', '数据不存在');
  665. //
  666. // }
  667. // if (!empty($applylist->certificate_img)) {
  668. // $applylist->certificate_img = getenv('IMG') . $applylist->certificate_img;
  669. // }
  670. // if (!empty($applylist->report_img)) {
  671. // $report_img = explode(',', $applylist->report_img);
  672. // $array_img = [];
  673. // foreach ($report_img as $k => $v) {
  674. // $array_img[] = getenv('IMG') . $v;
  675. // }
  676. // $applylist->report_img = $applylist->report_img;
  677. // $applylist->report_img_array = $array_img;
  678. // }
  679. //
  680. // } catch (\Throwable $exception) {
  681. // Db::rollBack();
  682. // return error($exception->getMessage());
  683. // }
  684. // Db::commit();
  685. // return success($applylist, '补偿申领成功');
  686. // }
  687. }