MyGoodController.php 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243
  1. <?php
  2. namespace plugin\admin\app\controller;
  3. use app\api\repositories\PayRepositories;
  4. use app\business\GoodsBusiness;
  5. use app\business\PayorderBusiness;
  6. use Illuminate\Support\Arr;
  7. use plugin\admin\app\model\Good;
  8. use plugin\admin\app\model\Payorder;
  9. use plugin\admin\app\model\User;
  10. use plugin\admin\app\model\Withdraw;
  11. use plugin\admin\app\repositories\WithdrawRepositories;
  12. use Respect\Validation\Validator;
  13. use support\Db;
  14. use support\Log;
  15. use support\Request;
  16. use support\Response;
  17. use plugin\admin\app\model\MyGood;
  18. use plugin\admin\app\controller\Crud;
  19. use support\exception\BusinessException;
  20. /**
  21. * 会员产品
  22. */
  23. class MyGoodController extends Crud
  24. {
  25. /**
  26. * @var MyGood
  27. */
  28. protected $model = null;
  29. /**
  30. * 构造函数
  31. * @return void
  32. */
  33. public function __construct()
  34. {
  35. $this->model = new MyGood;
  36. }
  37. /**
  38. * 浏览
  39. * @return Response
  40. */
  41. public function index(): Response
  42. {
  43. return view('my-good/index');
  44. }
  45. /**手动购买
  46. * @param Request $request
  47. * @return Response
  48. */
  49. public function insert(Request $request): Response
  50. {
  51. if ($request->isAjax()) {
  52. $param = $request->all();
  53. Db::beginTransaction();
  54. try {
  55. $userData = User::query()->where('mobile', $param['mobile'])->first();
  56. if (empty($userData)) {
  57. throw new \Exception('会员不存在');
  58. }
  59. $goodsData = Good::query()->where('id', $param['goods_id'])->first();
  60. if (empty($goodsData)) {
  61. throw new \Exception('产品不存在');
  62. }
  63. $payorderId = PayorderBusiness::orderAdd([
  64. 'id' => $param['goods_id'],
  65. 'pay_characteristic' => 99999,
  66. 'user_data' => [
  67. 'id' => $userData->id
  68. ],
  69. 'num' => 1,
  70. ]);
  71. $payorder = Db::table('wa_payorder')->where('id', $payorderId)->first();
  72. PayorderBusiness::payorderSave(collect($payorder)->toArray());
  73. } catch (\Throwable $exception) {
  74. Db::rollBack();
  75. return $this->fail($exception->getMessage());
  76. }
  77. Db::commit();
  78. return $this->success();
  79. }
  80. return view('my-good/insert');
  81. }
  82. public function select(Request $request): Response
  83. {
  84. $param = $request->all();
  85. $data = MyGood::query()->where(function ($query) use ($param) {
  86. if (is_numeric(Arr::get($param, 'money.1')) && is_numeric(Arr::get($param, 'money.0'))) {
  87. $query->whereBetween('money', [$param['money'][0], $param['money'][1]]);
  88. } elseif (is_numeric(Arr::get($param, 'money.0'))) {
  89. $query->where('money', '>=', $param['money'][0]);
  90. } elseif (is_numeric(Arr::get($param, 'money.1'))) {
  91. $query->where('money', '<=', $param['money'][1]);
  92. }
  93. if (Arr::get($param, 'created_at.0') && Arr::get($param, 'created_at.1')) {
  94. $query->whereBetween('created_at', [$param['created_at'][0], $param['created_at'][1]]);
  95. } elseif (Arr::get($param, 'created_at.0')) {
  96. $query->where('created_at', '>=', $param['created_at'][0]);
  97. } elseif (Arr::get($param, 'created_at.1')) {
  98. $query->where('created_at', '<=', $param['created_at'][1]);
  99. }
  100. // if(Arr::get($param,'rebate.0') && Arr::get($param,'rebate.1')){
  101. // $query->whereBetween('bonus',[$param['rebate'][0],$param['rebate'][1]]);
  102. // }elseif (Arr::get($param,'rebate.0')){
  103. // $query->where('bonus','>=',$param['rebate'][0]);
  104. // }elseif (Arr::get($param,'rebate.1')){
  105. // $query->where('bonus','<=',$param['rebate'][1]);
  106. // }
  107. })->with('userData:id,name,mobile')
  108. ->whereExists(function ($query) use ($param) {
  109. $query->from('wa_users')->whereRaw('wa_users.id=wa_my_goods.user_id');
  110. if (Arr::get($param, 'user_name')) {
  111. $query->where('name', 'like', '%' . $param['user_name'] . '%');
  112. }
  113. if (Arr::get($param, 'user_mobile')) {
  114. $query->where('mobile', 'like', '%' . $param['user_mobile'] . '%');
  115. }
  116. });
  117. if (Arr::get($param, 'field')) {
  118. $order = 'asc';
  119. if (Arr::get($param, 'order')) {
  120. $order = 'desc';
  121. }
  122. $data = $data->orderBy($param['field'], $order);
  123. } else {
  124. $data = $data->orderByDesc('id');
  125. }
  126. $data = $data->paginate(Arr::get($param, 'limit', 10))->toArray();
  127. foreach ($data['data'] as $k => $v) {
  128. $data['data'][$k]['user_name'] = Arr::get($v['user_data'], 'name');
  129. $data['data'][$k]['user_mobile'] = Arr::get($v['user_data'], 'mobile');
  130. if($v['status']==1){
  131. $data['data'][$k]['status_name'] = '等待邮寄';
  132. }elseif ($v['status']==2){
  133. $data['data'][$k]['status_name'] = '已发货';
  134. }elseif ($v['status']==2){
  135. $data['data'][$k]['status_name'] = '已发货';
  136. }else{
  137. $data['data'][$k]['status_name'] = '已发货';
  138. }
  139. }
  140. return json(['code' => 0, 'data' => $data['data'], 'msg' => 'ok', 'count' => $data['total']]);
  141. }
  142. /**更换产品
  143. * @param Request $request
  144. * @return Response
  145. */
  146. public function edit_shop(Request $request): Response
  147. {
  148. if ($request->isAjax()) {
  149. $param = $request->all();
  150. Db::beginTransaction();
  151. try {
  152. Validator::input($param, [
  153. 'id' => Validator::notEmpty()->setName('非法操作'),
  154. 'goods_id' => Validator::notEmpty()->setName('非法操作,识别码2'),
  155. 'redemption' => Validator::notEmpty()->setName('换购产品'),
  156. ]);
  157. if ($param['goods_id'] == $param['redemption']) {
  158. throw new \Exception('换购产品和当前产品一致,请更换需要换购的产品!');
  159. }
  160. $data = MyGood::query()->where('id', $param['id'])->first();
  161. if (empty($data)) {
  162. throw new \Exception('当前订单不存在!');
  163. }
  164. $goodsData = Good::query()->where('id', $param['redemption'])->first();
  165. if (empty($goodsData)) {
  166. throw new \Exception('更换产品不存在!');
  167. }
  168. MyGood::query()->where('id', $param['id'])->update([
  169. 'goods_id' => $param['redemption'],
  170. 'o_goods_id' => $param['goods_id'],
  171. ]);
  172. } catch (\Throwable $exception) {
  173. Db::rollBack();
  174. return $this->fail($exception->getMessage());
  175. }
  176. Db::commit();
  177. return $this->success();
  178. }
  179. return view('my-good/edit_shop');
  180. }
  181. /** 批量通过
  182. * @param Request $request
  183. * @return Response
  184. */
  185. public function pass(Request $request): Response
  186. {
  187. try {
  188. $param = $request->all();
  189. Validator::input($param, [
  190. 'id' => Validator::notEmpty()->ArrayType()->setName('标识'),
  191. ]);
  192. $withdrawModel = MyGood::query();
  193. foreach ($param['id'] as $k => $v) {
  194. Db::beginTransaction();
  195. try {
  196. $has = (clone $withdrawModel)->where('id', $v)->lock(true)->first();
  197. if (empty($has)) {
  198. throw new \Exception('编码为:【' . $v . '】订单不存在!');
  199. }
  200. if ($has->status != 1) {
  201. throw new \Exception('编码为:【' . $v . '】已处理请不要重复提交!');
  202. }
  203. if ($has && $has->status == 1) {
  204. $has->status = 3;
  205. $has->updated_at = date('Y-m-d H:i:s');
  206. $has->save();
  207. } else {
  208. throw new \Exception('编码为:【' . $v . '】已处理请不要重复提交!');
  209. }
  210. Db::commit();
  211. } catch (\Throwable $exception) {
  212. Db::rollBack();
  213. throw new \Exception($exception->getMessage());
  214. }
  215. }
  216. } catch (\Throwable $exception) {
  217. return $this->fail($exception->getMessage());
  218. }
  219. return $this->success();
  220. }
  221. }