where(['is_show'=>1,'level'=>1])->field('id,name')->select()->toArray(); return $lists; } /** * @notes 技能列表 * @return Skill[]|array|\think\Collection * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException * @author cjhao * @date 2024/10/16 16:48 */ public function skillLists() { $lists = (new Skill())->where(['is_show'=>1])->field('id,name')->select()->toArray(); return $lists; } /** * @notes 添加商品 * @param array $params * @return string|true * @author cjhao * @date 2024/10/16 17:38 */ public function add(array $params) { // 启动事务 Db::startTrans(); try { $goodsImage = $params['goods_image']; $image = array_shift($params['goods_image']); //添加服务信息 $goods = Goods::create([ 'name' => $params['name'], 'category_id' => $params['category_id'], 'shop_id' => $params['shop_id'], 'image' => $image, 'price' => $params['price'], 'duration' => $params['duration'], 'scribing_price' => $params['scribing_price'] ?? 0.00, 'status' => $params['status'], 'sort' => $params['sort'] ?? DefaultEnum::SORT, 'tags' => $params['tags'] ?? '', 'content' => $params['content'] ?? '', 'overtime_price' => $params['overtime_price'] ?? '', 'overtime_duration' => $params['overtime_duration'] ?? '', 'commission_ratio' => $params['commission_ratio'] ?? '', 'shop_ration' => $params['shop_ration'] ?? '', 'virtual_order_num' => $params['virtual_order_num'] ?? '', 'appoint_start_time' => $params['appoint_start_time'] ?? '', 'appoint_end_time' => $params['appoint_end_time'] ?? '', ]); $goodsImageLists = []; //添加服务轮播图信息 foreach ($goodsImage as $image_uri) { $goodsImageLists[] = [ 'goods_id' => $goods->id, 'uri' => $image_uri, ]; } (new GoodsImage())->saveAll($goodsImageLists); $goodsSkillLists = []; foreach ($params['skill_id'] as $skillId) { $goodsSkillLists[] = [ 'goods_id' => $goods->id, 'skill_id' => $skillId ]; } (new GoodsSkillIndex())->saveAll($goodsSkillLists); $shopCityId = Shop::where(['id'=>$params['shop_id']])->value('city_id'); (new GoodsCityIndex())->save([ 'goods_id' => $goods->id, 'city_id' => $shopCityId ]); // 提交事务 Db::commit(); return true; } catch (\Exception $e) { // 回滚事务 Db::rollback(); return $e->getMessage(); } } /** * @notes 编辑服务 * @param array $params * @return string|true * @author cjhao * @date 2024/10/17 14:43 */ public function edit(array $params) { // 启动事务 Db::startTrans(); try { $goodsImage = $params['goods_image']; $image = array_shift($params['goods_image']); $goods = Goods::where(['id'=>$params['id']])->findOrEmpty(); $auditStatus = GoodsEnum::AUDIT_STATUS_PASS; if(GoodsEnum::AUDIT_STATUS_REFUSE == $goods->audit_status){ $auditStatus = GoodsEnum::AUDIT_STATUS_WAIT; } $needAudit = ['price','duration','overtime_price','overtime_duration','commission_ratio']; foreach ($params as $field=> $value){ if(!isset($needAudit[$field])){ $goodsValue = $goods[$field] ?? ''; if($value != $goodsValue){ $auditStatus = GoodsEnum::AUDIT_STATUS_WAIT; } } } // if($goods->price != $params['price']){ // } // if($goods->price != $params['price']){ // $auditStatus = GoodsEnum::AUDIT_STATUS_WAIT; // } // if($goods->duration != $params['duration']){ // $auditStatus = GoodsEnum::AUDIT_STATUS_WAIT; // } // if($goods->overtime_price != $params['overtime_price']){ // $auditStatus = GoodsEnum::AUDIT_STATUS_WAIT; // } // if($goods->overtime_duration != $params['overtime_duration']){ // $auditStatus = GoodsEnum::AUDIT_STATUS_WAIT; // } //更新服务信息 Goods::update([ 'name' => $params['name'], 'category_id' => $params['category_id'], 'image' => $image, 'price' => $params['price'], 'duration' => $params['duration'], 'scribing_price' => $params['scribing_price'] ?? 0.00, 'status' => $params['status'], 'sort' => $params['sort'] ?? DefaultEnum::SORT, 'tags' => $params['tags'] ?? '', 'content' => $params['content'] ?? '', 'overtime_price' => $params['overtime_price'] ?? '', 'overtime_duration' => $params['overtime_duration'] ?? '', 'commission_ratio' => $params['commission_ratio'] ?? '', // 'shop_ration' => $params['shop_ration'] ?? '', 'audit_status' => $auditStatus, 'virtual_order_num' => $params['virtual_order_num'] ?? '', 'appoint_start_time' => $params['appoint_start_time'] ?? '', 'appoint_end_time' => $params['appoint_end_time'] ?? '', ],['id'=>$params['id']]); $goodsImageLists = []; //删除旧的轮播图 GoodsImage::where('goods_id',$params['id'])->delete(); //添加服务轮播图信息 foreach ($goodsImage as $image_uri) { $goodsImageLists[] = [ 'goods_id' => $params['id'], 'uri' => $image_uri, ]; } (new GoodsImage())->saveAll($goodsImageLists); //删除管理图片,删除管理城市 GoodsSkillIndex::where('goods_id',$params['id'])->delete(); $goodsSkillLists = []; foreach ($params['skill_id'] as $skillId) { $goodsSkillLists[] = [ 'goods_id' => $params['id'], 'skill_id' => $skillId ]; } (new GoodsSkillIndex())->saveAll($goodsSkillLists); // 提交事务 Db::commit(); return true; } catch (\Exception $e) { // 回滚事务 Db::rollback(); return $e->getMessage(); } } /** * @notes 删除接口 * @param $id * @param $shopId * @return string|true * @author cjhao * @date 2024/11/14 15:24 */ public static function del($id,$shopId){ // 启动事务 // Db::startTrans(); try { //删除师傅绑定的服务 // foreach ($ids as $id) { // $staff_lists = Staff::whereRaw("FIND_IN_SET($id,goods_ids)")->select()->toArray(); // foreach ($staff_lists as $list) { // $goods_ids = str_replace(','.$id.',',',',$list['goods_ids']); // if ($goods_ids == ',') { // $goods_ids = ''; // } // Staff::update(['goods_ids'=>$goods_ids],['id'=>$list['id']]); // } // } //删除服务 Goods::destroy(['id'=>$id,'shop_id'=>$shopId]); // 提交事务 // Db::commit(); return true; } catch (\Exception $e) { // 回滚事务 // Db::rollback(); return $e->getMessage(); } } /** * @notes 修改服务状态 * @param $params * @return Goods * @author ljj * @date 2022/2/9 4:54 下午 */ public function status($params,$shopId) { return Goods::update(['status'=>$params['status']],['id'=>$params['id'],'shop_id'=>$shopId]); } /** * @notes 查看服务详情 * @param $id * @return array * @author ljj * @date 2022/2/9 3:51 下午 */ public function detail($id) { $result = Goods::where('id',$id) ->withoutField('order_num,update_time,delete_time') ->append(['category_desc','goods_image']) ->findOrEmpty() ->toArray(); $result['commission_ratio'] = floatval($result['commission_ratio']); $goods_image = []; foreach ($result['goods_image'] as &$image) { $goods_image[] = $image['uri']; } $result['goods_image'] = $goods_image; $result['city_id'] = GoodsCityIndex::where(['goods_id'=>$id])->column('city_id'); $result['skill_id'] = GoodsSkillIndex::where(['goods_id'=>$id])->column('skill_id'); return $result; } }