CancelService.php 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <?php
  2. namespace services\member;
  3. use Yii;
  4. use yii\web\UnprocessableEntityHttpException;
  5. use common\components\Service;
  6. use common\enums\AuditStatusEnum;
  7. use common\enums\StatusEnum;
  8. use common\models\member\Cancel;
  9. use common\models\member\Member;
  10. /**
  11. * Class CancelService
  12. * @package services\member
  13. * @author jianyan74 <751393839@qq.com>
  14. */
  15. class CancelService extends Service
  16. {
  17. /**
  18. * @param Member $member
  19. * @return true
  20. * @throws UnprocessableEntityHttpException
  21. */
  22. public function create(Member $member)
  23. {
  24. if ($lastModel = $this->findLastByMemberId($member->id)) {
  25. if ($lastModel['audit_status'] == StatusEnum::DISABLED) {
  26. throw new UnprocessableEntityHttpException('审核中,请不要重复申请');
  27. }
  28. if ($lastModel['audit_status'] == StatusEnum::ENABLED) {
  29. throw new UnprocessableEntityHttpException('审核通过,请不要重复申请');
  30. }
  31. }
  32. $model = new Cancel();
  33. $model->member_id = $member->id;
  34. // 获取配置
  35. $config = Yii::$app->services->addonsConfig->findConfigByCache('Member', $member->merchant_id, true);
  36. if (isset($config['cancel_audit_status']) && $config['cancel_audit_status'] == StatusEnum::DISABLED) {
  37. $model->audit_status = AuditStatusEnum::ENABLED;
  38. $model->audit_time = time();
  39. $model->save();
  40. // 会员注销
  41. $member->status = StatusEnum::DELETE;
  42. $member->save();
  43. } else {
  44. $model->save();
  45. throw new UnprocessableEntityHttpException('申请成功, 请等待审核');
  46. }
  47. return true;
  48. }
  49. /**
  50. * @return int|string
  51. */
  52. public function getApplyCount()
  53. {
  54. return Cancel::find()
  55. ->where(['audit_status' => AuditStatusEnum::DISABLED])
  56. ->andFilterWhere(['merchant_id' => $this->getMerchantId()])
  57. ->count();
  58. }
  59. /**
  60. * @param $id
  61. * @return array|\yii\db\ActiveRecord|null
  62. */
  63. public function findById($id)
  64. {
  65. return Cancel::find()
  66. ->where(['id' => $id])
  67. ->andFilterWhere(['merchant_id' => $this->getMerchantId()])
  68. ->one();
  69. }
  70. /**
  71. * @param $member_id
  72. * @return array|\yii\db\ActiveRecord|null
  73. */
  74. public function findLastByMemberId($member_id)
  75. {
  76. return Cancel::find()
  77. ->where(['status' => StatusEnum::ENABLED])
  78. ->andWhere(['member_id' => $member_id])
  79. ->andFilterWhere(['merchant_id' => $this->getMerchantId()])
  80. ->orderBy('id desc')
  81. ->asArray()
  82. ->one();
  83. }
  84. }
粤ICP备19079148号