| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334 |
- <?php
- namespace app\controller;
- use app\business\GoodsBusiness;
- use app\business\StreamBusiness;
- use Illuminate\Support\Arr;
- use Respect\Validation\Validator;
- use support\Db;
- use support\Request;
- use hg\apidoc\annotation as Apidoc;
- #[Apidoc\Title("项目管理")]
- #[Apidoc\Group("Goods")]
- #[Apidoc\Sort(3)]
- class GoodsController
- {
- #[Apidoc\Title("列表")]
- #[Apidoc\Url("api/goods/charity.html")]
- #[Apidoc\Method("POST")]
- #[Apidoc\Param("page", type: "int", require: true, desc: "页面", mock: 1)]
- #[Apidoc\Param("limit", type: "int", require: true, desc: "输出条数", mock: 10)]
- #[Apidoc\Param("type", type: "int", require: true, desc: "类型:1=国债债券,2=股权分红", mock: 1)]
- #[Apidoc\Returned(name: "id", type: "int", require: true, desc: '产品ID', default: '')]
- #[Apidoc\Returned(name: "name", type: "string", require: true, desc: '名称', default: '')]
- #[Apidoc\Returned(name: "pay_price", type: "string", require: true, desc: '支付金额', default: '')]
- #[Apidoc\Returned(name: "bonus", type: "string", require: true, desc: '日收益', default: '')]
- #[Apidoc\Returned(name: "balance", type: "string", require: true, desc: '赠送华润银联卡余额', default: '')]
- #[Apidoc\Returned(name: "bl", type: "string", require: true, desc: '日利率', default: '')]
- #[Apidoc\Returned(name: "img", type: "string", require: true, desc: '图片', default: '')]
- #[Apidoc\Returned(name: "total_num", type: "int", require: true, desc: '总数', default: '')]
- #[Apidoc\Returned(name: "num", type: "int", require: true, desc: '剩余数量', default: '')]
- public function charity(Request $request)
- {
- Db::beginTransaction();
- try {
- $param = $request->param_data;
- Validator::input($param, [
- 'type' => Validator::notEmpty()->intType()->setName('类型'),
- ]);
- $data = Db::table('wa_goods')
- ->where(function ($query) use ($param) {
- $query->where('state', 1);
- $query->where('type', Arr::get($param, 'type', 1));
- })
- ->orderBy('sort')
- ->paginate(Arr::get($param, 'limit', 10), ['*'], 'page', Arr::get($param, 'page'))
- ->toArray();
- foreach ($data['data'] as $k => $v) {
- $data['data'][$k]->img = imageToBase64($v->img);
- }
- } catch (\Throwable $exception) {
- Db::rollBack();
- return error($exception->getMessage());
- }
- Db::commit();
- return success($data);
- }
- #[Apidoc\Title("支付")]
- #[Apidoc\Url("api/goods/charity_buy.html")]
- #[Apidoc\Method("POST")]
- #[Apidoc\Header("token", type: "string", require: true, desc: "身份令牌Token", mock: "@token")]
- #[Apidoc\Param(name: "id", type: "int", require: true, desc: '产品ID', default: '')]
- #[Apidoc\Param(name: "pay_characteristic", type: "int", require: true, desc: '支付通道标识', default: '1')]
- #[Apidoc\Param(name: "num", type: "int", require: true, desc: '购买数量:默认1', default: '1')]
- #[Apidoc\Returned(name: "type", type: "int", require: true, desc: '类型 1直接购买 2支付通道', default: 2)]
- #[Apidoc\Returned(name: "url", type: "string", require: true, desc: '支付地址', default: 'https://www.baidu.com/')]
- #[Apidoc\Returned(name: "payOrderId", type: "string", require: true, desc: '订单号', default: '111')]
- public function charityBuy(Request $request)
- {
- Db::beginTransaction();
- try {
- $param = $request->param_data;
- $param['url'] = $request->header('origin');
- $param['user_data'] = $request->user_data;
- $param['num'] = Arr::get($param, 'num', 1);
- Validator::input($param, [
- 'id' => Validator::notEmpty()->intType()->setName('产品标识'),
- 'pay_characteristic' => Validator::notEmpty()->setName('支付标识'),
- ]);
- $goods = Db::table('wa_goods')->where('id', $param['id'])->first();
- if (empty($goods)) {
- throw new \Exception('产品不存在!');
- }
- $arr = GoodsBusiness::buyType1($param);
- } catch (\Throwable $exception) {
- Db::rollBack();
- return error($exception->getMessage());
- }
- Db::commit();
- return success($arr, '购买成功');
- }
- // #[Apidoc\Title("国债债券")]
- // #[Apidoc\Url("api/goods/nationalDebty_buy.html")]
- // #[Apidoc\Method("POST")]
- // #[Apidoc\Header("token", type: "string", require: true, desc: "身份令牌Token", mock: "@token")]
- // #[Apidoc\Param(name: "id", type: "int", require: true, desc: '产品ID', default: '')]
- // public function nationalDebty_buy(Request $request)
- // {
- // Db::beginTransaction();
- // try {
- // $param = $request->param_data;
- // $param['user_data'] = $request->user_data;
- // $param['num'] = Arr::get($param, 'num', 1);
- // Validator::input($param, [
- // 'id' => Validator::notEmpty()->intType()->setName('产品标识'),
- // ]);
- // $goods = Db::table('wa_goods')->where('id', $param['id'])->first();
- // if (empty($goods)) {
- // throw new \Exception('产品不存在!');
- // }
- // $arr = GoodsBusiness::buyType2($param);
- // } catch (\Throwable $exception) {
- // Db::rollBack();
- // return error($exception->getMessage());
- // }
- // Db::commit();
- // return success($arr, '购买成功');
- // }
- // #[Apidoc\Title("商品列表")]
- // #[Apidoc\Url("api/goods/exchange_goods.html")]
- // #[Apidoc\Method("POST")]
- // #[Apidoc\Param("page", type: "int", require: true, desc: "页面", mock: 1)]
- // #[Apidoc\Param("limit", type: "int", require: true, desc: "输出条数", mock: 10)]
- // #[Apidoc\Param("type", type: "int", require: true, desc: '类型:不传查全部 1=手饰,2=小产品,3=房产', mock: '')]
- // #[Apidoc\Returned(name: "id", type: "int", require: true, desc: '产品ID', default: '')]
- // #[Apidoc\Returned(name: "name", type: "string", require: true, desc: '名称', default: '')]
- // #[Apidoc\Returned(name: "pay_price", type: "string", require: true, desc: '支付金额', default: '')]
- // #[Apidoc\Returned(name: "describe", type: "string", require: true, desc: '描述', default: '')]
- // #[Apidoc\Returned(name: "storey", type: "string", require: true, desc: '平方', default: '138m²')]
- // #[Apidoc\Returned(name: "img", type: "string", require: true, desc: '图片', default: '')]
- // #[Apidoc\Returned(name: "total_num", type: "int", require: true, desc: '总数', default: '')]
- // #[Apidoc\Returned(name: "num", type: "int", require: true, desc: '剩余数量', default: '')]
- // #[Apidoc\Returned(name: "type", type: "int", require: true, desc: '类型:1=国产电器类,2=电子设备类,3=国产新能源汽车类', default: '')]
- // public function exchangeGoods(Request $request)
- // {
- // Db::beginTransaction();
- // try {
- // $param = Arr::only($request->param_data, ['page', 'limit', 'type']);
- // $data = Db::table('wa_sign_goods')
- // ->where('state', 1)
- // ->where(function ($query) use ($param) {
- // if (Arr::get($param, 'type')) {
- // $query->where('type', $param['type']);
- // }
- // })
- // ->orderBy('sort')
- // ->paginate(Arr::get($param, 'limit', 10), ['*'], 'page', Arr::get($param, 'page'))
- // ->toArray();
- // foreach ($data['data'] as $k => $v) {
- // $data['data'][$k]->img = imageToBase64($v->img);
- // }
- // } catch (\Throwable $exception) {
- // Db::rollBack();
- // return error($exception->getMessage());
- // }
- // Db::commit();
- // return success($data);
- // }
- //
- // #[Apidoc\Title("兑换")]
- // #[Apidoc\Url("api/goods/exchange.html")]
- // #[Apidoc\Method("POST")]
- // #[Apidoc\Header("token", type: "string", require: true, desc: "身份令牌Token", mock: "@token")]
- // #[Apidoc\Param("id", type: "int", require: true, desc: '产品ID', default: '')]
- // #[Apidoc\Param("num", type: "int", require: true, desc: '购买数量:默认1', default: '1')]
- // #[Apidoc\Param("name", type: "int", require: true, desc: '姓名', default: '')]
- // #[Apidoc\Param("mobile", type: "int", require: true, desc: '手机号', default: '')]
- // #[Apidoc\Param("address", type: "int", require: true, desc: '详细地址', default: '')]
- // public function exchange(Request $request)
- // {
- // Db::beginTransaction();
- // try {
- // $param = $request->param_data;
- // $param['user_data'] = $request->user_data;
- // $param['num'] = Arr::get($param, 'num', 1);
- // Validator::input($param, [
- // 'id' => Validator::notEmpty()->intType()->setName('产品标识'),
- // ]);
- // $goods = Db::table('wa_sign_goods')->where('id', $param['id'])->first();
- // if (!$goods) {
- // throw new \Exception('数据不存在!');
- // }
- // $price_money = bcmul($goods->pay_price, $param['num']);
- // if ($param['user_data']['money_one'] < $price_money) {
- // throw new \Exception('华润财富余额不足!');
- // }
- // if ($goods->num <= $param['num']) {
- // throw new \Exception('当前商品兑换数量不足!');
- // }
- // if (!empty($price_money)) {
- // Db::table('wa_sign_record')->insert([
- // 'uid' => $param['user_data']['id'],
- // 'goods_id' => $param['id'],
- // 'num' => $param['num'],
- // 'money' => $price_money,
- // 'status' => 1,
- // 'order_no' => date('YmdHis') . mt_rand(1000, 9999),
- // 'name' => Arr::get($param, 'name', ''),
- // 'mobile' => Arr::get($param, 'mobile', ''),
- // 'address' => Arr::get($param, 'address', ''),
- // 'created_at' => date('Y-m-d H:i:s'),
- // 'updated_at' => date('Y-m-d H:i:s'),
- // ]);
- // StreamBusiness::delStream($param['user_data']['id'], $price_money, streamType16, moldType2, moldTypefild2, $param['id']);
- // }
- // Db::table('wa_sign_goods')->where('id', $param['id'])->decrement('num', $param['num']);
- //
- // } catch (\Throwable $exception) {
- // Db::rollBack();
- // return error($exception->getMessage());
- // }
- // Db::commit();
- // return success([], '兑换成功');
- // }
- //
- //
- // #[Apidoc\Title("兑换记录(发货记录)")]
- // #[Apidoc\Url("api/goods/exchange_list.html")]
- // #[Apidoc\Method("POST")]
- // #[Apidoc\Header("token", type: "string", require: true, desc: "身份令牌Token", mock: "@token")]
- // #[Apidoc\Param("page", type: "int", require: true, desc: "页面", mock: 1)]
- // #[Apidoc\Param("limit", type: "int", require: true, desc: "输出条数", mock: 10)]
- // #[Apidoc\Returned(name: "num", type: "int", require: true, desc: '购买数量:默认1', default: '1')]
- // #[Apidoc\Returned(name: "goods_name", type: "int", require: true, desc: '商品名称', default: '')]
- // #[Apidoc\Returned(name: "pay_price", type: "int", require: true, desc: '支付积分', default: '')]
- // #[Apidoc\Returned(name: "img", type: "int", require: true, desc: '图片', default: '')]
- // #[Apidoc\Returned(name: "money", type: "int", require: true, desc: '总支付', default: '')]
- // #[Apidoc\Returned(name: "num", type: "int", require: true, desc: '兑换数量', default: '')]
- // #[Apidoc\Returned(name: "status", type: "int", require: true, desc: '状态:1=领取成功,2=发货中,3=已到货', default: '')]
- // #[Apidoc\Returned(name: "status_name", type: "int", require: true, desc: '状态描述', default: '')]
- // #[Apidoc\Returned(name: "order_no", type: "int", require: true, desc: '订单号', default: '')]
- // #[Apidoc\Returned(name: "name", type: "int", require: true, desc: '姓名', default: '')]
- // #[Apidoc\Returned(name: "mobile", type: "int", require: true, desc: '手机号', default: '')]
- // #[Apidoc\Returned(name: "province", type: "int", require: true, desc: '省市区', default: '')]
- // #[Apidoc\Returned(name: "address", type: "int", require: true, desc: '详细地址', default: '')]
- // #[Apidoc\Returned(name: "type", type: "int", require: true, desc: '类型: 1=手饰,2=小产品,3=房产', mock: '')]
- // public function exchangeList(Request $request)
- // {
- // Db::beginTransaction();
- // try {
- // $param = $request->param_data;
- // $param['user_data'] = $request->user_data;
- //
- // $signdata = Db::table('wa_sign_record')
- // ->where('uid', $param['user_data']['id'])
- // ->orderByDesc('id')
- // ->paginate(Arr::get($param, 'limit', 10))->toArray();
- // $arr = [];
- // foreach ($signdata['data'] as $k => $v) {
- // $wa_goods = Db::table('wa_sign_goods')->where('id', $v->goods_id)->first();
- // if ($v->status == 1) {
- // $status_name = '调货中,请耐心等待';
- // } elseif ($v->status == 2) {
- // $status_name = '发货中';
- // } elseif ($v->status == 3) {
- // $status_name = '已到货';
- // } else {
- // $status_name = '请耐心等待';
- // }
- // $arr[] = [
- // 'good_name' => $wa_goods->name,
- // 'goods_id' => $v->goods_id,
- // 'pay_price' => $wa_goods->pay_price,
- // 'type' => $wa_goods->type,
- // 'img' => imageToBase64($wa_goods->img),
- // 'created_at' => date('Y-m-d H:i:s', strtotime($v->created_at)),
- // 'id' => $v->id,
- // 'num' => $v->num,
- // 'money' => $v->money,
- // 'status' => $v->status,
- // 'status_name' => $status_name,
- // 'order_no' => $v->order_no,
- // 'name' => $v->name,
- // 'mobile' => $v->mobile,
- // 'address' => $v->address,
- // ];
- // }
- // } catch (\Throwable $exception) {
- // Db::rollBack();
- // return error($exception->getMessage());
- // }
- // Db::commit();
- // return success($arr, '获取成功');
- // }
- //
- // #[Apidoc\Title("兑换商品地址编辑")]
- // #[Apidoc\Url("api/goods/edid_address.html")]
- // #[Apidoc\Method("POST")]
- // #[Apidoc\Header("token", type: "string", require: true, desc: "身份令牌Token", mock: "@token")]
- // #[Apidoc\Param("id", type: "int", require: true, desc: "ID", mock: "")]
- // #[Apidoc\Param("name", type: "string", require: true, desc: "姓名", mock: "")]
- // #[Apidoc\Param("mobile", type: "string", require: true, desc: "手机号", mock: "")]
- // #[Apidoc\Param("number", type: "string", require: true, desc: "身份证", mock: "")]
- // #[Apidoc\Param("address", type: "string", require: true, desc: "地址", mock: "")]
- // public function edid_address(Request $request)
- // {
- // $param = $request->param_data;
- // $param['user_data'] = $request->user_data;
- // Db::beginTransaction();
- // try {
- // Validator::input($param, [
- // 'id' => Validator::notEmpty()->setName('id'),
- // ]);
- // $datalist = Db::table('wa_sign_record')
- // ->where('uid', $param['user_data']['id'])
- // ->where('id', $param['id'])
- // ->first();
- // if (!$datalist) {
- // throw new \Exception('非法操作');
- // }
- // Db::table('wa_sign_record')->where('id', $datalist->id)->update([
- // 'mobile' => Arr::get($param, 'mobile', $param['user_data']['mobile']),
- // 'name' => Arr::get($param, 'name', $datalist->name),
- // 'address' => Arr::get($param, 'address', $datalist->address),
- // ]);
- //
- // } catch (\Throwable $exception) {
- // Db::rollBack();
- // return error($exception->getMessage());
- // }
- // Db::commit();
- // return success([], '操作成功');
- //
- // }
- }
|