RiskControlForm.php 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <?php
  2. namespace app\modules\admin\models;
  3. use app\constants\OptionSetting;
  4. use app\models\Goods;
  5. use app\models\Store;
  6. use yii\base\Model;
  7. class RiskControlForm extends Model
  8. {
  9. public function riskControlHandle($risk_control_model, $goods_id = 0) {
  10. $goods_list = Goods::find()->alias('g')->leftJoin(['s' => Store::tableName()], 'g.store_id = s.id')
  11. ->where(['g.is_delete' => 0, 'g.status' => 1, 's.is_delete' => 0, 'g.is_wholesale' => 0])->andWhere(['IS NOT', 'g.cloud_goods_id', NULL]);
  12. if ($goods_id) {
  13. $goods_list->andWhere(['g.id' => $goods_id]);
  14. }
  15. $goods_list = $goods_list->select('g.id, g.price, g.attr, g.cloud_goods_id')->asArray()->all();
  16. foreach ($goods_list as $item) {
  17. //获取云仓商品
  18. $cloud_url = "/goods/getGoodsInfo";
  19. $cloud_data = [];
  20. $cloud_data['goods_id'] = $item['cloud_goods_id'];
  21. $domain = (new OptionSetting)->getCloudDomainName();
  22. $cloud_info = cloud_post($domain . $cloud_url, $cloud_data);
  23. $cloud_info = json_decode($cloud_info, true);
  24. if($cloud_info['code'] != 0){
  25. debug_log($cloud_info, 'risk_control_result.log');
  26. }else{
  27. $goods = Goods::findOne($item['id']);
  28. //云仓商品协议价大于商品售价
  29. $cloud_goods = $cloud_info['data']['goods'];
  30. if ($item['price'] < $cloud_goods['platform_negotiated_price']) {
  31. if ($risk_control_model) {
  32. //原始协议价
  33. $goods->price = $cloud_goods['platform_negotiated_price'];
  34. } else {
  35. //商品下架
  36. $goods->status = 0;
  37. }
  38. }
  39. //规格中的云仓商品协议价大于商品售价处理
  40. $item['attr'] = json_decode($item['attr'], true);
  41. $cloud_goods['attrs'] = json_decode($cloud_goods['attrs'], true);
  42. foreach ($cloud_goods['attrs'] as $cloud_attr_item) {
  43. $cloud_no = $cloud_attr_item['no'];
  44. foreach ($item['attr'] as &$attr_item) {
  45. $_no = $attr_item['no'];
  46. if (!empty($cloud_no) && !empty($_no)) {
  47. if (strval($cloud_no) === strval($_no) && $attr_item['price'] < (!empty($cloud_attr_item['platform_negotiated_price']) ? $cloud_attr_item['platform_negotiated_price'] : $cloud_attr_item['price'])) {
  48. if ($risk_control_model) {
  49. //原始协议价
  50. $attr_item['price'] = (!empty($cloud_attr_item['platform_negotiated_price']) ? $cloud_attr_item['platform_negotiated_price'] : $cloud_goods['price']);
  51. } else {
  52. //商品下架
  53. $goods->status = 0;
  54. }
  55. }
  56. }
  57. }
  58. }
  59. $goods->attr = json_encode($item['attr'], JSON_UNESCAPED_UNICODE);
  60. if (!$goods->save()) {
  61. debug_log($goods->errors, 'risk_control_result.log');
  62. }
  63. }
  64. }
  65. }
  66. }