DefaultController.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295
  1. <?php
  2. namespace addons\Distribution\api\modules\v1\controllers;
  3. use addons\Distribution\common\enums\DistributionEnum;
  4. use addons\Distribution\common\models\DistributionApply;
  5. use addons\Distribution\common\models\DistributionLevel;
  6. use addons\Distribution\common\models\Distribution;
  7. use common\enums\AddonsEnum;
  8. use common\enums\StatusEnum;
  9. use common\models\common\CapitalLog;
  10. use common\models\common\GlobalVarMap;
  11. use common\models\order\OrderDetail;
  12. use common\models\user\User;
  13. use Yii;
  14. use api\controllers\OnAuthController;
  15. /**
  16. * 默认控制器
  17. *
  18. * Class DefaultController
  19. * @package addons\Distribution\api\modules\v1\controllers
  20. */
  21. class DefaultController extends OnAuthController
  22. {
  23. public $modelClass = '';
  24. public $from_type = ['Distribution'];
  25. /**
  26. * 不用进行登录验证的方法
  27. *
  28. * 例如: ['index', 'update', 'create', 'view', 'delete']
  29. * 默认全部需要验证
  30. *
  31. * @var array
  32. */
  33. protected $authOptional = ['index'];
  34. /**
  35. * 首页
  36. *
  37. * @return string
  38. */
  39. public function actionIndex()
  40. {
  41. return 'Hello world';
  42. }
  43. /**
  44. * @desc:经销商详情
  45. * @Author: hua
  46. * @Date: 2021/11/4
  47. * @Time: 16:47
  48. * @Copyright: copyright (c) 2021 广东七件事集团
  49. * @return mixed|void
  50. */
  51. public function actionInfos()
  52. {
  53. $data['user_id'] = $this->user_id;
  54. $data['nickname'] = empty($this->user->nickname) ? '' : $this->user->nickname;
  55. $data['avatar_url'] = empty($this->user->avatar_url) ? '' : $this->user->avatar_url;
  56. $distribution = Distribution::getOne([['user_id' => $this->user_id],['status'=>StatusEnum::ENABLED],['mall_id'=>$this->mall_id]], true, ['distributionLevel']);
  57. if(empty($distribution)){
  58. $res = DistributionApply::getOne([['user_id' => $this->user_id],['status'=>StatusEnum::ENABLED],['mall_id'=>$this->mall_id]],true,[],'id desc');
  59. $setting = \Yii::$app->services->setting->addons->get($this->mall_id, DistributionEnum::ADDONS_NAME, 'basic');
  60. if(!empty($res)){
  61. if($res['check_status']==0)return $this->error('',$result = ['is_apply'=>2,'msg'=>'您已经申请了,请等待审核','is_distribution'=>0]);
  62. if($res['check_status']==2)return $this->error('',$result = ['is_apply'=>3,'protocol'=>$setting['protocol'],'msg'=>$res['check_remark'],'is_distribution'=>0]);
  63. }
  64. $result = ['is_apply'=>$setting['is_apply'],'protocol'=>$setting['protocol'],'is_distribution'=>0];
  65. return $this->error('您不是分销商', $result);
  66. }
  67. $data['parent_name'] = '平台方';
  68. $data['parent_avatar_url'] = '';
  69. $data['parent_level_name'] = '';
  70. $parent_id = $this->user->parent_id??0;
  71. if($parent_id){
  72. $parent = User::findOne($parent_id);
  73. $data['parent_name']= $parent['nickname']??'';
  74. $data['parent_avatar_url']= $parent['avatar_url']??'';
  75. $parent_distribution = Distribution::findOne(['user_id'=>$parent_id]);
  76. $data['parent_level_name'] = $parent_distribution->distributionLevel->name??'默认等级';
  77. }
  78. $data['is_distribution'] = 0;
  79. $data['level_name'] = '';
  80. $data['frozen_price'] = 0;
  81. $data['total_price'] = 0;
  82. $data['total_income'] = 0;
  83. $data['yesterday_price'] = 0;
  84. if ($distribution) {
  85. $data['is_distribution'] = 1;
  86. $data['level_name'] = $distribution['distributionLevel']['name'] ?? '默认等级';
  87. $wallet_type = 'commission';
  88. $yesterday = date('Y-m-d', strtotime('-1 day'));
  89. $start_time = "{$yesterday} 00:00:00";
  90. $end_time = "{$yesterday} 23:59:59";
  91. CapitalLog::$capitalType = "{$wallet_type}_frozen";
  92. $where = ['user_id' => $this->user_id, 'from_type' => DistributionEnum::ADDONS_NAME, 'status' => CapitalLog::STATUS_WAIT_SEND];
  93. $query = CapitalLog::find();
  94. $frozen_price = $query->where($where)->sum('change_num');
  95. $yesterday_frozen_price = $query->where($where)
  96. ->andWhere(['<=', 'created_at', $end_time])
  97. ->andWhere(['>=', 'created_at', $start_time])
  98. ->sum('change_num');
  99. if (empty($yesterday_frozen_price)) $yesterday_frozen_price = 0;
  100. CapitalLog::$capitalType = "{$wallet_type}";
  101. $where = ['user_id' => $this->user_id, 'from_type' => DistributionEnum::ADDONS_NAME];
  102. $query = CapitalLog::find();
  103. $total_price = $query->where($where)->sum('change_num');
  104. $yesterday_total_price = $query->where($where)
  105. ->andWhere(['<=', 'created_at', $end_time])
  106. ->andWhere(['>=', 'created_at', $start_time])
  107. ->sum('change_num');
  108. if (empty($yesterday_total_price)) $yesterday_total_price = 0;
  109. $data['total_price'] = empty($total_price) ? 0 : $total_price;
  110. $data['frozen_price'] = empty($frozen_price) ? 0 : $frozen_price;
  111. $data['total_income'] = bcadd($data['total_price'] , $data['frozen_price'],2);
  112. $data['yesterday_price'] = $yesterday_total_price + $yesterday_frozen_price;
  113. }
  114. $is_show_share_level = \Yii::$app->services->setting->addons->get($this->mall_id, AddonsEnum::ADDONS_NAME_DISTRIBUTION, 'basic.is_show_share_level');
  115. $data['is_show_share_level'] = $is_show_share_level??0;
  116. return $this->success('操作成功', $data);
  117. }
  118. public function actionInfo()
  119. {
  120. $data = Distribution::distributionInfo($this->user,$this->mall_id);
  121. if(!empty($data['msg'])) return $this->error($data['msg'],$data['result']);
  122. return $this->success('操作成功', $data);
  123. }
  124. /**
  125. * @desc:奖励列表
  126. * @Author: hua
  127. * @Date: 2021/11/4
  128. * @Time: 17:00
  129. * @Copyright: copyright (c) 2021 广东七件事集团
  130. * @return mixed|void
  131. */
  132. public function actionLogList()
  133. {
  134. $params = \Yii::$app->request->get();
  135. // $where[] = ['mall_id' => $this->mall_id];
  136. // $where[] = ['user_id' => $this->user_id];
  137. // $where[] = ['from_type' => DistributionEnum::ADDONS_NAME];
  138. // $params['order'] = 'id desc';
  139. // $params['where'] = $where;
  140. // $params['select'] = 'id,change_num,source_table,source_table_id,from_type,capital_type';
  141. // $wallet_type = 'commission';
  142. // CapitalLog::$capitalType = "{$wallet_type}";
  143. // $list = CapitalLog::listPage($params);
  144. // if (!empty($list)) {
  145. // $source_table_id_arr_by_order_detail = [];
  146. // foreach ($list['list'] as $item) {
  147. // if ($item['source_table'] == 'order_detail') {
  148. // $source_table_id_arr_by_order_detail[] = $item['source_table_id'];
  149. // }
  150. // }
  151. // //商品订单的团队佣金
  152. // if ($source_table_id_arr_by_order_detail) {
  153. // $order_detail_arr = [];
  154. // $params = [];
  155. // $params['where'] = [['id' => $source_table_id_arr_by_order_detail]];
  156. // $params['with'] = ['user' => function ($query) {
  157. // $query->select('id,nickname,avatar_url');
  158. // }, 'order' => function ($query) {
  159. // $query->select('id,order_no');
  160. // }];
  161. // $order_detail_list = OrderDetail::lists($params);
  162. // foreach ($order_detail_list as $value) {
  163. // $order_detail_arr[$value['id']] = [
  164. // 'goods_name' => $value['goods_name'],
  165. // 'goods_price' => $value['goods_price'],
  166. // 'created_at' => date('Y-m-d H:i:s', $value['created_at']),
  167. // 'order_no' => $value['order']['order_no'],
  168. // 'user_id' => $value['user']['id'],
  169. // 'nickname' => $value['user']['nickname'],
  170. // 'avatar_url' => $value['user']['avatar_url'],
  171. // ];
  172. // }
  173. // }
  174. //
  175. //
  176. // foreach ($list['list'] as &$item) {
  177. // if ($item['source_table'] == 'order_detail') {
  178. // $item['user_id'] = '';
  179. // $item['nickname'] = '';
  180. // $item['avatar_url'] = '';
  181. // $item['order_no'] = '';
  182. // $item['created_at'] = '';
  183. // $item['goods_price'] = '';
  184. // $item['goods_name'] = '';
  185. // if (!empty($order_detail_arr[$item['source_table_id']])) {
  186. // $item['user_id'] = $order_detail_arr[$item['source_table_id']]['user_id'];
  187. // $item['nickname'] = $order_detail_arr[$item['source_table_id']]['nickname'];
  188. // $item['avatar_url'] = $order_detail_arr[$item['source_table_id']]['avatar_url'];
  189. // $item['order_no'] = $order_detail_arr[$item['source_table_id']]['order_no'];
  190. // $item['created_at'] = $order_detail_arr[$item['source_table_id']]['created_at'];
  191. // $item['goods_price'] = $order_detail_arr[$item['source_table_id']]['goods_price'];
  192. // $item['goods_name'] = $order_detail_arr[$item['source_table_id']]['goods_name'];
  193. // }
  194. // }
  195. // }
  196. // }
  197. //新增查询未结算记录
  198. if($params['list_type'] ==1){//未结算
  199. $wallet_type = 'commission_frozen';
  200. $params['status'] = StatusEnum::DISABLED;
  201. }else{
  202. $wallet_type = 'commission';
  203. }
  204. $params['mall_id'] = $this->mall_id;
  205. $params['user_id'] = $this->user_id;
  206. $list = CapitalLog::getCapitalLogList($params, $wallet_type, DistributionEnum::ADDONS_NAME);
  207. $list['map'] = DistributionEnum::getMap();
  208. if (!empty(CapitalLog::getStaticError())) return $this->error(CapitalLog::getStaticError());
  209. if (!empty($list['list'])) {
  210. $commission_map = GlobalVarMap::getEnumMapByType('FromTypeMap');
  211. $capital_type_map = GlobalVarMap::getEnumMapByType('CapitalTypeMap');
  212. foreach ($list['list'] as &$item) {
  213. $item['source_text'] = ($commission_map[$item['from_type']] ?? '').($capital_type_map[$item['capital_type']]
  214. ?'-'.$capital_type_map[$item['capital_type']]:'');
  215. }
  216. }
  217. return $this->success('操作成功', $list);
  218. }
  219. /**
  220. * @desc:等级列表
  221. * @Author: hua
  222. * @Date: 2021/11/5
  223. * @Time: 16:20
  224. * @Copyright: copyright (c) 2021 广东七件事集团
  225. * @return mixed|void
  226. */
  227. public function actionLevelList(){
  228. $params = [];
  229. $params['where'] = [['mall_id'=>$this->mall_id],['status'=>StatusEnum::ENABLED]];
  230. $params['select'] = 'id,name,explain';
  231. $list = DistributionLevel::lists($params);
  232. return $this->success('操作成功', $list);
  233. }
  234. /**
  235. * @desc:申请接口
  236. * @Author: hua
  237. * @Date: 2021/11/25
  238. * @Time: 16:39
  239. * @Copyright: copyright (c) 2021 广东七件事集团
  240. * @return mixed|void
  241. */
  242. public function actionApply(){
  243. $mall_id = $this->mall_id;
  244. if (\Yii::$app->request->isPost) {
  245. $params = \Yii::$app->request->post();
  246. $res = Yii::$app->services->validate->validate($params, [
  247. [['name', 'mobile'], 'required'],
  248. [['remark'], 'safe'],
  249. ['mobile', 'match', 'pattern' => '/^1\d{10}$/', 'message' => '请输入正确的手机号码'],
  250. ]);
  251. if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  252. $params['mall_id'] = $mall_id;
  253. $params['user_id'] = $this->user_id;
  254. if (empty($this->user)) return $this->error('不存在此会员');
  255. $distribution = Distribution::getOne([['user_id' => $this->user_id], ['status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]], ['mall_id' => $this->mall_id]], true);
  256. if (!empty($distribution)) return $this->error('您已经是分销商');
  257. $distribution_apply = DistributionApply::getOne([['user_id' => $this->user_id], ['status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]], ['mall_id' => $this->mall_id]], true, [], 'id desc');
  258. if (!empty($distribution_apply) && empty($distribution_apply['check_status'])) return $this->error('您已经提交申请,请等待客服审核');
  259. $setting = \Yii::$app->services->setting->addons->get($this->mall_id, DistributionEnum::ADDONS_NAME, 'basic');
  260. if (empty($setting['is_check'])) $params['check_status'] = 1; //不需要审核
  261. $res = DistributionApply::setData($params);
  262. if ($res === false) return $this->error(DistributionApply::getStaticError());
  263. return $this->success('操作成功');
  264. }
  265. if (\Yii::$app->request->isGet) {
  266. $params['mall_id'] = $mall_id;
  267. $params['user_id'] = $this->user_id;
  268. if (empty($this->user)) return $this->error('不存在此会员');
  269. $distribution_apply = DistributionApply::getOne([['user_id' => $this->user_id],
  270. ['status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]],
  271. ['mall_id' => $this->mall_id]], true, [], 'id desc','id,user_id,check_status,check_remark');
  272. return $this->success('操作成功',$distribution_apply);
  273. }
  274. }
  275. }