123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- <?php
- namespace app\models\store;
- use app\models\user\User;
- use app\models\user\UserBill;
- use crmeb\basic\BaseModel;
- use crmeb\traits\ModelTrait;
- use think\Exception;
- class Order extends BaseModel
- {
- use ModelTrait;
- private static $appid ="jnz_formal_0001";
- private static $appsecret = "mxtw58mxbexwjk40ghin";
- private static $url = "https://new.juniuzu.com";
- public function setSpecAttr($value)
- {
- return json_encode($value);
- }
- public function getSpecAttr($value)
- {
- return json_decode($value,true);
- }
- /**
- * 生成订单唯一id
- * @param $uid 用户uid
- * @return string
- */
- public static function getNewOrderId()
- {
- list($msec, $sec) = explode(' ', microtime());
- $msectime = number_format((floatval($msec) + floatval($sec)) * 1000, 0, '', '');
- $orderId = 'pk' . $msectime . mt_rand(10000, 99999);
- while (self::be(['order_id' => $orderId])) $orderId = 'pk' . $msectime . mt_rand(10000, 99999);
- return $orderId;
- }
- /**
- * 创建订单
- * @param $data
- * @return bool
- */
- public static function order_create($data)
- {
- try {
- $data['order_id'] = self::getNewOrderId();
- $data['pay_time'] = time();
- $data['pay_type'] = 'integral';
- $data['paid'] = 1;
- $rs = self::create($data);
- if ($rs) {
- User::where('uid', $data['uid'])->dec('integral', $data['pay_price'])->update();
- UserBill::expend('积分兑换', $data['uid'], 'integral', 'pay', $data['pay_price'], $rs['id'], User::where('uid', $data['uid'])->value('integral'), "兑换商品,支付" . $data['pay_price'] . "积分!");
- }
- return $rs;
- }catch (Exception $e)
- {
- return self::setErrorInfo('创建订单出错!'.$e->getMessage());
- }
- }
- /**
- * 订单列表
- * @param $where
- * @return array
- * @throws \think\db\exception\DataNotFoundException
- * @throws \think\db\exception\DbException
- * @throws \think\db\exception\ModelNotFoundException
- */
- public static function lst($where)
- {
- $model = new self;
- if(isset($where['uid']) && $where['uid'] !=0) $model = $model->where('uid',$where['uid']);
- if(isset($where['data']) && $where['data'] !='') $model = $model->getModelTime($where,$model,"pay_time");
- if(isset($where['paid']) && $where['paid'] >-1) $model = $model->where('paid',$where['paid']);
- if(isset($where['status']) && $where['status'] >-4) $model = $model->where('status',$where['status']);
- if(isset($where['key']) && $where['key'] !='') $model = $model->where('order_id','like',"%".$where['key']."%");
- $model = $model->order('id desc');
- $count = $model->value('count(id)')?:0;
- $data = $model->page($where['page'],$where['limit'])->select()->toArray();
- return compact('count','data');
- }
- /**
- * 获取系统订单列表
- * @param $where
- * @return array
- */
- public static function sys_lst($where)
- {
- $model = new self;
- if(isset($where['data']) && $where['data'] !='') $model = $model->getModelTime($where,$model,"add_time");
- if(isset($where['paid']) && $where['paid'] >-1) $model = $model->where('paid',$where['paid']);
- if(isset($where['status']) && $where['status'] >-4) $model = $model->where('status',$where['status']);
- if(isset($where['key']) && $where['key'] !='') $model = $model->where('order_id','like',"%".$where['key']."%");
- $model = $model->order('id desc');
- return self::page($model, function ($v){
- }, $where);
- }
- public static function sign($param)
- {
- $param['appid'] = self::$appid;
- $param['appsecret'] = self::$appsecret;
- ksort($param);
- $string = self::toUrlParams($param);
- $string = md5( $string );
- //签名步骤四:所有字符转为大写
- $param['sign'] = strtoupper( $string );
- unset($param['appsecret']);
- return $param;
- }
- /**
- * @param $data
- *
- * @return string
- */
- protected static function toUrlParams( $data ) {
- $str = '';
- foreach( $data as $key => $value ) {
- if( $key != "sign" && !is_array( $value ) ) {
- $str .= '&' . $key . '=' . rawurldecode( $value );
- }
- }
- $str = ltrim( $str, '&' );
- return $str;
- }
- }
|