MyGoodController.php 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  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' => $param['num'],
  70. 'name' => Arr::get($param, 'name', null),
  71. 'mobile' => Arr::get($param, 'mobile', null),
  72. 'number' => Arr::get($param, 'number', null),
  73. 'address' => Arr::get($param, 'address', null),
  74. ]);
  75. $payorder = Db::table('wa_payorder')->where('id', $payorderId)->first();
  76. PayorderBusiness::payorderSave(collect($payorder)->toArray());
  77. } catch (\Throwable $exception) {
  78. Db::rollBack();
  79. return $this->fail($exception->getMessage());
  80. }
  81. Db::commit();
  82. return $this->success();
  83. }
  84. return view('my-good/insert');
  85. }
  86. public function select(Request $request): Response
  87. {
  88. $param = $request->all();
  89. $data = MyGood::query()->where(function ($query) use ($param) {
  90. if (is_numeric(Arr::get($param, 'money.1')) && is_numeric(Arr::get($param, 'money.0'))) {
  91. $query->whereBetween('money', [$param['money'][0], $param['money'][1]]);
  92. } elseif (is_numeric(Arr::get($param, 'money.0'))) {
  93. $query->where('money', '>=', $param['money'][0]);
  94. } elseif (is_numeric(Arr::get($param, 'money.1'))) {
  95. $query->where('money', '<=', $param['money'][1]);
  96. }
  97. if (Arr::get($param, 'created_at.0') && Arr::get($param, 'created_at.1')) {
  98. $query->whereBetween('created_at', [$param['created_at'][0], $param['created_at'][1]]);
  99. } elseif (Arr::get($param, 'created_at.0')) {
  100. $query->where('created_at', '>=', $param['created_at'][0]);
  101. } elseif (Arr::get($param, 'created_at.1')) {
  102. $query->where('created_at', '<=', $param['created_at'][1]);
  103. }
  104. // if(Arr::get($param,'rebate.0') && Arr::get($param,'rebate.1')){
  105. // $query->whereBetween('bonus',[$param['rebate'][0],$param['rebate'][1]]);
  106. // }elseif (Arr::get($param,'rebate.0')){
  107. // $query->where('bonus','>=',$param['rebate'][0]);
  108. // }elseif (Arr::get($param,'rebate.1')){
  109. // $query->where('bonus','<=',$param['rebate'][1]);
  110. // }
  111. })->with('userData:id,name,mobile')
  112. ->whereExists(function ($query) use ($param) {
  113. $query->from('wa_users')->whereRaw('wa_users.id=wa_my_goods.user_id');
  114. if (Arr::get($param, 'user_name')) {
  115. $query->where('name', 'like', '%' . $param['user_name'] . '%');
  116. }
  117. if (Arr::get($param, 'user_mobile')) {
  118. $query->where('mobile', 'like', '%' . $param['user_mobile'] . '%');
  119. }
  120. });
  121. if (Arr::get($param, 'field')) {
  122. $order = 'asc';
  123. if (Arr::get($param, 'order')) {
  124. $order = 'desc';
  125. }
  126. $data = $data->orderBy($param['field'], $order);
  127. } else {
  128. $data = $data->orderByDesc('id');
  129. }
  130. $data = $data->paginate(Arr::get($param, 'limit', 10))->toArray();
  131. foreach ($data['data'] as $k => $v) {
  132. $data['data'][$k]['user_name'] = Arr::get($v['user_data'], 'name');
  133. $data['data'][$k]['user_mobile'] = Arr::get($v['user_data'], 'mobile');
  134. if($v['status']==1){
  135. $data['data'][$k]['status_name'] = '等待邮寄';
  136. }elseif ($v['status']==2){
  137. $data['data'][$k]['status_name'] = '已发货';
  138. }elseif ($v['status']==2){
  139. $data['data'][$k]['status_name'] = '已发货';
  140. }else{
  141. $data['data'][$k]['status_name'] = '已发货';
  142. }
  143. }
  144. return json(['code' => 0, 'data' => $data['data'], 'msg' => 'ok', 'count' => $data['total']]);
  145. }
  146. /**更换产品
  147. * @param Request $request
  148. * @return Response
  149. */
  150. public function edit_shop(Request $request): Response
  151. {
  152. if ($request->isAjax()) {
  153. $param = $request->all();
  154. Db::beginTransaction();
  155. try {
  156. Validator::input($param, [
  157. 'id' => Validator::notEmpty()->setName('非法操作'),
  158. 'goods_id' => Validator::notEmpty()->setName('非法操作,识别码2'),
  159. 'redemption' => Validator::notEmpty()->setName('换购产品'),
  160. ]);
  161. if ($param['goods_id'] == $param['redemption']) {
  162. throw new \Exception('换购产品和当前产品一致,请更换需要换购的产品!');
  163. }
  164. $data = MyGood::query()->where('id', $param['id'])->first();
  165. if (empty($data)) {
  166. throw new \Exception('当前订单不存在!');
  167. }
  168. $goodsData = Good::query()->where('id', $param['redemption'])->first();
  169. if (empty($goodsData)) {
  170. throw new \Exception('更换产品不存在!');
  171. }
  172. MyGood::query()->where('id', $param['id'])->update([
  173. 'goods_id' => $param['redemption'],
  174. 'o_goods_id' => $param['goods_id'],
  175. ]);
  176. } catch (\Throwable $exception) {
  177. Db::rollBack();
  178. return $this->fail($exception->getMessage());
  179. }
  180. Db::commit();
  181. return $this->success();
  182. }
  183. return view('my-good/edit_shop');
  184. }
  185. /** 批量通过
  186. * @param Request $request
  187. * @return Response
  188. */
  189. public function pass(Request $request): Response
  190. {
  191. try {
  192. $param = $request->all();
  193. Validator::input($param, [
  194. 'id' => Validator::notEmpty()->ArrayType()->setName('标识'),
  195. ]);
  196. $withdrawModel = MyGood::query();
  197. foreach ($param['id'] as $k => $v) {
  198. Db::beginTransaction();
  199. try {
  200. $has = (clone $withdrawModel)->where('id', $v)->lock(true)->first();
  201. if (empty($has)) {
  202. throw new \Exception('编码为:【' . $v . '】订单不存在!');
  203. }
  204. if ($has->status != 1) {
  205. throw new \Exception('编码为:【' . $v . '】已处理请不要重复提交!');
  206. }
  207. if ($has && $has->status == 1) {
  208. $has->status = 3;
  209. $has->updated_at = date('Y-m-d H:i:s');
  210. $has->save();
  211. } else {
  212. throw new \Exception('编码为:【' . $v . '】已处理请不要重复提交!');
  213. }
  214. Db::commit();
  215. } catch (\Throwable $exception) {
  216. Db::rollBack();
  217. throw new \Exception($exception->getMessage());
  218. }
  219. }
  220. } catch (\Throwable $exception) {
  221. return $this->fail($exception->getMessage());
  222. }
  223. return $this->success();
  224. }
  225. }