2024-11-07 18:11:08 +08:00
|
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace app\common\model\dyqc;
|
|
|
|
|
|
2024-11-14 18:40:04 +08:00
|
|
|
|
use app\common\model\BaseModel;
|
2024-12-11 19:03:47 +08:00
|
|
|
|
use app\common\model\school\Area;
|
2024-11-07 18:11:08 +08:00
|
|
|
|
use app\common\model\school\classes\ClassesLib;
|
|
|
|
|
use app\common\model\school\classes\Teacher;
|
2024-12-13 18:37:50 +08:00
|
|
|
|
use app\common\model\school\classes\Verification;
|
2024-11-14 18:40:04 +08:00
|
|
|
|
use app\common\model\User;
|
2024-11-15 18:26:03 +08:00
|
|
|
|
use app\manystore\model\Manystore;
|
|
|
|
|
use app\manystore\model\ManystoreAuthGroup;
|
|
|
|
|
use app\manystore\model\ManystoreAuthGroupAccess;
|
|
|
|
|
use fast\Random;
|
|
|
|
|
use think\Cache;
|
2024-11-07 18:11:08 +08:00
|
|
|
|
use think\Model;
|
|
|
|
|
|
|
|
|
|
|
2024-11-14 18:40:04 +08:00
|
|
|
|
class ManystoreShop extends BaseModel
|
2024-11-07 18:11:08 +08:00
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 表名
|
|
|
|
|
protected $name = 'manystore_shop';
|
|
|
|
|
|
|
|
|
|
// 自动写入时间戳字段
|
|
|
|
|
protected $autoWriteTimestamp = false;
|
|
|
|
|
|
|
|
|
|
// 定义时间戳字段名
|
|
|
|
|
protected $createTime = false;
|
|
|
|
|
protected $updateTime = false;
|
|
|
|
|
protected $deleteTime = false;
|
|
|
|
|
|
|
|
|
|
// 追加属性
|
|
|
|
|
protected $append = [
|
2024-11-18 19:01:04 +08:00
|
|
|
|
'type_text',
|
2024-11-07 18:11:08 +08:00
|
|
|
|
'status_text',
|
|
|
|
|
'auth_time_text',
|
|
|
|
|
'create_time_text',
|
|
|
|
|
'update_time_text'
|
|
|
|
|
];
|
|
|
|
|
|
2024-11-18 19:01:04 +08:00
|
|
|
|
public function getTypeList()
|
|
|
|
|
{
|
|
|
|
|
return ['1' => __('Type 1'), '2' => __('Type 2')];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function getTypeTextAttr($value, $data)
|
|
|
|
|
{
|
|
|
|
|
$value = $value ? $value : (isset($data['type']) ? $data['type'] : '');
|
|
|
|
|
$list = $this->getTypeList();
|
|
|
|
|
return isset($list[$value]) ? $list[$value] : '';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-11-15 18:26:03 +08:00
|
|
|
|
// 拼音对象
|
|
|
|
|
protected static $pinyin = null;
|
|
|
|
|
|
|
|
|
|
protected static function init()
|
|
|
|
|
{
|
|
|
|
|
self::$pinyin = new \Overtrue\Pinyin\Pinyin('Overtrue\Pinyin\MemoryFileDictLoader');
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2024-11-07 18:11:08 +08:00
|
|
|
|
/** 专家团队
|
|
|
|
|
* @return \think\model\relation\HasMany
|
|
|
|
|
*/
|
|
|
|
|
public function teachers()
|
|
|
|
|
{
|
|
|
|
|
return $this->hasMany(Teacher::class,'shop_id')->where("status","1")->order("weigh desc");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function getLogoAttr($value, $data)
|
|
|
|
|
{
|
|
|
|
|
if (!empty($value)) return cdnurl($value, true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function getImageAttr($value, $data)
|
|
|
|
|
{
|
|
|
|
|
if (!empty($value)) return cdnurl($value, true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function getImagesAttr($value, $data)
|
|
|
|
|
{
|
|
|
|
|
$imagesArray = [];
|
|
|
|
|
if (!empty($value)) {
|
|
|
|
|
$imagesArray = explode(',', $value);
|
|
|
|
|
foreach ($imagesArray as &$v) {
|
|
|
|
|
$v = cdnurl($v, true);
|
|
|
|
|
}
|
|
|
|
|
return $imagesArray;
|
|
|
|
|
}
|
|
|
|
|
return $imagesArray;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function getYyzzImagesAttr($value, $data)
|
|
|
|
|
{
|
|
|
|
|
$imagesArray = [];
|
|
|
|
|
if (!empty($value)) {
|
|
|
|
|
$imagesArray = explode(',', $value);
|
|
|
|
|
foreach ($imagesArray as &$v) {
|
|
|
|
|
$v = cdnurl($v, true);
|
|
|
|
|
}
|
|
|
|
|
return $imagesArray;
|
|
|
|
|
}
|
|
|
|
|
return $imagesArray;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function getStatusList()
|
|
|
|
|
{
|
|
|
|
|
return ['0' => __('Status 0'), '1' => __('Status 1'), '2' => __('Status 2')];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function getStatusTextAttr($value, $data)
|
|
|
|
|
{
|
|
|
|
|
$value = $value ? $value : (isset($data['status']) ? $data['status'] : '');
|
|
|
|
|
$list = $this->getStatusList();
|
|
|
|
|
return isset($list[$value]) ? $list[$value] : '';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function getAuthTimeTextAttr($value, $data)
|
|
|
|
|
{
|
|
|
|
|
$value = $value ? $value : (isset($data['auth_time']) ? $data['auth_time'] : '');
|
|
|
|
|
return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function getCreateTimeTextAttr($value, $data)
|
|
|
|
|
{
|
|
|
|
|
$value = $value ? $value : (isset($data['create_time']) ? $data['create_time'] : '');
|
|
|
|
|
return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function getUpdateTimeTextAttr($value, $data)
|
|
|
|
|
{
|
|
|
|
|
$value = $value ? $value : (isset($data['update_time']) ? $data['update_time'] : '');
|
|
|
|
|
return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected function setAuthTimeAttr($value)
|
|
|
|
|
{
|
|
|
|
|
return $value === '' ? null : ($value && !is_numeric($value) ? strtotime($value) : $value);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected function setCreateTimeAttr($value)
|
|
|
|
|
{
|
|
|
|
|
return $value === '' ? null : ($value && !is_numeric($value) ? strtotime($value) : $value);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected function setUpdateTimeAttr($value)
|
|
|
|
|
{
|
|
|
|
|
return $value === '' ? null : ($value && !is_numeric($value) ? strtotime($value) : $value);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function admin()
|
|
|
|
|
{
|
|
|
|
|
return $this->belongsTo('app\admin\model\Admin', 'admin_id', 'id', [], 'LEFT')->setEagerlyType(0);
|
|
|
|
|
}
|
|
|
|
|
|
2024-11-26 17:59:18 +08:00
|
|
|
|
public function user()
|
|
|
|
|
{
|
|
|
|
|
return $this->belongsTo('app\common\model\User', 'user_id', 'id', [], 'LEFT')->setEagerlyType(0);
|
|
|
|
|
}
|
|
|
|
|
|
2024-11-07 18:11:08 +08:00
|
|
|
|
|
2024-11-16 18:01:16 +08:00
|
|
|
|
public function checkFull($id){
|
|
|
|
|
$self = $this->get($id,['teachers']);
|
2024-12-18 09:37:26 +08:00
|
|
|
|
if($self){
|
2024-11-16 18:01:16 +08:00
|
|
|
|
if(empty($self["address_city"])
|
|
|
|
|
|| empty($self["province"])
|
|
|
|
|
|| empty($self["city"])
|
|
|
|
|
|| empty($self["district"])
|
|
|
|
|
|| empty($self["longitude"])
|
|
|
|
|
|| empty($self["latitude"])
|
|
|
|
|
|| empty($self["name"])
|
|
|
|
|
|| empty($self["image"])
|
|
|
|
|
|| empty($self["images"])
|
|
|
|
|
|| empty($self["content"])
|
|
|
|
|
|| empty($self["tel"])
|
2024-12-13 18:37:50 +08:00
|
|
|
|
|| empty($self["logo"])
|
2024-11-16 18:01:16 +08:00
|
|
|
|
) return false;
|
|
|
|
|
|
2024-12-18 09:37:26 +08:00
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
return false;
|
2024-11-16 18:01:16 +08:00
|
|
|
|
}
|
|
|
|
|
|
2024-12-13 18:37:50 +08:00
|
|
|
|
public function checkFullMsg($id){
|
2024-12-18 09:37:26 +08:00
|
|
|
|
if($id && $this->checkFull($id)){
|
2024-12-13 18:37:50 +08:00
|
|
|
|
//必要信息已完善
|
|
|
|
|
return '<div class="alert alert-success-light">
|
|
|
|
|
<b >必要展示信息已完善!可正常上架课程!</b></div>';
|
|
|
|
|
}else{
|
|
|
|
|
//必要信息未完善
|
|
|
|
|
return "<div class='alert alert-danger-light'><b>必要展示信息未完善,请先在机构完善展示信息</b><br><br>
|
|
|
|
|
|
|
|
|
|
<span>必要展示信息为: </span><br><br><br>
|
|
|
|
|
<span>1:地址信息:包括详细地址、所在城市、所在省、所在市、所在县、经纬度</span><br>
|
|
|
|
|
<span>2:店铺名称</span><br>
|
|
|
|
|
<span>3:店铺logo</span><br>
|
|
|
|
|
<span>4:店铺封面图</span><br>
|
|
|
|
|
<span>5:店铺环境照</span><br>
|
|
|
|
|
<span>6:服务电话</span><br>
|
|
|
|
|
<span>7:店铺详情</span><br><br><br>
|
|
|
|
|
<b>请您确保上述信息均已完善后才能正常上架课程。 </b><br><br>
|
|
|
|
|
<b>若已完善请您刷新页面。 </b><br><br>
|
|
|
|
|
</div>
|
|
|
|
|
";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2024-11-16 18:01:16 +08:00
|
|
|
|
|
2024-11-07 18:11:08 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** 机构详情
|
|
|
|
|
* @param $id
|
|
|
|
|
* @throws \think\exception\DbException
|
|
|
|
|
*/
|
|
|
|
|
public function detail($id){
|
|
|
|
|
$self = $this->get($id,['teachers']);
|
2024-11-16 18:01:16 +08:00
|
|
|
|
if(!$this->checkFull($id))throw new \Exception("当前机构未完善信息,暂时无法展示!");
|
|
|
|
|
|
|
|
|
|
|
2024-11-07 18:11:08 +08:00
|
|
|
|
//一对多隐藏字段方法
|
|
|
|
|
// foreach ($self['teachers'] as $k=>$v){
|
|
|
|
|
// $v->visible(['id','name','expert_image','expert_content']);
|
|
|
|
|
// }
|
|
|
|
|
// $self->visible(['id','name','expert_image','expert_content']);
|
|
|
|
|
$self["hot"] = $this->getHotClasses($id,$limit=5);
|
|
|
|
|
return $self;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function getHotClasses($id,$limit=5){
|
|
|
|
|
$data = ClassesLib::where("shop_id",$id)
|
|
|
|
|
->where("status",'1')
|
|
|
|
|
->limit($limit)
|
|
|
|
|
->order("hot desc,weigh desc")
|
|
|
|
|
->field("title,headimage,price,hot,weigh")
|
|
|
|
|
->select();
|
|
|
|
|
return $data;
|
|
|
|
|
}
|
|
|
|
|
|
2024-11-14 18:40:04 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**申请机构
|
|
|
|
|
* @param $type 申请类型 类型:1=个人,2=机构
|
|
|
|
|
* @param int $user_id 申请人
|
|
|
|
|
* @param $params 申请参数
|
|
|
|
|
* @param bool $check
|
|
|
|
|
* @param bool $trans
|
|
|
|
|
* @return bool
|
|
|
|
|
* @throws \Exception
|
|
|
|
|
*/
|
2024-11-15 18:26:03 +08:00
|
|
|
|
public function apply($type,$user_id=0,$params=[],$check=false,$trans=false){
|
2024-11-14 18:40:04 +08:00
|
|
|
|
|
|
|
|
|
if($check){
|
|
|
|
|
$user = User::get($user_id);
|
|
|
|
|
if(!$user)throw new \Exception("用户不存在");
|
|
|
|
|
//已经是机构
|
|
|
|
|
$shop = ManystoreShop::where( 'user_id',$user_id)->where("status","1")->find();
|
|
|
|
|
if($shop)throw new \Exception("已申请机构,请勿重复申请");
|
|
|
|
|
|
|
|
|
|
//验证参数
|
|
|
|
|
//$type 1=个人,2=机构
|
|
|
|
|
if(!in_array($type,['1','2']))throw new \Exception("类型参数错误");
|
2024-12-11 19:03:47 +08:00
|
|
|
|
|
|
|
|
|
if(!in_array($params['gender'],[0,1]))throw new \Exception("年龄参数错误");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-11-14 18:40:04 +08:00
|
|
|
|
//switch不同类型type做不同验证
|
|
|
|
|
//未传手机号则默认用户手机号
|
|
|
|
|
if(empty($params['tel'])) $params['tel'] = $user['mobile'];
|
|
|
|
|
|
|
|
|
|
switch ($type) {
|
|
|
|
|
case '1': //个人
|
|
|
|
|
$rule = [
|
|
|
|
|
'name' => 'require',
|
|
|
|
|
'tel' => 'require|number',
|
|
|
|
|
// 'desc' => 'require',
|
|
|
|
|
'front_idcard_image' => 'require',
|
|
|
|
|
'reverse_idcard_image' => 'require',
|
2024-12-11 19:03:47 +08:00
|
|
|
|
|
|
|
|
|
'address' => 'require',
|
|
|
|
|
// 'address_detail' => 'require',
|
|
|
|
|
'longitude' => 'require',
|
|
|
|
|
'latitude' => 'require',
|
|
|
|
|
'province' => 'require',
|
|
|
|
|
'city' => 'require',
|
|
|
|
|
'district' => 'require',
|
|
|
|
|
|
|
|
|
|
'gender'=> 'require',
|
|
|
|
|
'nation'=> 'require',
|
|
|
|
|
'out_look'=> 'require',
|
|
|
|
|
'birthtime'=> 'require',
|
|
|
|
|
'native_place'=> 'require',
|
|
|
|
|
'card_number'=> 'require',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-11-14 18:40:04 +08:00
|
|
|
|
];
|
|
|
|
|
$rule_msg = [
|
|
|
|
|
'name.require' => '姓名必须填写',
|
|
|
|
|
'tel.require' => '服务电话必须填写',
|
|
|
|
|
'tel.number' => '服务电话必须是数字',
|
|
|
|
|
// 'desc.require' => '申请备注必须填写',
|
|
|
|
|
'front_idcard_image.require' => '身份证正面必须上传',
|
|
|
|
|
'reverse_idcard_image.require' => '身份证反面必须上传',
|
2024-12-11 19:03:47 +08:00
|
|
|
|
'address.require' => '地址必填',
|
|
|
|
|
// 'address_detail.require' => '详细地址必填',
|
|
|
|
|
'longitude.require' => '经度必填',
|
|
|
|
|
'latitude.require' => '纬度必填',
|
|
|
|
|
'province.require' => '省编号必填',
|
|
|
|
|
'city.require' => '市编号必填',
|
|
|
|
|
'district.require' => '县区编号必填',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
'gender.require'=> '个人性别必填',
|
|
|
|
|
'nation.require'=> '个人民族必填',
|
|
|
|
|
'out_look.require'=> '个人政治面貌必填',
|
|
|
|
|
'birthtime.require'=> '个人出生日期必填',
|
|
|
|
|
'native_place.require'=> '个人籍贯必填',
|
|
|
|
|
'card_number.require'=> '个人身份证号码必填',
|
|
|
|
|
|
2024-11-14 18:40:04 +08:00
|
|
|
|
];
|
|
|
|
|
break;
|
|
|
|
|
case '2': //机构
|
|
|
|
|
|
|
|
|
|
$rule = [
|
|
|
|
|
'name' => 'require',
|
|
|
|
|
'tel' => 'require|number',
|
|
|
|
|
// 'desc' => 'require',
|
|
|
|
|
'front_idcard_image' => 'require',
|
|
|
|
|
'reverse_idcard_image' => 'require',
|
|
|
|
|
'images' => 'require',
|
|
|
|
|
'yyzz_images' => 'require',
|
2024-12-13 18:37:50 +08:00
|
|
|
|
// 'yyzzdm' => 'require',
|
2024-12-04 18:17:08 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
'address' => 'require',
|
2024-12-11 19:03:47 +08:00
|
|
|
|
// 'address_detail' => 'require',
|
2024-12-04 18:17:08 +08:00
|
|
|
|
'longitude' => 'require',
|
|
|
|
|
'latitude' => 'require',
|
2024-12-11 19:03:47 +08:00
|
|
|
|
'province' => 'require',
|
|
|
|
|
'city' => 'require',
|
|
|
|
|
'district' => 'require',
|
|
|
|
|
|
|
|
|
|
// 'establish_time' => 'require',
|
|
|
|
|
// 'people' => 'require',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
'gender'=> 'require',
|
|
|
|
|
'nation'=> 'require',
|
|
|
|
|
'out_look'=> 'require',
|
|
|
|
|
'birthtime'=> 'require',
|
|
|
|
|
'native_place'=> 'require',
|
|
|
|
|
'card_number'=> 'require',
|
2024-12-04 18:17:08 +08:00
|
|
|
|
|
2024-11-14 18:40:04 +08:00
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
$rule_msg = [
|
2024-12-11 19:03:47 +08:00
|
|
|
|
'address.require' => '地址必填',
|
|
|
|
|
// 'address_detail.require' => '详细地址必填',
|
2024-12-04 18:17:08 +08:00
|
|
|
|
'longitude.require' => '经度必填',
|
|
|
|
|
'latitude.require' => '纬度必填',
|
2024-12-11 19:03:47 +08:00
|
|
|
|
'province.require' => '省编号必填',
|
|
|
|
|
'city.require' => '市编号必填',
|
|
|
|
|
'district.require' => '县区编号必填',
|
|
|
|
|
'name.require' => '机构名称必须填写',
|
|
|
|
|
'tel.require' => '服务电话必须填写',
|
|
|
|
|
'tel.number' => '服务电话必须是数字',
|
2024-11-14 18:40:04 +08:00
|
|
|
|
// 'desc.require' => '申请备注必须填写',
|
|
|
|
|
'front_idcard_image.require' => '法人身份证正面必须上传',
|
|
|
|
|
'reverse_idcard_image.require' => '法人身份证反面必须上传',
|
|
|
|
|
'images.require' => '机构环境照片必须上传',
|
|
|
|
|
'yyzz_images.require' => '营业执照照片必须上传',
|
2024-12-13 18:37:50 +08:00
|
|
|
|
// 'yyzzdm.require' => '企业统一信用代码必填',
|
2024-12-11 19:03:47 +08:00
|
|
|
|
// 'establish_time.require' => '成立时间必填',
|
|
|
|
|
// 'people.require' => '员工人数必填',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
'gender.require'=> '法人性别必填',
|
|
|
|
|
'nation.require'=> '法人民族必填',
|
|
|
|
|
'out_look.require'=> '法人政治面貌必填',
|
|
|
|
|
'birthtime.require'=> '法人出生日期必填',
|
|
|
|
|
'native_place.require'=> '法人籍贯必填',
|
|
|
|
|
'card_number.require'=> '法人身份证号码必填',
|
|
|
|
|
|
2024-11-14 18:40:04 +08:00
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
self::check($params,$rule,$rule_msg);
|
2024-12-11 19:03:47 +08:00
|
|
|
|
|
2024-11-14 18:40:04 +08:00
|
|
|
|
}
|
2024-12-11 19:03:47 +08:00
|
|
|
|
$province_name = Area::where("id" ,$params['province'])->value("name");
|
|
|
|
|
if(!$province_name) throw new \Exception("省份不存在");
|
|
|
|
|
$city_name = Area::where("id" ,$params['city'])->value("name");
|
|
|
|
|
if(!$city_name) throw new \Exception("市不存在");
|
|
|
|
|
$district_name = Area::where("id" ,$params['district'])->value("name");
|
|
|
|
|
if(!$district_name) throw new \Exception("区县不存在");
|
|
|
|
|
$params['address_city'] = $province_name."/".$city_name."/".$district_name;
|
|
|
|
|
|
2024-11-14 18:40:04 +08:00
|
|
|
|
$params["type"] = $type;
|
|
|
|
|
|
2024-11-15 18:26:03 +08:00
|
|
|
|
|
2024-11-14 18:40:04 +08:00
|
|
|
|
|
2024-12-13 18:37:50 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-11-14 18:40:04 +08:00
|
|
|
|
// $order = self::getHaveCancelOrder($order_no);
|
|
|
|
|
|
|
|
|
|
//判断逻辑
|
|
|
|
|
if($trans){
|
|
|
|
|
self::beginTrans();
|
|
|
|
|
}
|
|
|
|
|
$res = true;
|
|
|
|
|
try{
|
|
|
|
|
//事务逻辑
|
2024-11-15 18:26:03 +08:00
|
|
|
|
//得到申请单(没有则创建)
|
|
|
|
|
$shop = ManystoreShop::where( 'user_id',$user_id)->find();
|
|
|
|
|
//如果存在申请单,则直接更新这个单的状态
|
|
|
|
|
//如果不存在则创建一个新单
|
|
|
|
|
if(!$shop){
|
2024-12-13 18:37:50 +08:00
|
|
|
|
|
|
|
|
|
//申请认证的时候不能是老师或其他机构的核销员
|
|
|
|
|
$teacher = Teacher::where("user_id" ,$user_id)->find();
|
|
|
|
|
if($teacher) throw new \Exception("您已经是老师,不能申请认证!");
|
|
|
|
|
|
|
|
|
|
$verification = Verification::where("user_id" ,$user_id)->find();
|
|
|
|
|
if($verification) throw new \Exception("您已经是机构核销员,不能申请认证!");
|
|
|
|
|
|
2024-11-15 18:26:03 +08:00
|
|
|
|
//创建申请单
|
|
|
|
|
$shop = $this->creatShop($type,$user_id,$params);
|
2024-12-04 18:17:08 +08:00
|
|
|
|
}else{
|
|
|
|
|
//商家表单更新
|
|
|
|
|
$shop_info = $shop->allowField(true)->save($params);
|
|
|
|
|
if($shop_info === false){
|
|
|
|
|
throw new \Exception($shop->getError());
|
|
|
|
|
}
|
2024-11-15 18:26:03 +08:00
|
|
|
|
}
|
2024-12-13 18:37:50 +08:00
|
|
|
|
|
2024-12-04 18:17:08 +08:00
|
|
|
|
$shop = ManystoreShop::where( 'user_id',$user_id)->find();
|
2024-11-15 18:26:03 +08:00
|
|
|
|
//更新申请单状态为审核中
|
|
|
|
|
$shop['status']= '0';
|
|
|
|
|
//清空审核时间
|
|
|
|
|
$shop['reason']= '';
|
|
|
|
|
$shop['auth_time']= 0;
|
|
|
|
|
$shop["admin_id"] = 0;
|
|
|
|
|
$shop->save();
|
2024-11-16 18:01:16 +08:00
|
|
|
|
|
|
|
|
|
$store = Manystore::where("shop_id",$shop['id'])->find();
|
|
|
|
|
$store["status"] = 'hidden';
|
|
|
|
|
$store->save();
|
|
|
|
|
|
|
|
|
|
|
2024-11-15 18:26:03 +08:00
|
|
|
|
//调用订单事件
|
|
|
|
|
$data = ['shop' => $shop];
|
|
|
|
|
\think\Hook::listen('shop_apply_after', $data);
|
2024-11-14 18:40:04 +08:00
|
|
|
|
|
|
|
|
|
if($trans){
|
|
|
|
|
self::commitTrans();
|
|
|
|
|
}
|
|
|
|
|
}catch (\Exception $e){
|
|
|
|
|
if($trans){
|
|
|
|
|
self::rollbackTrans();
|
|
|
|
|
}
|
|
|
|
|
throw new \Exception($e->getMessage());
|
|
|
|
|
}
|
|
|
|
|
return $res;
|
|
|
|
|
}
|
|
|
|
|
|
2024-12-18 09:37:26 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**更新机构数据
|
|
|
|
|
* @param $type 申请类型 类型:1=个人,2=机构
|
|
|
|
|
* @param int $user_id 申请人
|
|
|
|
|
* @param $params 申请参数
|
|
|
|
|
* @param bool $check
|
|
|
|
|
* @param bool $trans
|
|
|
|
|
* @return bool
|
|
|
|
|
* @throws \Exception
|
|
|
|
|
*/
|
|
|
|
|
public function updateData($user_id=0,$params=[],$check=false,$trans=false){
|
|
|
|
|
|
|
|
|
|
if($check){
|
|
|
|
|
$user = User::get($user_id);
|
|
|
|
|
if(!$user)throw new \Exception("用户不存在");
|
|
|
|
|
//已经是机构
|
|
|
|
|
$shop = ManystoreShop::where( 'user_id',$user_id)->find();
|
|
|
|
|
if(!$shop)throw new \Exception("未申请机构,请先去申请机构");
|
|
|
|
|
|
|
|
|
|
//验证参数
|
|
|
|
|
//$type 1=个人,2=机构
|
|
|
|
|
if(!in_array($shop['type'],['1','2']))throw new \Exception("类型参数错误");
|
|
|
|
|
|
|
|
|
|
if(!in_array($params['gender'],[0,1]))throw new \Exception("年龄参数错误");
|
|
|
|
|
|
|
|
|
|
unset($params['user_id']);
|
|
|
|
|
unset($params['type']);
|
|
|
|
|
|
|
|
|
|
//switch不同类型type做不同验证
|
|
|
|
|
//未传手机号则默认用户手机号
|
|
|
|
|
if(empty($params['tel'])) $params['tel'] = $user['mobile'];
|
|
|
|
|
|
|
|
|
|
switch ($shop['type']) {
|
|
|
|
|
case '1': //个人
|
|
|
|
|
$rule = [
|
|
|
|
|
'name' => 'require',
|
|
|
|
|
'tel' => 'require|number',
|
|
|
|
|
// 'desc' => 'require',
|
|
|
|
|
'front_idcard_image' => 'require',
|
|
|
|
|
'reverse_idcard_image' => 'require',
|
|
|
|
|
|
|
|
|
|
'address' => 'require',
|
|
|
|
|
// 'address_detail' => 'require',
|
|
|
|
|
'longitude' => 'require',
|
|
|
|
|
'latitude' => 'require',
|
|
|
|
|
'province' => 'require',
|
|
|
|
|
'city' => 'require',
|
|
|
|
|
'district' => 'require',
|
|
|
|
|
|
|
|
|
|
'gender'=> 'require',
|
|
|
|
|
'nation'=> 'require',
|
|
|
|
|
'out_look'=> 'require',
|
|
|
|
|
'birthtime'=> 'require',
|
|
|
|
|
'native_place'=> 'require',
|
|
|
|
|
'card_number'=> 'require',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
];
|
|
|
|
|
$rule_msg = [
|
|
|
|
|
'name.require' => '姓名必须填写',
|
|
|
|
|
'tel.require' => '服务电话必须填写',
|
|
|
|
|
'tel.number' => '服务电话必须是数字',
|
|
|
|
|
// 'desc.require' => '申请备注必须填写',
|
|
|
|
|
'front_idcard_image.require' => '身份证正面必须上传',
|
|
|
|
|
'reverse_idcard_image.require' => '身份证反面必须上传',
|
|
|
|
|
'address.require' => '地址必填',
|
|
|
|
|
// 'address_detail.require' => '详细地址必填',
|
|
|
|
|
'longitude.require' => '经度必填',
|
|
|
|
|
'latitude.require' => '纬度必填',
|
|
|
|
|
'province.require' => '省编号必填',
|
|
|
|
|
'city.require' => '市编号必填',
|
|
|
|
|
'district.require' => '县区编号必填',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
'gender.require'=> '个人性别必填',
|
|
|
|
|
'nation.require'=> '个人民族必填',
|
|
|
|
|
'out_look.require'=> '个人政治面貌必填',
|
|
|
|
|
'birthtime.require'=> '个人出生日期必填',
|
|
|
|
|
'native_place.require'=> '个人籍贯必填',
|
|
|
|
|
'card_number.require'=> '个人身份证号码必填',
|
|
|
|
|
|
|
|
|
|
];
|
|
|
|
|
break;
|
|
|
|
|
case '2': //机构
|
|
|
|
|
|
|
|
|
|
$rule = [
|
|
|
|
|
'name' => 'require',
|
|
|
|
|
'tel' => 'require|number',
|
|
|
|
|
// 'desc' => 'require',
|
|
|
|
|
'front_idcard_image' => 'require',
|
|
|
|
|
'reverse_idcard_image' => 'require',
|
|
|
|
|
'images' => 'require',
|
|
|
|
|
'yyzz_images' => 'require',
|
|
|
|
|
// 'yyzzdm' => 'require',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
'address' => 'require',
|
|
|
|
|
// 'address_detail' => 'require',
|
|
|
|
|
'longitude' => 'require',
|
|
|
|
|
'latitude' => 'require',
|
|
|
|
|
'province' => 'require',
|
|
|
|
|
'city' => 'require',
|
|
|
|
|
'district' => 'require',
|
|
|
|
|
|
|
|
|
|
// 'establish_time' => 'require',
|
|
|
|
|
// 'people' => 'require',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
'gender'=> 'require',
|
|
|
|
|
'nation'=> 'require',
|
|
|
|
|
'out_look'=> 'require',
|
|
|
|
|
'birthtime'=> 'require',
|
|
|
|
|
'native_place'=> 'require',
|
|
|
|
|
'card_number'=> 'require',
|
|
|
|
|
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
$rule_msg = [
|
|
|
|
|
'address.require' => '地址必填',
|
|
|
|
|
// 'address_detail.require' => '详细地址必填',
|
|
|
|
|
'longitude.require' => '经度必填',
|
|
|
|
|
'latitude.require' => '纬度必填',
|
|
|
|
|
'province.require' => '省编号必填',
|
|
|
|
|
'city.require' => '市编号必填',
|
|
|
|
|
'district.require' => '县区编号必填',
|
|
|
|
|
'name.require' => '机构名称必须填写',
|
|
|
|
|
'tel.require' => '服务电话必须填写',
|
|
|
|
|
'tel.number' => '服务电话必须是数字',
|
|
|
|
|
// 'desc.require' => '申请备注必须填写',
|
|
|
|
|
'front_idcard_image.require' => '法人身份证正面必须上传',
|
|
|
|
|
'reverse_idcard_image.require' => '法人身份证反面必须上传',
|
|
|
|
|
'images.require' => '机构环境照片必须上传',
|
|
|
|
|
'yyzz_images.require' => '营业执照照片必须上传',
|
|
|
|
|
// 'yyzzdm.require' => '企业统一信用代码必填',
|
|
|
|
|
// 'establish_time.require' => '成立时间必填',
|
|
|
|
|
// 'people.require' => '员工人数必填',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
'gender.require'=> '法人性别必填',
|
|
|
|
|
'nation.require'=> '法人民族必填',
|
|
|
|
|
'out_look.require'=> '法人政治面貌必填',
|
|
|
|
|
'birthtime.require'=> '法人出生日期必填',
|
|
|
|
|
'native_place.require'=> '法人籍贯必填',
|
|
|
|
|
'card_number.require'=> '法人身份证号码必填',
|
|
|
|
|
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
self::check($params,$rule,$rule_msg);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
$province_name = Area::where("id" ,$params['province'])->value("name");
|
|
|
|
|
if(!$province_name) throw new \Exception("省份不存在");
|
|
|
|
|
$city_name = Area::where("id" ,$params['city'])->value("name");
|
|
|
|
|
if(!$city_name) throw new \Exception("市不存在");
|
|
|
|
|
$district_name = Area::where("id" ,$params['district'])->value("name");
|
|
|
|
|
if(!$district_name) throw new \Exception("区县不存在");
|
|
|
|
|
$params['address_city'] = $province_name."/".$city_name."/".$district_name;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// $order = self::getHaveCancelOrder($order_no);
|
|
|
|
|
|
|
|
|
|
//判断逻辑
|
|
|
|
|
if($trans){
|
|
|
|
|
self::beginTrans();
|
|
|
|
|
}
|
|
|
|
|
$res = true;
|
|
|
|
|
try{
|
|
|
|
|
//事务逻辑
|
|
|
|
|
|
|
|
|
|
//商家表单更新
|
|
|
|
|
$shop_info = $shop->allowField(true)->save($params);
|
|
|
|
|
if($shop_info === false){
|
|
|
|
|
throw new \Exception($shop->getError());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$shop = ManystoreShop::where( 'user_id',$user_id)->find();
|
|
|
|
|
//更新申请单状态为审核中 暂时先屏蔽
|
|
|
|
|
// $shop['status']= '0';
|
|
|
|
|
// //清空审核时间
|
|
|
|
|
// $shop['reason']= '';
|
|
|
|
|
// $shop['auth_time']= 0;
|
|
|
|
|
// $shop["admin_id"] = 0;
|
|
|
|
|
// $shop->save();
|
|
|
|
|
|
|
|
|
|
// $store = Manystore::where("shop_id",$shop['id'])->find();
|
|
|
|
|
// $store["status"] = 'hidden';
|
|
|
|
|
// $store->save();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//调用订单事件
|
|
|
|
|
$data = ['shop' => $shop];
|
|
|
|
|
\think\Hook::listen('shop_apply_after', $data);
|
|
|
|
|
|
|
|
|
|
if($trans){
|
|
|
|
|
self::commitTrans();
|
|
|
|
|
}
|
|
|
|
|
}catch (\Exception $e){
|
|
|
|
|
if($trans){
|
|
|
|
|
self::rollbackTrans();
|
|
|
|
|
}
|
|
|
|
|
throw new \Exception($e->getMessage());
|
|
|
|
|
}
|
|
|
|
|
return $res;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2024-11-15 18:26:03 +08:00
|
|
|
|
/** 机构后台默认密码获取
|
|
|
|
|
* @param $type
|
|
|
|
|
* @param $user_id
|
|
|
|
|
* @param $params
|
|
|
|
|
*
|
|
|
|
|
* @throws \think\exception\DbException
|
|
|
|
|
*/
|
2024-11-28 18:47:18 +08:00
|
|
|
|
public static function getDefaultPassword($type,$user_id,$params){
|
2024-11-15 18:26:03 +08:00
|
|
|
|
$user = User::get($user_id);
|
|
|
|
|
$defaultPassword = null;
|
|
|
|
|
switch ($type) {
|
|
|
|
|
case '1': //个人
|
|
|
|
|
//手机号 + 个人id生成的code
|
|
|
|
|
$defaultPassword = $user["mobile"].en_code($user['id']);
|
|
|
|
|
// $rule = [
|
|
|
|
|
// 'name' => 'require',
|
|
|
|
|
// 'tel' => 'require|number',
|
|
|
|
|
//// 'desc' => 'require',
|
|
|
|
|
// 'front_idcard_image' => 'require',
|
|
|
|
|
// 'reverse_idcard_image' => 'require',
|
|
|
|
|
// ];
|
|
|
|
|
// $rule_msg = [
|
|
|
|
|
// 'name.require' => '姓名必须填写',
|
|
|
|
|
// 'tel.require' => '服务电话必须填写',
|
|
|
|
|
// 'tel.number' => '服务电话必须是数字',
|
|
|
|
|
//// 'desc.require' => '申请备注必须填写',
|
|
|
|
|
// 'front_idcard_image.require' => '身份证正面必须上传',
|
|
|
|
|
// 'reverse_idcard_image.require' => '身份证反面必须上传',
|
|
|
|
|
// ];
|
|
|
|
|
break;
|
|
|
|
|
case '2': //机构
|
|
|
|
|
$defaultPassword = $user["mobile"].en_code($user['id']);
|
|
|
|
|
// $rule = [
|
|
|
|
|
// 'name' => 'require',
|
|
|
|
|
// 'tel' => 'require|number',
|
|
|
|
|
//// 'desc' => 'require',
|
|
|
|
|
// 'front_idcard_image' => 'require',
|
|
|
|
|
// 'reverse_idcard_image' => 'require',
|
|
|
|
|
// 'images' => 'require',
|
|
|
|
|
// 'yyzz_images' => 'require',
|
|
|
|
|
// ];
|
|
|
|
|
|
|
|
|
|
// $rule_msg = [
|
|
|
|
|
// 'name.require' => '机构名称必须填写',
|
|
|
|
|
// 'tel.require' => '服务电话必须填写',
|
|
|
|
|
// 'tel.number' => '服务电话必须是数字',
|
|
|
|
|
//// 'desc.require' => '申请备注必须填写',
|
|
|
|
|
// 'front_idcard_image.require' => '法人身份证正面必须上传',
|
|
|
|
|
// 'reverse_idcard_image.require' => '法人身份证反面必须上传',
|
|
|
|
|
// 'images.require' => '机构环境照片必须上传',
|
|
|
|
|
// 'yyzz_images.require' => '营业执照照片必须上传',
|
|
|
|
|
// ];
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
return $defaultPassword;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function creatShop($type,$user_id,$params){
|
|
|
|
|
|
2024-11-16 18:01:16 +08:00
|
|
|
|
$params["user_id"] = $user_id;
|
2024-11-15 18:26:03 +08:00
|
|
|
|
//商家附表
|
|
|
|
|
$shop = (new self);
|
|
|
|
|
$shop_info = $shop->allowField(true)->save($params);
|
|
|
|
|
if($shop_info === false){
|
|
|
|
|
throw new \Exception($shop->getError());
|
|
|
|
|
}
|
2024-12-13 18:37:50 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$user = User::where("id",$user_id)->find();
|
|
|
|
|
if(!$user) throw new \Exception("用户不存在");
|
|
|
|
|
|
2024-11-15 18:26:03 +08:00
|
|
|
|
//账号主表
|
|
|
|
|
$manystore_params = [
|
2024-12-13 18:37:50 +08:00
|
|
|
|
"nickname" => $user["realname"] ?: $user["nickname"],
|
2024-11-16 18:01:16 +08:00
|
|
|
|
"user_id"=>$user_id,
|
2024-11-15 18:26:03 +08:00
|
|
|
|
];
|
|
|
|
|
$manystore_params["username"] = $params["tel"] ?: self::$pinyin->permalink($manystore_params["nickname"]);
|
|
|
|
|
$manystore_params["email"] = $manystore_params["username"] . "@xx.com";
|
|
|
|
|
|
|
|
|
|
$manystore_params['password'] = self::getDefaultPassword($type,$user_id,$params);
|
|
|
|
|
|
|
|
|
|
$manystore_params['shop_id'] = $shop->id;
|
|
|
|
|
$manystore_params['salt'] = Random::alnum();
|
|
|
|
|
$manystore_params['password'] = md5(md5($manystore_params['password']) . $manystore_params['salt']);
|
|
|
|
|
$manystore_params['avatar'] = '/assets/img/avatar.png'; //设置新管理员默认头像。
|
2024-12-13 18:37:50 +08:00
|
|
|
|
|
|
|
|
|
//如果用户存在头像取用户头像
|
|
|
|
|
if($user["avatar"]) $manystore_params['avatar'] = $user["avatar"];
|
|
|
|
|
|
2024-11-15 18:26:03 +08:00
|
|
|
|
$manystore_params['is_main'] = 1;
|
2024-11-16 18:01:16 +08:00
|
|
|
|
$manystore_params['status'] = "hidden";
|
2024-11-15 18:26:03 +08:00
|
|
|
|
$model = new Manystore();
|
|
|
|
|
|
|
|
|
|
$result = $model->allowField(true)->save($manystore_params);
|
|
|
|
|
if ($result === false) {
|
|
|
|
|
throw new \Exception($model->getError());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$manystoreAuthGroupModel = new ManystoreAuthGroup();
|
|
|
|
|
$group = [];
|
|
|
|
|
|
|
|
|
|
switch ($type) {
|
|
|
|
|
case '1': //个人
|
|
|
|
|
$group['name'] = '个人认证类型';
|
|
|
|
|
$group['rules'] = '*';
|
|
|
|
|
break;
|
|
|
|
|
case '2': //机构
|
|
|
|
|
$group['name'] = '机构认证类型';
|
|
|
|
|
$group['rules'] = '*';
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$group['shop_id'] = $shop->id;
|
|
|
|
|
$group['createtime'] = time();
|
|
|
|
|
$group['updatetime'] = time();
|
|
|
|
|
$group_id = $manystoreAuthGroupModel->insertGetId($group);
|
|
|
|
|
if(!$group_id){
|
|
|
|
|
$this->error('添加失败');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$manystoreAuthGroupAccessModel = new ManystoreAuthGroupAccess();
|
|
|
|
|
$group_access = [];
|
|
|
|
|
$group_access['uid'] = $model->id;
|
|
|
|
|
$group_access['group_id'] = $group_id;
|
|
|
|
|
|
|
|
|
|
$manystoreAuthGroupAccessModel->insert($group_access);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//调用订单事件
|
|
|
|
|
$data = ['shop' => $shop];
|
|
|
|
|
\think\Hook::listen('shop_create_after', $data);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return $shop;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** 机耕申请状态查询
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
public static function getAuthInfo($user_id){
|
|
|
|
|
$auth_status = '-1'; //-1=未申请,0=待审核,1=审核通过,2=审核失败
|
|
|
|
|
$shop_id = 0;
|
|
|
|
|
$type = '1';
|
|
|
|
|
$reason =""; //失败原因
|
2024-12-18 09:37:26 +08:00
|
|
|
|
$check_full_msg = "";
|
|
|
|
|
$check_full = false;
|
|
|
|
|
$check_field = [
|
|
|
|
|
"address_city",
|
|
|
|
|
"province",
|
|
|
|
|
"city",
|
|
|
|
|
"district",
|
|
|
|
|
"longitude",
|
|
|
|
|
"latitude",
|
|
|
|
|
"name",
|
|
|
|
|
"image",
|
|
|
|
|
"images",
|
|
|
|
|
"content",
|
|
|
|
|
"tel",
|
|
|
|
|
"logo"
|
|
|
|
|
];
|
2024-12-04 18:17:08 +08:00
|
|
|
|
$apply_info = null;
|
2024-12-18 09:37:26 +08:00
|
|
|
|
if(!$user_id)return compact("check_full_msg","check_full","check_field",'auth_status','shop_id','reason','apply_info',"type");
|
2024-12-04 18:17:08 +08:00
|
|
|
|
|
2024-11-15 18:26:03 +08:00
|
|
|
|
//得到申请单
|
|
|
|
|
$apply_info = self::where("user_id",$user_id)->where("status","1")->find();
|
|
|
|
|
if(!$apply_info)$apply_info = self::where("user_id",$user_id)->find();
|
|
|
|
|
//不存在说明未申请,直接返回
|
|
|
|
|
if(!$apply_info){
|
2024-12-18 09:37:26 +08:00
|
|
|
|
return compact("check_full_msg","check_full","check_field",'auth_status','shop_id','reason','apply_info',"type");
|
2024-11-15 18:26:03 +08:00
|
|
|
|
}
|
|
|
|
|
$type = $apply_info['type'];
|
|
|
|
|
//从申请单取到申请状态
|
|
|
|
|
$auth_status = $apply_info['status'];
|
|
|
|
|
//如果是审核失败,取失败原因
|
|
|
|
|
if($auth_status == '2'){
|
|
|
|
|
$reason = $apply_info['reason'];
|
|
|
|
|
}
|
|
|
|
|
//如果是申请成功,取店铺id
|
|
|
|
|
if($auth_status == '1'){
|
2024-11-16 18:01:16 +08:00
|
|
|
|
$shop_id = $apply_info['id'];
|
2024-11-15 18:26:03 +08:00
|
|
|
|
}
|
|
|
|
|
|
2024-12-18 09:37:26 +08:00
|
|
|
|
//是否完善展示信息
|
|
|
|
|
$self = new self;
|
|
|
|
|
$check_full_msg = $self->checkFullMsg($shop_id);
|
|
|
|
|
$check_full = $self->checkFull($shop_id);
|
2024-11-15 18:26:03 +08:00
|
|
|
|
|
2024-12-18 09:37:26 +08:00
|
|
|
|
return compact("check_full_msg","check_full","check_field",'auth_status','shop_id','reason','apply_info',"type");
|
2024-11-15 18:26:03 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-11-14 18:40:04 +08:00
|
|
|
|
|
|
|
|
|
|
2024-11-26 17:59:18 +08:00
|
|
|
|
/**
|
|
|
|
|
* 获取所有课程列表
|
|
|
|
|
*/
|
|
|
|
|
public static function getVaildList($params) {
|
|
|
|
|
extract($params);
|
|
|
|
|
$a = (new self)->getWithAlisaName().'.';
|
|
|
|
|
// 查询自提点
|
|
|
|
|
if(isset($status) && in_array($status, [1,2,0])){
|
|
|
|
|
$selfetch = self::with(['user']);
|
|
|
|
|
}else{
|
|
|
|
|
$selfetch = self::with(['user'])->where($a.'status', '1')->where("{$a}auth_status",1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$order = $order?? 'normal';
|
|
|
|
|
$per_page = $limit ?? 10;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$field = "{$a}id,{$a}name,{$a}user_id,{$a}logo,{$a}image,{$a}images,{$a}address_city,{$a}city,{$a}province,{$a}district,{$a}address,{$a}address_detail,{$a}longitude,{$a}latitude,{$a}type,{$a}tel,{$a}status,{$a}create_time,{$a}update_time,{$a}weigh";
|
|
|
|
|
|
|
|
|
|
//得到距离
|
|
|
|
|
if (isset($latitude) && isset($longitude) && $latitude && $longitude) {
|
|
|
|
|
$field .= ', '.getDistanceBuilder($latitude, $longitude);
|
|
|
|
|
}else{
|
|
|
|
|
$field .= ', 0 as distance';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//得到每个
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$selfetch = $selfetch->field($field);
|
|
|
|
|
if (isset($keyword) && $keyword) {
|
|
|
|
|
$selfetch = $selfetch->where("{$a}name|{$a}address|{$a}address_detail|{$a}address_city", 'like', '%' . $keyword . '%');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (isset($user_id) && $user_id) {
|
|
|
|
|
$selfetch = $selfetch->where("{$a}user_id", 'in', ''.$user_id);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (isset($my) && $my && isset($my_user_id) && $my_user_id) {
|
|
|
|
|
$selfetch = $selfetch->where("{$a}user_id", 'in', ''.$my_user_id);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (isset($id) && $id) {
|
|
|
|
|
$selfetch = $selfetch->where("{$a}id", 'in', ''.$id);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (isset($teacher_id) && $teacher_id) {
|
|
|
|
|
$teacher = Teacher::where("id",$teacher_id)->find();
|
|
|
|
|
if($teacher){
|
|
|
|
|
$selfetch = $selfetch->where("{$a}id", 'in', ''.$teacher["shop_id"]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (isset($type) && $type) {
|
|
|
|
|
$selfetch = $selfetch->where("{$a}type", 'in', ''.$type);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (isset($status) && $status) {
|
|
|
|
|
$selfetch = $selfetch->where("{$a}status", 'in', ''.$status);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//区域搜索
|
|
|
|
|
if (isset($province) && $province) {
|
|
|
|
|
$selfetch = $selfetch->where("{$a}province", 'in', ''.$province);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (isset($city) && $city) {
|
|
|
|
|
$selfetch = $selfetch->where("{$a}city", 'in', ''.$city);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (isset($district) && $district) {
|
|
|
|
|
$selfetch = $selfetch->where("{$a}district", 'in', ''.$district);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//排序
|
|
|
|
|
switch ($order) {
|
|
|
|
|
case "normal": //综合排序(推薦優先)
|
|
|
|
|
$selfetch = $selfetch->order("{$a}weigh desc,{$a}id desc");
|
|
|
|
|
break;
|
|
|
|
|
case "distance": //距离优先 权重
|
|
|
|
|
$selfetch = $selfetch->order("distance asc,{$a}weigh desc,{$a}id desc");
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
throw new \Exception("不支持的排序类型");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(isset($nearby) && $nearby) {
|
|
|
|
|
$selfetch = $selfetch->having("distance <= {$nearby}");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$selfetch = $selfetch->paginate($per_page);
|
|
|
|
|
|
|
|
|
|
//额外附加数据
|
|
|
|
|
// foreach ($selfetch as $row) { //迭代器魔术方法遍历,填值自动引用传值
|
|
|
|
|
// //设置是否已收藏
|
|
|
|
|
// $row->is_collect = in_array($row->id,$collect_classes_lib_ids) ? 1 : 0;
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
return $selfetch;
|
|
|
|
|
}
|
|
|
|
|
|
2024-12-13 18:37:50 +08:00
|
|
|
|
/** 机构初始化数据
|
|
|
|
|
* @param $shop_id
|
|
|
|
|
* @return void
|
|
|
|
|
*/
|
|
|
|
|
public static function initData($shop_id){
|
|
|
|
|
|
|
|
|
|
//设置初始化课程
|
|
|
|
|
$shop = self::where("id",$shop_id)->find();
|
|
|
|
|
if($shop){
|
|
|
|
|
$user = $shop->user;
|
|
|
|
|
|
|
|
|
|
$manystore = Manystore::where("shop_id" ,$shop_id)->find();
|
|
|
|
|
if($user && $manystore){
|
|
|
|
|
//授权认证成功
|
|
|
|
|
$result = \app\common\model\manystore\UserAuth::auth(0,$shop["id"],$shop["user_id"],"1",'admin',0);
|
|
|
|
|
//删除用户所有老师和核销员
|
|
|
|
|
Teacher::where("user_id",$user["id"])->delete();
|
|
|
|
|
Verification::where("user_id",$user["id"])->delete();
|
|
|
|
|
//为用户初始化老师和核销员
|
|
|
|
|
$teacherData = [
|
|
|
|
|
"manystore_id"=> $manystore["id"],
|
|
|
|
|
"shop_id" => $shop["id"],
|
|
|
|
|
"user_id" => $user["id"],
|
|
|
|
|
"name" => $shop["name"] . "讲师",
|
|
|
|
|
"head_image" => $user["avatar"],
|
|
|
|
|
"content" => $shop["name"] . "讲师".",为您提供授课,核销,专人指导等服务。",
|
|
|
|
|
"status" => "2",
|
|
|
|
|
"weigh" => 0,
|
|
|
|
|
];
|
|
|
|
|
Teacher::create($teacherData);
|
|
|
|
|
|
|
|
|
|
$verification_data =[
|
|
|
|
|
"manystore_id"=> $manystore["id"],
|
|
|
|
|
"shop_id" => $shop["id"],
|
|
|
|
|
"user_id" => $user["id"],
|
|
|
|
|
"status" => "1",
|
|
|
|
|
];
|
|
|
|
|
Verification::create($verification_data);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
2024-11-26 17:59:18 +08:00
|
|
|
|
|
2024-12-13 18:37:50 +08:00
|
|
|
|
// public static function deleteDataByShopId($shop_id){
|
|
|
|
|
// $ids = ClassesLib::where("shop_id",$shop_id)->column("id");
|
|
|
|
|
//
|
|
|
|
|
//
|
|
|
|
|
// }
|
2024-11-14 18:40:04 +08:00
|
|
|
|
|
|
|
|
|
|
2024-11-07 18:11:08 +08:00
|
|
|
|
}
|