BusinessMemberForm.php 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355
  1. <?php
  2. /**
  3. * 重庆赤晓店信息科技有限公司
  4. * https://www.chixiaodian.com
  5. * Copyright (c) 2023 赤店商城 All rights reserved.
  6. */
  7. namespace app\modules\admin\models;
  8. use yii\base\Model;
  9. use app\models\Coupon;
  10. use app\models\VerifyCard;
  11. use app\models\BusinessMember;
  12. use app\models\BusinessRightInfo;
  13. use app\models\BusinessMemberOrder;
  14. use app\models\SaasUser;
  15. use app\models\Store;
  16. use app\models\BusinessRightDuration;
  17. class BusinessMemberForm extends Model
  18. {
  19. public $id;
  20. public $name;
  21. public $image;
  22. public $bg_image;
  23. public $get_type;
  24. public $give;
  25. public $give_coupon;
  26. public $give_verify;
  27. public $give_self;
  28. public $coupon_info;
  29. public $verify_info;
  30. public $self_info;
  31. public $sale_info;
  32. public $commission_type;
  33. public $commission_one;
  34. public $commission_two;
  35. public $commission_three;
  36. public $right_status;
  37. public $right_ids;
  38. public $right_info;
  39. public $right_default;
  40. public $sort;
  41. public $is_delete;
  42. public $search_type; //0.全部 1.使用中 2.已过期
  43. public $start_time;
  44. public $end_time;
  45. public $page;
  46. /**
  47. * @inheritdoc
  48. */
  49. public function rules()
  50. {
  51. return [
  52. [['name','image','bg_image','give'], 'required'],
  53. [['id','sort', 'give', 'give_coupon', 'give_verify', 'give_self', 'commission_type', 'right_status','is_delete','get_type','page','search_type','self_info','give_self'], 'integer'],
  54. [['image', 'bg_image','coupon_info','verify_info','right_ids','right_info','right_default','sale_info','self_info','start_time','end_time'], 'string'],
  55. ];
  56. }
  57. /**
  58. * @inheritdoc
  59. */
  60. public function attributeLabels()
  61. {
  62. return [
  63. 'id' => 'ID',
  64. 'name' => '会员卡名称',
  65. 'image' => '图片',
  66. 'bg_image' => '背景图片',
  67. 'get_type' => '获取方式',
  68. 'sale_info' => '购买详情',
  69. 'give' => '赠送开关',
  70. 'give_coupon' => '优惠券赠送开关',
  71. 'give_verify' => '核销卡赠送开关',
  72. 'give_self' => '开启自购返利',
  73. 'coupon_info' => '赠送优惠券信息',
  74. 'verify_info' => '赠送卡券信息',
  75. 'self_info' => '自购返利',
  76. 'commission_type' => '佣金类型:1百分比 2固定金额',
  77. 'commission_one' => '一级佣金',
  78. 'commission_two' => '二级佣金',
  79. 'commission_three' => '三级佣金',
  80. 'right_status' => '权益开关',
  81. 'right_ids' => '权利ids',
  82. 'right_info' => '权益信息',
  83. 'right_default' => '权益详情',
  84. ];
  85. }
  86. public function list($status=''){
  87. $query = BusinessMember::find()->where(['is_delete'=>0]);
  88. if( strlen($status) > 0 && ($status==1 || $status==0) ){
  89. $query->andWhere(['status'=>$status]);
  90. }
  91. $countQuery = clone $query;
  92. $count = $countQuery->count();
  93. $page = post_params('page', 1);
  94. $pageSize = post_params('pageSize', 10);
  95. $query->offset(($page - 1) * $pageSize)->limit($pageSize);
  96. $list = $query->asArray()->all();
  97. foreach($list as $k=>$v){
  98. //计算售卖总数
  99. $list[$k]['num'] = 0;
  100. //计算售卖金额
  101. $list[$k]['total_amount'] = 0;
  102. }
  103. return [
  104. 'code' => 0,
  105. 'msg' => 'success',
  106. 'data' => [
  107. 'data' => $list,
  108. 'pageNo' => $page,
  109. 'totalCount' => $count,
  110. ],
  111. ];
  112. }
  113. public function save(){
  114. if($this->attributes['id']){
  115. $member = BusinessMember::find()->where(['id'=>$this->attributes['id']])->one();
  116. }else{
  117. $member = new BusinessMember();
  118. }
  119. $member->attributes = $this->attributes;
  120. $member->sort = (empty($member->attributes['sort'])) ? 0 : $member->attributes['sort'];
  121. $member->coupon_info = (is_null($member->attributes['coupon_info'])) ? '' : json_encode($member->attributes['coupon_info']);
  122. $member->right_info = (is_null($member->attributes['right_info'])) ? '' : json_encode($member->attributes['right_info']);
  123. $member->verify_info = (is_null($member->attributes['verify_info'])) ? '' : json_encode($member->attributes['verify_info']);
  124. $member->right_ids = (is_null($member->attributes['right_ids'])) ? '' : json_encode($member->attributes['right_ids']);
  125. $member->sale_info = (is_null($member->attributes['sale_info'])) ? '' : json_encode($member->attributes['sale_info']);
  126. $member->self_info = (empty($member->attributes['self_info'])) ? 0 : $member->attributes['self_info'];
  127. $member->right_default = (is_null($member->attributes['right_default'])) ? '' : $member->attributes['right_default'];
  128. $member->commission_one = empty($member->attributes['commission_one']) ? 0.00 : $member->attributes['commission_one'];
  129. $member->commission_two = empty($member->attributes['commission_two']) ? 0.00 : $member->attributes['commission_two'];
  130. $member->commission_three = empty($member->attributes['commission_three']) ? 0.00 : $member->attributes['commission_three'];
  131. $member->create_time = time();
  132. $memberInfo = $member->save();
  133. if($memberInfo){
  134. return [
  135. 'code' => 0,
  136. 'msg' => '成功',
  137. ];
  138. }else{
  139. return [
  140. 'code' => 1,
  141. 'msg' => '失败',
  142. ];
  143. }
  144. }
  145. //上下架
  146. public function editStatusById($id,$status){
  147. $memberInfo = BusinessMember::find()->where(['id'=>$id,'is_delete'=>0])->one();
  148. if(!$memberInfo || $memberInfo['status'] == $status ){
  149. return [
  150. 'code' => 1,
  151. 'msg' => '数据信息有误',
  152. ];
  153. }
  154. $memberInfo->status = $status;
  155. if($memberInfo->save()){
  156. return [
  157. 'code' => 0,
  158. 'msg' => '成功',
  159. ];
  160. }else{
  161. return [
  162. 'code' => 1,
  163. 'msg' => '失败',
  164. ];
  165. }
  166. }
  167. //删除信息
  168. public function delInfoById($id){
  169. $memberInfo = BusinessMember::find()->where(['id'=>$id,'is_delete'=>0])->one();
  170. if(!$memberInfo){
  171. return [
  172. 'code' => 1,
  173. 'msg' => '数据不存在',
  174. ];
  175. }
  176. $memberInfo->is_delete = 1;
  177. if($memberInfo->save()){
  178. return [
  179. 'code' => 0,
  180. 'msg' => '成功',
  181. ];
  182. }else{
  183. return [
  184. 'code' => 1,
  185. 'msg' => '失败',
  186. ];
  187. }
  188. }
  189. //获取优惠券详情
  190. public function getInfoById($id){
  191. $memberInfo = BusinessMember::find()->where(['id'=>$id,'is_delete'=>0])->asArray()->one();
  192. if(!$memberInfo){
  193. return [
  194. 'code' => 1,
  195. 'msg' => '失败',
  196. ];
  197. }
  198. if($memberInfo['sale_info']){
  199. $memberInfo['sale_info'] = json_decode($memberInfo['sale_info'],true);
  200. }
  201. //优惠券
  202. $couponIds = json_decode($memberInfo['coupon_info'],true);
  203. if($couponIds != "[]" && $couponIds){
  204. $couponInfo = Coupon::find()->alias('c')->leftJoin(["s"=>Store::tableName()], 'c.store_id=s.id')
  205. ->where(['in','c.id',$couponIds])->andWhere(['c.is_delete'=>0,'c.is_business'=>1])->select('c.*,s.name store_name')->asArray()->all();
  206. $memberInfo['coupon_info_detail'] = $couponInfo;
  207. $memberInfo['coupon_info'] = $couponIds;
  208. }else{
  209. $memberInfo['coupon_info_detail'] = [];
  210. }
  211. //核销卡详情
  212. $verifyIds = json_decode($memberInfo['verify_info'],true);
  213. if($verifyIds != "[]" && $verifyIds){
  214. $verifyInfo = VerifyCard::find()->alias('v')->leftJoin(["s"=>Store::tableName()], 'v.store_id=s.id')
  215. ->where(['in','v.id',$verifyIds])->andWhere(['v.is_delete'=>0,'v.is_business'=>1])->select('v.*,s.name store_name')->asArray()->all();
  216. $memberInfo['verify_info_detail'] = $verifyInfo;
  217. $memberInfo['verify_info'] = $verifyIds;
  218. }else{
  219. $memberInfo['verify_info_detail'] = [];
  220. }
  221. //权利信息
  222. if($memberInfo['right_info']){
  223. // $info = BusinessRightInfo::find()->where(['is_delete'=>0])->select("id,name,explanation")->asArray()->all();
  224. $info = BusinessRightInfo::resetRightInfo([], "id,name,explanation");
  225. $rightInfo = json_decode($memberInfo['right_info'],true);
  226. $rightInfo = array_column($rightInfo,NULL,'id');
  227. foreach($info as $key=>$val){
  228. if(isset($rightInfo[$val['id']]['icon']) && $rightInfo[$val['id']]['icon']){
  229. $info[$key]['icon'] = $rightInfo[$val['id']]['icon'];
  230. }else{
  231. $info[$key]['icon'] = '';
  232. }
  233. if(isset($rightInfo[$val['id']]['choosed']) && $rightInfo[$val['id']]['choosed']){
  234. $info[$key]['choosed'] = $rightInfo[$val['id']]['choosed'];
  235. }else{
  236. $info[$key]['choosed'] = false;
  237. }
  238. if(isset($rightInfo[$val['id']]['custom_name']) && $rightInfo[$val['id']]['custom_name']){
  239. $info[$key]['custom_name'] = $rightInfo[$val['id']]['custom_name'];
  240. }else{
  241. $info[$key]['custom_name'] = '';
  242. }
  243. if(isset($rightInfo[$val['id']]['custom_explanation']) && $rightInfo[$val['id']]['custom_explanation']){
  244. $info[$key]['custom_explanation'] = $rightInfo[$val['id']]['custom_explanation'];
  245. }else{
  246. $info[$key]['custom_explanation'] = '';
  247. }
  248. }
  249. $memberInfo['right_info'] = $info;
  250. }
  251. return [
  252. 'code' => 0,
  253. 'msg' => '成功',
  254. 'data' => $memberInfo
  255. ];
  256. }
  257. //获取权限列表
  258. public function getBusinessRightInfo(){
  259. // $info = BusinessRightInfo::find()->where(['is_delete'=>0])->select("id,name,explanation")->asArray()->all();
  260. $info = BusinessRightInfo::resetRightInfo([], "id,name,explanation");
  261. return [
  262. 'code' => 0,
  263. 'msg' => '成功',
  264. 'data' => $info
  265. ];
  266. }
  267. //获取购买卡片记录
  268. public function getBusinessBuyCartList(){
  269. $search_type = $this->search_type;
  270. $saas_name = $this->name;
  271. $start_time = $this->start_time;
  272. $end_time = $this->end_time;
  273. $page = ($this->page)?$this->page:1;
  274. $pageSize = 10;
  275. $query = BusinessMemberOrder::find()->alias('o')->leftJoin(['b'=>BusinessMember::tableName()],'o.member_id=b.id')->leftJoin(['s' => SaasUser::tableName()], 'o.saas_id = s.id')->where(['o.is_delete'=>0,'o.pay_type'=>1]);
  276. if($search_type == 1){
  277. $query->andWhere(['>=','o.end_time',time()]);
  278. }elseif($search_type == 2){
  279. $query->andWhere(['<=','o.end_time',time()]);
  280. }
  281. if($start_time){
  282. $query->andWhere(['>=','o.pay_time',strtotime($start_time)]);
  283. }
  284. if($end_time){
  285. $query->andWhere(['<=','o.pay_time',strtotime($end_time)]);
  286. }
  287. if($saas_name){
  288. $query->andWhere(['like','s.name',$saas_name]);
  289. }
  290. $countQuery = clone $query;
  291. $count = $countQuery->count();
  292. $query->offset(($page - 1) * $pageSize)->limit($pageSize);
  293. $list = $query->select("o.id,s.name userName,b.name cartName,b.sale_info,o.pay_price,o.member_type,o.pay_time,o.end_time,o.pay_type")->orderBy("o.pay_time desc")->asArray()->all();
  294. foreach($list as $k=>$v){
  295. $saleInfo = json_decode($v['sale_info'],true);
  296. $saleInfo = array_column($saleInfo,NULL ,'type');
  297. $list[$k]['alias_name'] = $saleInfo[$v['member_type']]['name'];
  298. if($v['member_type'] == 'perpetual'){
  299. $list[$k]['end_time'] = 9999999999;
  300. }
  301. }
  302. return [
  303. 'code' =>0,
  304. 'data' => [
  305. 'totalCount' => (int)$count,
  306. 'list' => $list,
  307. 'page' => $page,
  308. 'pageSize' => (int)$pageSize
  309. ]
  310. ];
  311. }
  312. //权限时间
  313. public function rightDuration($saas_id,$rid,$addTime,$from = 1){
  314. $duration = BusinessRightDuration::find()->where(['right_id'=>$rid,'saas_id'=>$saas_id,'is_delete'=>0])->one();
  315. if(!$duration){
  316. $duration = new BusinessRightDuration();
  317. $duration->saas_id = $saas_id;
  318. $duration->right_id = $rid;
  319. $duration->created_at = time();
  320. $duration->expire_time = ($addTime == 0) ? 0 : time()+ $addTime;
  321. $duration->is_delete = 0;
  322. $duration->from = $from;
  323. return $duration->save();
  324. }else{
  325. if($duration->expire_time > 0){
  326. $expire_time = $duration->expire_time;
  327. //如果已经过期从当前时间开始
  328. if($duration->expire_time <= time()){
  329. $expire_time = time();
  330. }
  331. $duration->expire_time = ($addTime == 0) ? 0 : $expire_time + $addTime;
  332. return $duration->save();
  333. }else{
  334. $duration->expire_time = ($addTime == 0) ? 0 : time()+ $addTime;;
  335. return $duration->save();
  336. }
  337. }
  338. }
  339. }