CreditController.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. <?php
  2. namespace addons\Store\client\controllers;
  3. use addons\Store\common\enums\StoreEnum;
  4. use addons\Store\common\models\Store;
  5. use addons\Store\common\models\StoreCashierExtra;
  6. use addons\Store\common\models\StoreCashierOrder;
  7. use addons\Store\common\models\StoreGoods;
  8. use addons\Store\common\models\StoreOrder;
  9. use addons\Store\common\models\StoreOrderCredit;
  10. use addons\Store\common\models\StoreOrderDetail;
  11. use common\enums\StatusEnum;
  12. use common\models\user\User;
  13. class CreditController extends BaseController
  14. {
  15. //赊账记录
  16. public function actionIndex()
  17. {
  18. if (!\Yii::$app->request->isAjax) return $this->render($this->action->id);
  19. if (\Yii::$app->request->isGet) {
  20. $params = \Yii::$app->request->get();
  21. $where[] = ['mall_id' => $this->mall_id];
  22. $where[] = ['store_id' => $this->store_id];
  23. $where[] = ['>','pay_time' ,0];
  24. $where[] = ['>','credit_money' ,0];
  25. if (!empty($params['goods_name'])) {
  26. $store_order_detail_list = StoreOrderDetail::lists(['where' => [
  27. ['like', 'goods_name', trim($params['goods_name'])],
  28. ['mall_id' => $this->mall_id],
  29. ['store_id' => $this->store_id],
  30. ], 'select' => 'order_id,goods_name,pic_url']);
  31. $order_ids = array_column($store_order_detail_list, 'order_id');
  32. $where[] = ['order_id' => $order_ids];
  33. }
  34. if (!empty($params['order_no'])) {
  35. $store_order_list = StoreOrder::lists(['where' => [
  36. ['order_no' => trim($params['order_no'])],
  37. ['mall_id' => $this->mall_id],
  38. ['store_id' => $this->store_id],
  39. ], 'select' => 'id,order_no']);
  40. $order_ids = array_column($store_order_list, 'id');
  41. $store_cashier_order_list = StoreCashierOrder::lists(['where' => [
  42. ['order_no' => trim($params['order_no'])],
  43. ['mall_id' => $this->mall_id],
  44. ['store_id' => $this->store_id],
  45. ], 'select' => 'id,order_no']);
  46. $cashier_order_ids = array_column($store_cashier_order_list, 'id');
  47. $where[] = ['order_id' => array_merge($order_ids,$cashier_order_ids)];
  48. }
  49. if (!empty($params['mobile'])) {
  50. $user_list = User::lists(['where' => [
  51. ['like', 'mobile', trim($params['mobile'])],
  52. ['mall_id' => $this->mall_id],
  53. ['status' => [StatusEnum::DISABLED, StatusEnum::ENABLED]],
  54. ], 'select' => 'id']);
  55. $user_ids = array_column($user_list, 'id');
  56. $where[] = ['user_id' => $user_ids];
  57. }
  58. if (isset($params['is_repayment'])) {
  59. $where[] = ['is_repayment' => $params['is_repayment']];
  60. }
  61. if (!empty($params['user_id'])) $where[] = ['user_id' => $params['user_id']];
  62. if (!empty($params['start'])) $where[] = ['>=', 'created_at', strtotime($params['start'])];
  63. if (!empty($params['end'])) $where[] = ['<=', 'created_at', strtotime($params['end'])];
  64. $params['select'] = 'id,order_id,user_id,credit_money,is_repayment,created_at,type';
  65. $params['where'] = $where;
  66. $params['order'] = 'id desc';
  67. $page_data = StoreOrderCredit::listPage($params);
  68. if (!empty($page_data['list'])) {
  69. $order_ids = [];
  70. $cashier_order_ids = [];
  71. foreach ($page_data['list'] as $val){
  72. if($val['type']==1){
  73. $order_ids[] =$val['order_id'];
  74. }else{
  75. $cashier_order_ids[] =$val['order_id'];
  76. }
  77. }
  78. $user_ids = array_column($page_data['list'], 'user_id');
  79. if (empty($store_order_detail_list)) {
  80. $store_order_detail_list = StoreOrderDetail::lists(['where' => [['order_id' => $order_ids]], 'select' => 'order_id,goods_name,pic_url']);
  81. }
  82. $store_order_detail_arr = [];
  83. foreach ($store_order_detail_list as $val) {
  84. $store_order_detail_arr[$val['order_id']][] = $val;
  85. }
  86. $store_order_list = StoreOrder::lists(['where' => [['id' => $order_ids]], 'select' => 'id,order_no,pay_money', 'index' => 'id']);
  87. $cashier_store_order_list = StoreCashierOrder::lists(['where' => [['id' => $cashier_order_ids]], 'select' => 'id,order_no,pay_money', 'index' => 'id']);
  88. if (empty($user_list)) {
  89. $user_list = User::lists(['where' => [['id' => $user_ids]], 'select' => 'id,mobile,nickname', 'index' => 'id']);
  90. }
  91. foreach ($page_data['list'] as &$item) {
  92. $item['mobile'] = '';
  93. $item['nickname'] = '';
  94. $item['order_no'] = '';
  95. $item['pay_money'] = 0;
  96. $item['detail'] = [];
  97. $item['is_repayment_text'] = $item['is_repayment'] == 1 ? '已还款' : '未还款';
  98. $item['order_type_text'] = $item['type'] == 1 ? '门店商品订单' : '收银台订单';
  99. if($item['type']==1){
  100. if (!empty($store_order_list[$item['order_id']])) {
  101. $item['order_no'] = $store_order_list[$item['order_id']]['order_no'];
  102. $item['pay_money'] = $store_order_list[$item['order_id']]['pay_money'];
  103. }
  104. }else{
  105. if (!empty($cashier_store_order_list[$item['order_id']])) {
  106. $item['order_no'] = $cashier_store_order_list[$item['order_id']]['order_no'];
  107. $item['pay_money'] = $cashier_store_order_list[$item['order_id']]['pay_money'];
  108. }
  109. }
  110. if (!empty($user_list[$item['user_id']])) {
  111. $item['mobile'] = $user_list[$item['user_id']]['mobile'];
  112. $item['nickname'] = $user_list[$item['user_id']]['nickname'];
  113. }
  114. if (!empty($store_order_detail_arr[$item['order_id']])) {
  115. $item['detail'] = $store_order_detail_arr[$item['order_id']];
  116. }
  117. }
  118. }
  119. $page_data['is_repayment_map'] = StoreEnum::getIsRepaymentMap();
  120. $page_data['order_type_map'] = StoreEnum::getOrderCreditTypeMap();
  121. return $this->success('操作成功', $page_data);
  122. }
  123. }
  124. //赊账设置页面
  125. public function actionSettingCredit(){
  126. if (!\Yii::$app->request->isAjax) return $this->render($this->action->id);
  127. if (\Yii::$app->request->isGet) {
  128. $params = \Yii::$app->request->get();
  129. $where[] = ['mall_id' => $this->mall_id];
  130. $where[] = ['store_id' => $this->store_id];
  131. $where[] = ['>','credit_rate',0];
  132. $where[] = ['status' => [StatusEnum::ENABLED,StatusEnum::DISABLED]];
  133. if (!empty($params['goods_name'])) {
  134. $where[] = ['like', 'goods_name', trim($params['goods_name'])];
  135. }
  136. $params['select'] = 'id,store_id,mall_id,goods_name,price,cover_pic,credit_rate,goods_type';
  137. $params['where'] = $where;
  138. $page_data = StoreGoods::listPage($params);
  139. $store = Store::findOne(['id'=>$this->store_id]);
  140. $page_data['is_open_credit'] = $store['is_open_credit']??0;
  141. $extra = StoreCashierExtra::findOne(['store_id'=>$this->store_id]);
  142. $page_data['credit_rate'] = $extra['credit_rate']??0;
  143. return $this->success('操作成功', $page_data);
  144. }
  145. }
  146. //赊账功能
  147. public function actionOpenCredit(){
  148. $params = \Yii::$app->request->post();
  149. $is_open_credit = $params['is_open_credit']??0;
  150. $store_id = $this->store_id;
  151. $mall_id = $this->mall_id;
  152. $res = Store::updateAll(['is_open_credit'=>$is_open_credit],['id'=>$store_id,'mall_id'=>$mall_id]);
  153. if($res==false) return $this->error('fail');
  154. return $this->success('success');
  155. }
  156. //收银台赊账设置
  157. public function actionCashierCredit(){
  158. $params = \Yii::$app->request->post();
  159. $credit_rate = $params['credit_rate']??0;
  160. if($credit_rate>70) return $this->error('比例不能大于70%');
  161. $store_id = $this->store_id;
  162. $mall_id = $this->mall_id;
  163. $params = ['store_id'=>$store_id,'credit_rate'=>$credit_rate,'mall_id'=>$mall_id,'score_give_setting'=>[],'score_deduct_setting'=>[],'currency_deduct_setting'=>[],'member_price_setting'=>[],'member_buy_limit_setting'=>[]];
  164. $res = StoreCashierExtra::setData($store_id,$params);
  165. if($res==false) return $this->error('fail');
  166. return $this->success('success');
  167. }
  168. //商品设置赊账比例
  169. public function actionGoodsCredit(){
  170. $params = \Yii::$app->request->post();
  171. $credit_rate = $params['credit_rate']??0;
  172. if($credit_rate<=0||!is_numeric($credit_rate)) return $this->error('请输入正确的比例');
  173. if($credit_rate>70) return $this->error('比例不能大于70%');
  174. $goods_id = $params['goods_id']??0;
  175. $store_id = $this->store_id;
  176. $mall_id = $this->mall_id;
  177. $res = StoreGoods::updateAll(['credit_rate'=>$credit_rate],['id'=>$goods_id,'store_id'=>$store_id,'mall_id'=>$mall_id]);
  178. if($res==false) return $this->error('fail');
  179. return $this->success('success');
  180. }
  181. public function actionGoodCredit(){
  182. $params = \Yii::$app->request->post();
  183. $credit_rate = $params['credit_rate']??0;
  184. if($credit_rate>70) return $this->error('比例不能大于70%');
  185. $id = $params['id']??0;
  186. $store_id = $this->store_id;
  187. $mall_id = $this->mall_id;
  188. $res = StoreGoods::updateAll(['credit_rate'=>$credit_rate],['id'=>$id,'store_id'=>$store_id,'mall_id'=>$mall_id]);
  189. if($res==false) return $this->error('fail');
  190. return $this->success('success');
  191. }
  192. public function actionDelGoodsCredit(){
  193. $params = \Yii::$app->request->post();
  194. $id = $params['id']??0;
  195. $store_id = $this->store_id;
  196. $mall_id = $this->mall_id;
  197. $res = StoreGoods::updateAll(['credit_rate'=>0],['id'=>$id,'store_id'=>$store_id,'mall_id'=>$mall_id]);
  198. if($res==false) return $this->error('fail');
  199. return $this->success('操作成功');
  200. }
  201. //商品下拉,不用验证权限
  202. public function actionSearchGoods(){
  203. $params = \Yii::$app->request->get();
  204. $where[] = ['mall_id' => $this->mall_id];
  205. $where[] = ['store_id' => $this->store_id];
  206. $where[] = ['status' => [StatusEnum::ENABLED,StatusEnum::DISABLED]];
  207. if (!empty($params['keyword'])) {
  208. $where[] = [
  209. 'or',
  210. ['id'=> trim($params['keyword'])],
  211. ['like', 'goods_name', trim($params['keyword'])],
  212. ];
  213. }
  214. $params['select'] = 'id,store_id,mall_id,goods_name,price,cover_pic,cost_price,stock,goods_type';
  215. $params['where'] = $where;
  216. $page_data = StoreGoods::listPage($params);
  217. if(!empty($page_data['list'])){
  218. foreach ($page_data['list'] as &$item){
  219. $item['goods_source'] = 'store';
  220. }
  221. }
  222. return $this->success('操作成功', $page_data);
  223. }
  224. }