xhAllOrderService.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. <?php
  2. namespace common\services;
  3. use common\components\dict;
  4. use common\models\xhAllOrder;
  5. class xhAllOrderService {
  6. /**
  7. * 创建订单
  8. */
  9. public static function add($data)
  10. {
  11. $date = date("Y-m-d H:i:s");
  12. $sjId = isset($data['sjId']) ? $data['sjId'] : 0;
  13. $data['id'] = 'O'.stringUtil::buildOrderNo();//订单号,
  14. $data['sjId'] = $sjId;
  15. $data['payStatus'] = 0;
  16. $data['createTime'] = $date;
  17. $data['addTime'] = time();
  18. $time = strtotime(date("Y-m-d"));
  19. $year = date("Y");
  20. $month = date("m");
  21. $dayReturn = xhOrderDayNumService::addOne($time, $sjId);
  22. $monthReturn = xhOrderMonthNumService::addOne($year, $month, $sjId);
  23. $data['sendNum'] = (string)$monthReturn['riseNum'];//将花店每月的总订单数作为编号
  24. $return = xhOrder::add($data);
  25. $id = $return['id'];
  26. self::refresh($id);
  27. return $return;
  28. }
  29. /**
  30. * 通过ID获取数据
  31. * @param $id
  32. * @param int $sjId 商户号 -- 默认为0; 当不为0时,会与订单的sjId进行校验(必须要相同)
  33. * @return array|null|\yii\db\ActiveRecord
  34. */
  35. public static function getById($id, $sjId=0)
  36. {
  37. $preKey = dict::getCacheKey('order');
  38. $cacheKey = $preKey.$id;
  39. $order = Yii::$app->redis->executeCommand('HGETALL', [$cacheKey]);
  40. if(!empty($order)){
  41. $arr = [];
  42. $i = 0;
  43. $x = 0;
  44. foreach($order as $key => $val){
  45. $i++;
  46. if($i%2 == 0){
  47. $arr[$x]['value'] = $val;
  48. $x++;
  49. }else{
  50. $arr[$x]['key'] = $val;
  51. }
  52. }
  53. $orderArr = [];
  54. foreach($arr as $key => $val){
  55. $orderArr[$val['key']] = $val['value'];
  56. }
  57. unset($orderArr['info_already_get_by_sql']);
  58. if($sjId != 0 && !empty($orderArr)){
  59. if($orderArr['sjId'] != $sjId){
  60. \common\components\util::fail('非法访问');
  61. }
  62. }
  63. return $orderArr;
  64. }
  65. $order = xhOrder::find()->where(['id' => $id])->asArray()->one();
  66. if($sjId != 0 && !empty($order)){
  67. if($order['sjId'] != $sjId){
  68. \common\components\util::fail('非法访问');
  69. }
  70. }
  71. $params = [$cacheKey];
  72. $params[] = 'info_already_get_by_sql';
  73. $params[] = 'ok';//redis没有办法设置带空值的键,加此可以数据空时表示取过
  74. if(!empty($order)){
  75. foreach($order as $key => $val){
  76. $params[] = $key;
  77. $params[] = $val;
  78. }
  79. }
  80. Yii::$app->redis->executeCommand('HMSET',$params);
  81. return $order;
  82. }
  83. }