You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

287 lines
7.9 KiB

  1. <?php
  2. namespace common\models;
  3. use Yii;
  4. /**
  5. * This is the model class for table "prod_main".
  6. *
  7. * @property integer $prod_id
  8. * @property integer $prod_cate_id
  9. * @property string $prod_name
  10. * @property string $prod_price
  11. * @property string $create_user
  12. * @property string $create_time
  13. * @property string $update_time
  14. * @property integer $delete_flag
  15. * @property string $update_user
  16. * @property string $bus_id
  17. */
  18. class ProdMain extends \yii\db\ActiveRecord
  19. {
  20. /**
  21. * @inheritdoc
  22. */
  23. public static function tableName()
  24. {
  25. return 'prod_main';
  26. }
  27. /**
  28. * @inheritdoc
  29. */
  30. public function rules()
  31. {
  32. return [
  33. [['prod_cate_id', 'prod_price'], 'required'],
  34. [['prod_cate_id', 'delete_flag'], 'integer'],
  35. [['prod_price', 'commission'], 'number'],
  36. [['create_time', 'update_time'], 'safe'],
  37. [['prod_name'], 'string', 'max' => 100],
  38. [['create_user', 'update_user'], 'string', 'max' => 50],
  39. [['bus_id'], 'string', 'max' => 255],
  40. ];
  41. }
  42. /**
  43. * @inheritdoc
  44. */
  45. public function attributeLabels()
  46. {
  47. return [
  48. 'prod_id' => 'Prod ID',
  49. 'prod_cate_id' => 'Prod Cate ID',
  50. 'prod_name' => 'Prod Name',
  51. 'prod_price' => 'Prod Price',
  52. 'create_user' => 'Create User',
  53. 'create_time' => 'Create Time',
  54. 'update_time' => 'Update Time',
  55. 'delete_flag' => 'Delete Flag',
  56. 'update_user' => 'Update User',
  57. 'bus_id' => 'Bus ID',
  58. ];
  59. }
  60. /**
  61. * Function Description:产品详情获取子产品数组
  62. * Function Name: getProdArr
  63. * @param $pro_cate_id
  64. *
  65. * @return array|null|\yii\db\ActiveRecord
  66. *
  67. * @author 娄梦宁
  68. */
  69. public function getProdArr($pro_cate_id)
  70. {
  71. $result = self::find()->select(['prod_name', 'prod_price', 'prod_id', 'bus_id', '(select 100) as prod_count', 'commission'])
  72. ->from(self::tableName())
  73. ->where(['and', ['=', 'prod_cate_id', $pro_cate_id], ['=', 'delete_flag', 0]])
  74. ->asArray()
  75. ->all();
  76. if (empty($result['0'])) {
  77. return [];
  78. } else {
  79. foreach ($result as &$v) {
  80. $v['prod_price'] = $this->dealFloat($v['prod_price']);
  81. }
  82. }
  83. return $result;
  84. }
  85. /**
  86. * Des:获取订单总价格
  87. * Name: getTotalMoney
  88. * @param $params array 多为数组 产品ID和数量
  89. * @return array
  90. * @author 倪宗锋
  91. */
  92. public function getTotalMoney($params)
  93. {
  94. $prod_id = [];
  95. $sqlCase = '';
  96. foreach ($params as $val) {
  97. $sqlCase .= " WHEN {$val['prod_id']} THEN prod_price*{$val['prod_count']} ";
  98. $prod_id[] = $val['prod_id'];
  99. }
  100. $prodId = implode(',', $prod_id);
  101. $sql = '' . "SELECT
  102. SUM(CASE prod_id
  103. {$sqlCase}
  104. ELSE 0
  105. END)
  106. from prod_main
  107. where prod_id in ({$prodId})
  108. ";
  109. $result = Yii::$app->db->createCommand($sql)->queryScalar();
  110. return $result;
  111. }
  112. /**
  113. * Function Description:获取票种id
  114. * Function Name: getTicketId
  115. * @param $pro_cate_id
  116. *
  117. * @return array|null|\yii\db\ActiveRecord
  118. *
  119. * @author 娄梦宁
  120. */
  121. public function getTicketId($pro_cate_id)
  122. {
  123. $where = ['and'];
  124. $where[] = ['=', 'prod_cate_id', $pro_cate_id];
  125. $where[] = ['=', 'delete_flag', 0];
  126. $result = self::find()->select(['bus_id', 'prod_price', 'prod_id', 'prod_name'])
  127. ->from(self::tableName())
  128. ->where($where)
  129. ->orderBy('prod_id')
  130. ->asArray()
  131. ->all();
  132. return $result;
  133. }
  134. /**
  135. * Function Description:查询起始站点
  136. * Function Name: getStation
  137. * @param $prod_id
  138. *
  139. * @return mixed
  140. *
  141. * @author 娄梦宁
  142. */
  143. public function getStation($prod_id)
  144. {
  145. $result = self::find()->select(["concat(start_res_name,' - ',end_res_name) as station_str"])
  146. ->from(self::tableName() . ' as a')
  147. ->leftJoin('bus_ticket as b', 'a.bus_id=b.ticket_id')
  148. ->where(['a.prod_id' => $prod_id])
  149. ->asArray()
  150. ->one();
  151. return $result['station_str'];
  152. }
  153. /**
  154. * Function Description:子产品表添加(只能添加非巴士产品)
  155. * Function Name: addProdMain
  156. * @param $param
  157. *
  158. * @return bool
  159. *
  160. * @author 娄梦宁
  161. */
  162. public function addProdMain($param)
  163. {
  164. $transaction = Yii::$app->db->beginTransaction();
  165. if ($param['category_id'] != 1) {
  166. foreach ($param['price_type'] as $val) {
  167. $values = [
  168. 'prod_cate_id' => $param['prod_cate_id'],
  169. 'prod_name' => $val['price_type_name'],
  170. 'prod_price' => $val['price_type_price'],
  171. 'create_time' => date('Y-m-d H:i:s'),
  172. ];
  173. $prod_main = clone $this;
  174. $prod_main->attributes = $values;
  175. $res = $prod_main->insert();
  176. if (!$res) {
  177. $transaction->rollBack();
  178. return false;
  179. }
  180. }
  181. }
  182. $transaction->commit();
  183. return true;
  184. }
  185. /*
  186. * 修改子产品表
  187. */
  188. public function uptCmsProd($prod_arr, $pro_cate_id)
  189. {
  190. if ($prod_arr['prod_id'] == 0) {
  191. $value = [
  192. 'prod_name' => $prod_arr['price_type_name'],
  193. 'prod_price' => $prod_arr['price_type_price'],
  194. 'prod_cate_id' => $pro_cate_id,
  195. 'create_time' => date('Y-m-d H:i:s')
  196. ];
  197. $this->attributes = $value;
  198. $res = $this->insert();
  199. if (!$res) {
  200. return false;
  201. }
  202. } else {
  203. $count = self::updateAll(['prod_name' => $prod_arr['price_type_name'], 'prod_price' => $prod_arr['price_type_price']], ['=', 'prod_id', $prod_arr['prod_id']]);
  204. if ($count === false) {
  205. return false;
  206. }
  207. }
  208. return true;
  209. }
  210. /*
  211. * 获取产品的子产品数组
  212. */
  213. public function getIdArr($pro_cate_id)
  214. {
  215. $arr = self::find()->select('prod_id')->from(self::tableName())->where(['prod_cate_id' => $pro_cate_id])->indexBy('prod_id')->asArray()->all();
  216. return $arr;
  217. }
  218. public function delCount($prod_id)
  219. {
  220. $count = self::updateAll(['delete_flag' => 1], ['=', 'prod_id', $prod_id]);
  221. return $count;
  222. }
  223. /*
  224. * Des:设置产品佣金 (根据prod_cate_id)
  225. * Name: setProdCommissionByCateId
  226. * @param $param
  227. * @return int
  228. * @author 付泓程
  229. */
  230. public function setProdCommissionByCateId($param)
  231. {
  232. $commission = $param['commission'];
  233. $prod_cate_id = $param['prod_cate_id'];
  234. $count = $this->updateAll(['commission' => $commission], ['and', ['=', 'prod_cate_id', $prod_cate_id], ['=', 'delete_flag', '0']]);
  235. return $count;
  236. }
  237. /*
  238. * Des:设置产品佣金 (根据prod_id)
  239. * Name: setProdCommissionByProdId
  240. * @param $param
  241. * @return int
  242. * @author 付泓程
  243. */
  244. public function setProdCommissionByProdId($param)
  245. {
  246. $commission = $param['commission'];
  247. $prod_id = $param['prod_id'];
  248. $count = $this->updateAll(['commission' => $commission], ['and', ['=', 'prod_id', $prod_id], ['=', 'delete_flag', '0']]);
  249. return $count;
  250. }
  251. /**
  252. * Function Description:处理价格
  253. * Function Name: dealFloat
  254. * @param $float
  255. *
  256. * @return float
  257. *
  258. * @author LUOCJ
  259. */
  260. public function dealFloat($float)
  261. {
  262. $int = floor($float);
  263. if ($float - $int == 0) {
  264. $float = $int;
  265. }
  266. return $float;
  267. }
  268. }