makeMsgTemplate($this->getGoodsList());
$str='
商品异常数据
商品价格异常数据
| 商品ID |
商品规格ID |
商品价格 |
成品价格 |
峰值金额 |
';
foreach ($data as $d){
$str.='
| '.$d["goods_id"].' |
'.$d["goods_option_id"].' |
'.$d["product_price"].' |
'.$d["cost_price"].' |
'.$d["max_price"].' |
';
}
$str.='
';
echo $str;exit;
}
private function makeMsgTemplate(array $data): array
{
// $template = '商品id:1,现价:122,会员:100,VIP:82,成本:90,VIP会员利润报警';
\Log::info($data);
$templates = [];
foreach (array_chunk($data, 4) as $chunk) {
$template = '下架异常商品:';
foreach ($chunk as $item) {
if($item['goods_option_id']){
$template .= sprintf('商品id:%d,商品规格id:%d,商品规格现价:%.2F,峰值金额:%.2f,商品规格成本:%.2f,利润报警|', $item['goods_id'],$item['goods_option_id'], $item['product_price'],$item['max_price'], $item['cost_price']);
}else{
$template .= sprintf('商品id:%d,商品现价:%.2F,峰值金额:%.2f,成本:%.2f,利润报警|', $item['goods_id'], $item['product_price'],$item['max_price'], $item['cost_price']);
}
}
$templates[] = rtrim($template, "|");
}
return $templates;
}
private function getGoodsList(): array
{
$requestSearch = [];
/*$list = Goods::Search($requestSearch)->with(['hasOneSmallCodeUrl', 'hasManyOptions', 'hasManyGoodsDiscount', 'hasOneYzGoods' => function ($query) {
$query->with('hasOneMiddlegroundConfiguration');
}])->pluginId()->orderBy('display_order', 'desc')->orderBy('yz_goods.id', 'desc');
if (!empty($requestSearch['middleground_configuration_id'])) {
$list = $list->whereHas('hasOneYzGoods', function ($query) use ($requestSearch) {
$query->where('middleground_configuration_id', $requestSearch['middleground_configuration_id']);
});
}*/
$list=DB::table('yz_goods')
->select('yz_goods.id','yz_goods.status','yz_goods.price','yz_goods.cost_price','yz_goods_option.id as goods_option_id','yz_goods_option.title as goods_option_title','yz_goods_option.product_price as goods_option_product_price','yz_goods_option.cost_price as goods_option_cost_price','yz_goods_option.market_price as goods_option_market_price',
'yz_community_marketing_goods.is_open as qtj_status','yz_community_marketing_goods.alone_rule','yz_community_marketing_goods.alone_rule_rate','yz_community_marketing_goods.cashier_rate',
'yz_goods_sale.max_point_deduct')
->leftJoin('yz_goods_option','yz_goods_option.goods_id','=','yz_goods.id')
->leftJoin('yz_community_marketing_goods','yz_community_marketing_goods.goods_id','=','yz_goods.id')
->leftJoin('yz_goods_sale','yz_goods_sale.goods_id','=','yz_goods.id')
->where(['yz_goods.status'=>1,'yz_goods.uniacid'=>4])
->whereNull('yz_goods.deleted_at');
$result = [];
while (($data = $list->paginate($this->pageSize)) && $data->currentPage() <= $data->lastPage()) {
$result[] = $this->processData($data->items());
$currentPage = $data->currentPage();
request()->offsetSet('page', ++$currentPage);
}
return Arr::collapse($result);
}
/**
* 处理数据
* @param $data
* @return array
*/
private function processData($data): array
{
$alert = [];
$deduction_set=0;
$deduction_set_max='0';
foreach ($data as $l) {
$price=$l['goods_option_product_price']?$l['goods_option_product_price']:$l['price'];
$cost_price=$l['goods_option_cost_price']?$l['goods_option_cost_price']:$l['cost_price'];
$goods_discount=DB::table('yz_goods_discount')->select('discount_method','level_id','discount_value')->where(['goods_id'=>$l['id']])->get();
$max_member_price='0';
$integralData=IntegralGoodsModel::uniacid()->select('deduction_set','deduction_set_max')->where('goods_id',$l['id'])->first();
if($integralData){
$integralData=$integralData->toArray();
if($integralData['deduction_set']==1){
$deduction_set=$integralData['deduction_set'];
$deduction_set_max=$integralData['deduction_set_max'];
}else{
$deduction_set=\Setting::get('integral.deduction_set');
$deduction_set_max=\Setting::get('integral.deduction_set_max');
}
}
foreach ($goods_discount as $v => $d){
if($d['discount_value']){
if($d['discount_method']==1){
//$value=$d['discount_value'].'折';
//$member_price=$price-($price*$d['discount_value']/10);
$member_yh_price=$price-$price*$d['discount_value']/10;
}elseif ($d['discount_method']==2){
//$value=$d['discount_value'].'元';
//$member_price=$price-$d['discount_value'];
$member_yh_price=$d['discount_value'];
}elseif ($d['discount_method']==3){
//$value=$d['discount_value'].'%';
//$member_price=$price-($cost_price*$d['discount_value']/100);
$member_yh_price=$cost_price*$d['discount_value']/100;
}
if($max_member_price<$member_yh_price){
$max_member_price=$member_yh_price;
}
/*$member_hyj_lr=$member_price-$cost_price;
$member_hyj_lrl=round(($member_price-$cost_price)*100/$cost_price.'%',2);
$arr[]=$level_name.':'.$value;
$arr1[]=$level_name.":".$member_price.'元';
$arr2[]=$level_name.":".$member_yh_price.'元';
$arr3[]=$level_name.":".$member_hyj_lr.'元';
$arr4[]=$level_name.":".$member_hyj_lrl.'%';*/
}
}
$qyjyh=$price*$l['alone_rule_rate']/100;
if (strpos($l['max_point_deduct'], '%') !== false) {
$jfzgdkje=$price*$l['max_point_deduct']/100;
}else{
$jfzgdkje=$l['max_point_deduct'];
}
$commission_goods = Commission::getGoodsSet($l['id'])->toArray();
$commission_goods_rule=unserialize($commission_goods['rule']);
$commission_first_arr1=$commission_first_arr2=$commission_first_arr3=$commission_first_arr4=[];
$commission_second_arr1=$commission_second_arr2=$commission_second_arr3=$commission_second_arr4=[];
// $commission_third_arr1=$commission_third_arr2=$commission_third_arr3=$commission_third_arr4=[];
$max_commission_first_price=$max_first_rate='0';
$max_commission_second_price=$max_second_rate='0';
foreach ($commission_goods_rule as $cc){
// $levelName=$cc['levelName'];
if($max_first_rate <$cc['first_level_rate']){
$max_first_rate=$cc['first_level_rate'];
}
if($max_second_rate <$cc['second_level_rate']){
$max_second_rate=$cc['first_level_rate'];
}
/*if(isset($cc['first_level_rate'])&&$cc['first_level_rate']>0){
$first_level_rate=$cc['first_level_rate'];
$commission_first_arr1[]=$levelName.':'.$first_level_rate.'%';
$commission_first_arr2[]=$levelName.':'.$first_level_rate/100*$price.'元';
$commission_first_arr3[]=$levelName.':'.($price-($first_level_rate/100*$price)-$cost_price).'元';
$commission_first_arr4[]=$levelName.':'.round(($price-($first_level_rate/100*$cost_price)-$cost_price)/$cost_price,2).'%';
}
if(isset($cc['second_level_rate'])&&$cc['second_level_rate']>0){
$second_level_rate=$cc['second_level_rate'];
$commission_second_arr1[]=$levelName.':'.$second_level_rate.'%';
$commission_second_arr2[]=$levelName.':'.$second_level_rate/100*$price.'元';
$commission_second_arr3[]=$levelName.':'.($price-($second_level_rate/100*$price)-$cost_price).'元';
$commission_second_arr4[]=$levelName.':'.round(($price-($second_level_rate/100*$cost_price)-$cost_price)/$cost_price,2).'%';
}*/
/* if(isset($cc['third_level_rate'])&&$cc['third_level_rate']>0){
$third_level_rate=$cc['third_level_rate'];
$commission_third_arr1[]=$levelName.':'.$third_level_rate.'%';
$commission_third_arr2[]=$levelName.':'.$third_level_rate/100*$price.'元';
$commission_third_arr3[]=$levelName.':'.($price-($third_level_rate/100*$price)-$cost_price).'元';
$commission_third_arr4[]=$levelName.':'.round(($price-($third_level_rate/100*$cost_price)-$cost_price)/$cost_price,2).'%';
}*/
}
$max_commission_first_price=$max_first_rate/100*$price;
$max_commission_second_price=$max_second_rate/100*$price;
$max_price_arr=[$max_member_price,$jfzgdkje];
if($l['qtj_status']==1&&$l['alone_rule']==1){
array_push($max_price_arr,$qyjyh);
}
if($deduction_set==1){
array_push($max_price_arr,$price*$deduction_set_max/100);
}
if($commission_goods['is_commission']==1&& $commission_goods['has_commission']==1){
array_push($max_price_arr,$max_commission_first_price,$max_commission_second_price);
}
$max_price=array_sum($max_price_arr);
$record = [
'goods_id' => $l['id'],
'goods_option_id'=>$l['goods_option_id'],
'product_price' => $price,
'cost_price' => $cost_price,
'max_price'=>$max_price
];
$sf_price=$price-$max_price;
if ($record['product_price'] <= $record['cost_price']||$sf_price<=$record['cost_price']) {
//DB::table('yz_goods')->where('id',$record['goods_id'])->update(['status'=>0]);
$alert[] = $record;
}
}
return $alert;
}
}