MemberService.php 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | Niucloud-admin 企业快速开发的saas管理平台
  4. // +----------------------------------------------------------------------
  5. // | 官方网址:https://www.niucloud.com
  6. // +----------------------------------------------------------------------
  7. // | niucloud团队 版权所有 开源版本可自由商用
  8. // +----------------------------------------------------------------------
  9. // | Author: Niucloud Team
  10. // +----------------------------------------------------------------------
  11. namespace app\service\api\member;
  12. use app\model\member\Member;
  13. use app\service\core\member\CoreMemberService;
  14. use core\base\BaseApiService;
  15. use core\exception\ApiException;
  16. use core\util\Barcode;
  17. use think\Model;
  18. /**
  19. * 会员服务层
  20. * Class MemberService
  21. * @package app\service\api\member
  22. */
  23. class MemberService extends BaseApiService
  24. {
  25. public function __construct()
  26. {
  27. parent::__construct();
  28. $this->model = new Member();
  29. }
  30. /**
  31. * 新增会员
  32. */
  33. public function add(array $data){
  34. return $this->model->create($data)?->member_id ?? 0;
  35. }
  36. /**
  37. * 更新会员
  38. * @param array $data
  39. * @return true
  40. */
  41. public function edit(array $data)
  42. {
  43. $member = $this->findMemberInfo(['member_id' => $this->member_id]);
  44. if($member->isEmpty()) throw new ApiException('MEMBER_NOT_EXIST');
  45. $member->allowField(['nickname', 'headimg', 'birthday', 'sex', 'last_visit_time'])->save($data);
  46. return true;
  47. }
  48. /**
  49. * 获取会员信息
  50. * @return array
  51. */
  52. public function getInfo()
  53. {
  54. $field = 'member_id, username, member_no, mobile, register_channel, nickname, headimg, member_level, member_label, login_ip, login_type, login_time, create_time, last_visit_time, last_consum_time, sex, status, birthday, point, balance, growth, is_member, member_time, is_del, province_id, city_id, district_id, address, location, money, money_get, wx_openid, weapp_openid, commission, commission_get, commission_cash_outing';
  55. return $this->model->where([['member_id', '=', $this->member_id]])->with(['member_level_name_bind'])->field($field)->append(['sex_name'])->findOrEmpty()->toArray();
  56. }
  57. /**
  58. * 检测会员信息是否存在
  59. * @return int
  60. */
  61. public function getCount($condition)
  62. {
  63. return $this->model->where($condition)->count();
  64. }
  65. /**
  66. * 会员中心信息
  67. */
  68. public function center()
  69. {
  70. $field = 'member_id, username, member_no, mobile, register_channel, nickname, headimg, member_level, member_label, login_ip, login_type, login_time, create_time, last_visit_time, last_consum_time, sex, status, birthday, point, balance, growth, is_member, member_time, is_del, province_id, city_id, district_id, address, location, money, money_get, commission, commission_get, commission_cash_outing';
  71. return $this->model->where([['member_id', '=', $this->member_id]])->field($field)->append(['sex_name'])->findOrEmpty()->toArray();
  72. }
  73. /**
  74. * 获取会员的模型对象(todo 慎用!!! 现主要用于登录)
  75. * @param array $data
  76. * @return Member|array|mixed|Model !!! 仔细看,返回值是模型对象 如果想要判断是否为空 请用 $member->isEmpty()
  77. */
  78. public function findMemberInfo(array $data){
  79. //会员账号
  80. if(!empty($data['username']))
  81. $where[] = ['username', '=', $data['username']];
  82. //会员手机号
  83. if(!empty($data['mobile']))
  84. $where[] = ['mobile', '=', $data['mobile']];
  85. //会员id
  86. if(!empty($data['member_id']))
  87. $where[] = ['member_id', '=', $data['member_id']];
  88. //微信公众号openid
  89. if(!empty($data['wx_openid']))
  90. $where[] = ['wx_openid', '=', $data['wx_openid']];
  91. //微信小程序openid
  92. if(!empty($data['weapp_openid']))
  93. $where[] = ['weapp_openid', '=', $data['weapp_openid']];
  94. // 微信unionid
  95. if(!empty($data['wx_unionid']))
  96. $where[] = ['wx_unionid', '=', $data['wx_unionid']];
  97. if(!empty($data['username|mobile']))
  98. $where[] = ['username|mobile', '=', $data['username|mobile']];
  99. if(empty($where)){
  100. $where[] = ['member_id', '=', -1];
  101. }
  102. return $this->model->where($where)->findOrEmpty();
  103. }
  104. /**
  105. * 通过对象修改会员信息
  106. * @param $member
  107. * @param $data
  108. * @return void
  109. */
  110. public function editByFind($member, $data){
  111. return $member->save($data);
  112. }
  113. /**
  114. * 修改字段
  115. * @param string $field
  116. * @param $data
  117. * @return null
  118. */
  119. public function modify(string $field, $data)
  120. {
  121. return (new CoreMemberService())->modify(0, $this->member_id, $field, $data);
  122. }
  123. public function getQrcode(){
  124. // 生成会员二维码
  125. $qrcode_dir = 'upload/member/temp';
  126. if (!is_dir($qrcode_dir)) mkdir($qrcode_dir, intval('0755', 8), true);
  127. $id = "member-".$this->member_id;
  128. $qrcode_path = "{$qrcode_dir}/order_qrcode_{$this->member_id}.png";
  129. \core\util\QRcode::png($id, $qrcode_path, 'L', 16, 1);
  130. // 生成会员条形码
  131. $barcode_path = (new Barcode(14, $id))->generateBarcode($qrcode_dir, 2);
  132. $detail = [];
  133. $detail['verify_code_qrcode'] = image_to_base64($qrcode_path, true);
  134. $detail['verify_code_barcode'] = image_to_base64($barcode_path);
  135. return $detail;
  136. }
  137. }