| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255 |
- <?php
- /**
- * Niushop商城系统 - 团队十年电商经验汇集巨献!
- * =========================================================
- * Copy right 2019-2029 上海牛之云网络科技有限公司, 保留所有权利。
- * ----------------------------------------------
- * 官方网址: https://www.niushop.com
- * =========================================================
- */
- namespace addon\store\model\cashier;
- use addon\memberrecharge\model\RechargeOrder;
- use addon\store\model\member\MemberOnceCard;
- use addon\store\model\store\Store;
- use app\model\BaseModel;
- use app\model\member\Member;
- use app\model\member\MemberAccount;
- use app\model\member\MemberCoupon;
- use app\model\member\MemberLevelOrder;
- use app\model\order\OrderCommon;
- use app\model\order\OrderCreateTool;
- use app\model\order\OrderGoods;
- use app\model\site\Site;
- use app\model\system\Pay;
- use think\facade\Cache;
- use think\facade\Log;
- use think\facade\Queue;
- /**
- * 收银订单抵扣
- *
- * @author Administrator
- *
- */
- class CashierOrderOffset extends BaseModel
- {
- public $type = array(
- [
- 'name' => 'coupon',
- 'title' => '代金券'
- ],
- [
- 'name' => 'hongbao',
- 'title' => '红包'
- ],
- [
- 'name' => 'point',
- 'title' => '积分'
- ],
- [
- 'name' => 'balance',
- 'title' => '储值余额'
- ],
- [
- 'name' => 'balance_money',
- 'title' => '现金余额'
- ],
- );
- /**
- * 增加订单优惠项
- * @param $params
- * @return array
- */
- public function addOrderOffset($params){
- $order_id = $params['order_id'];
- $type = $params['type'];
- $num = $params['num'];
- $relate_id = $params['relate_id'] ?? 0;
- $offset_money = $params['offset_money'];
- $order_goods_id = $params['order_goods_id'] ?? '';
- $site_id = $params['site_id'];
- $store_id = $params['store_id'] ?? 0;
- $data = array(
- 'order_id' => $order_id,
- 'type' => $type,
- 'num' => $num,
- 'relate_id' => $relate_id,
- 'offset_money' => $offset_money,
- 'order_goods_id' => $order_goods_id,
- 'site_id' => $site_id,
- 'store_id' => $store_id
- );
- model('store_cashier_order_offset')->add($data);
- return $this->success();
- }
- /**
- * 获取优惠券记录
- * @param $condition
- * @param string $field
- */
- public function getOrderOffsetList($condition, $field = '*', $order = ''){
- $list = model('store_cashier_order_offset')->getList($condition, $field, $order);
- return $this->success($list);
- }
- /**
- * 计算订单项的店铺优惠金额
- * @param $order_goods_id
- */
- public function getOrderGoodsOffsetMoney($order_goods_id){
- $condition = array(
- ['order_goods_id', '=', $order_goods_id],
- ['type', '=', 'coupon'],
- );
- $offset_list = $this->getOrderOffsetList($condition)['data'] ?? [];
- $offset_money = 0;
- if(!empty($offset_list)){
- foreach($offset_list as $k => $v){
- $offset_money += $v['offset_money'];
- }
- }
- return $offset_money;
- }
- /**
- * 返还订单相关优惠和抵扣
- * @param $params
- */
- public function orderOffsetRefund($params){
- $order_id = $params['order_id'];
- $site_id = $params['site_id'];
- $member_id = $params['member_id'];
- $limit = $params['limit'] ?? [];
- $offset_condition = array(
- ['order_id', '=', $order_id]
- );
- $offset_list = $this->getOrderOffsetList($offset_condition)['data'] ?? [];
- foreach($offset_list as $k => $v){
- $type = $v['type'];
- if(!empty($limit) && !in_array($type, $limit)){
- continue;
- }
- $num = $v['num'];
- $relate_id = $v['relate_id'];
- switch($type){
- case 'balance'://储值余额
- $from_type = 'refund';
- $relate_tag = '储值余额返还';
- $remark = '订单关闭,返还储值余额:' . $num.',订单id:'.$order_id;
- $member_account_model = new MemberAccount();
- $account_title = '订单关闭,返还储值余额';
- $result = $member_account_model->addMemberAccount($site_id, $member_id, 'balance', $num, $from_type, $relate_tag, $remark, $account_title);
- break;
- case 'balance_money'://现金余额
- $from_type = 'refund';
- $relate_tag = '现金余额返还';
- $remark = '订单关闭,返还现金余额:' . $num.',订单id:'.$order_id;
- $account_title = '订单关闭,返还现金余额';
- $member_account_model = new MemberAccount();
- $result = $member_account_model->addMemberAccount($site_id, $member_id, 'balance_money', $num, $from_type, $relate_tag, $remark, $account_title);
- break;
- case 'coupon'://优惠券
- $member_coupon_model = new MemberCoupon();
- $coupon_params = array(
- 'coupon_id' => $relate_id,
- 'site_id' => $site_id,
- 'member_id' => $member_id
- );
- $result = $member_coupon_model->recovery($coupon_params);
- break;
- case 'point'://积分
- $from_type = 'refund';
- $relate_tag = '积分返还';
- $remark = '订单关闭,返还积分:' . $num . ',订单id:'.$order_id;
- $account_title = '订单关闭,返还积分';
- $member_account_model = new MemberAccount();
- $result = $member_account_model->addMemberAccount($site_id, $member_id, 'point', $num, $from_type, $relate_tag, $remark,$account_title);
- break;
- case 'hongbao'://红包
- $hongbao_model = new Hongbao();
- $hongbao_params = array(
- 'member_hongbao_id' => $relate_id,
- 'site_id' => $site_id,
- 'member_id' => $member_id
- );
- $result = $hongbao_model->recovery($hongbao_params);
- break;
- }
- $code = $result['code'] ?? 0;
- if($code < 0){
- return $result;
- }
- }
- return $this->success();
- }
- /**
- * 查询订单抵扣信息
- * @param $params
- */
- public function getOrderOffset($params){
- $order_id = $params['order_id'];
- $offset_condition = array(
- ['order_id', '=', $order_id]
- );
- $offset_list = $this->getOrderOffsetList($offset_condition)['data'] ?? [];
- $balance = 0;
- $balance_money = 0;
- $point_money = 0;
- $point = 0;
- foreach($offset_list as $k => $v){
- $type = $v['type'];
- $num = $v['num'];//优惠项数量
- $offset_money = $v['offset_money'];//优惠金额
- switch($type){
- case 'balance'://储值余额
- $balance += $num;
- break;
- case 'balance_money'://现金余额
- $balance_money += $num;
- break;
- // case 'coupon'://优惠券
- //
- // break;
- case 'point'://积分
- $point_money += $offset_money;
- $point += $num;
- break;
- // case 'hongbao'://红包
- //
- // break;
- }
- }
- $return = array(
- 'point' => $point,
- 'point_money' => $point_money,
- 'balance' => $balance,
- 'balance_money' => $balance_money
- );
- return $return;
- }
- /**
- * 抵扣信息
- * @param $condition
- * @param string $field
- * @return array
- */
- public function getOrderOffsetInfo($condition, $field = '*'){
- $info = model('store_cashier_order_offset')->getInfo($condition, $field);
- return $this->error($info);
- }
- }
|