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.

1933 lines
74 KiB

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
namespace app\integral\controller\admin;
use app\base\model\freight\Freight;
use app\base\model\platform\PlatformKdniaoCode;
use app\base\model\user\UserInfo;
use app\integral\model\IntegralCategory;
use app\integral\model\IntegralConfig;
use app\integral\model\IntegralConfigAdvertise;
use app\integral\model\IntegralConfigCarousel;
use app\integral\model\IntegralOrder;
use app\integral\model\IntegralOrderCheck;
use app\integral\model\IntegralOrderProduct;
use app\integral\model\IntegralProduct;
use app\integral\model\IntegralProductCategory;
use app\integral\model\IntegralProductSku;
use app\integral\model\IntegralProductSpec;
use app\integral\model\IntegralProductSpecItem;
use app\integral\model\IntegralSearchHot;
use app\integral\model\IntegralStore;
use app\integral\model\IntegralStoreChecker;
use excel\Excel;
use Godruoyi\Snowflake\Snowflake;
use think\facade\Db;
use think\facade\View;
class Integral extends Base
{
/**
* 积分设置
*/
public function config()
{
$param = input();
$config_model = new IntegralConfig();
$config_carousel_model = new IntegralConfigCarousel();
$config_advertise_model = new IntegralConfigAdvertise();
if (request()->isPost()) {
switch ($param['r']) {
case 'base':
//基础设置
if (empty($param['delivery_type'])) {
return sendErrorMessage(3001, '请选择送货方式');
}
$param['delivery_type'] = implode(',', $param['delivery_type']);
$res = $config_model->dataUpdate($param);
if ($res === false) {
return sendErrorMessage();
}
return sendSuccessMessage();
break;
case 'carousel':
//轮播图
$carousel = [];
foreach ($param['carousel_image'] as $k_1 => $value) {
$carousel[] = [
'uid' => UID,
'image' => $value,
'link_url' => $param['carousel_link_url'][$k_1],
'id' => $param['carousel_id'][$k_1],
];
}
$res = $config_carousel_model->dataUpdateByAll($carousel);
if ($res === false) {
return sendErrorMessage();
}
return sendSuccessMessage();
break;
case 'advert':
//广告位招租
$advert = [];
foreach ($param['advert_image'] as $k_2 => $value) {
$advert[] = [
'uid' => UID,
'image' => $value,
'link_url' => $param['advert_link_url'][$k_2],
'id' => $param['advert_id'][$k_2],
'type' => 1
];
}
//促销
$promotion = [];
foreach ($param['promotion_image'] as $k_3 => $value) {
$promotion[] = [
'uid' => UID,
'image' => $value,
'link_url' => $param['promotion_link_url'][$k_3],
'id' => $param['promotion_id'][$k_3],
'type' => 2
];
}
$res1 = $config_advertise_model->dataUpdateByAll($advert);
if ($res1 === false) {
return sendErrorMessage();
}
$res2 = $config_advertise_model->dataUpdateByAll($promotion);
if ($res2 === false) {
return sendErrorMessage();
}
return sendSuccessMessage();
break;
default:
}
} else {
switch ($param['r']) {
case 'base':
$data = $config_model->getOneData(['uid' => UID]);
if ($data['delivery_type'] != "") {
$data['delivery_type'] = explode(',', $data['delivery_type']);
} else {
$data['delivery_type'] = [];
}
View::assign('data', $data);
break;
case 'carousel':
$carousel = $config_carousel_model->getAllData(['uid' => UID], 'id,image,link_url', 'id asc')->toArray();
$count = 5 - count($carousel);
if ($count > 0) {
for ($i = 0; $i <= $count; $i++) {
$temp = array(
'id' => "",
'image' => "",
'link_url' => ""
);
array_push($carousel, $temp);
}
}
View::assign('carousel', $carousel);
break;
case 'advert':
//首页广告图 位置1图一张
$advert = $config_advertise_model->getAllData(['uid' => UID, 'type' => 1], 'id,image,link_url', 'id asc')->toArray();
$advert_count = 1 - count($advert);
if ($advert_count > 0) {
for ($i = 0; $i <= $advert_count; $i++) {
$temp = array(
'id' => "",
'image' => "",
'link_url' => ""
);
array_push($advert, $temp);
}
}
View::assign('advert', $advert);
//首页广告图 位置2图三种
$promotion = $config_advertise_model->getAllData(['uid' => UID, 'type' => 2], 'id,image,link_url', 'id asc')->toArray();
$count = 3 - count($promotion);
if ($count > 0) {
for ($i = 0; $i <= $count; $i++) {
$temp = array(
'id' => "",
'image' => "",
'link_url' => ""
);
array_push($promotion, $temp);
}
}
View::assign('promotion', $promotion);
break;
default:
}
View::assign('r', $param['r']);
return View::fetch();
}
}
/**
* 分类
* @return array|mixed|string
*/
public function category()
{
$where = [
'uid' => UID,
];
$integral_category_model = new IntegralCategory();
$dataList = $integral_category_model->getAllData($where, '*', 'sort desc');
View::assign('dataList', $dataList);
return View::fetch();
}
/**
* 分类添加
* @return array|mixed|string
*/
public function categoryadd()
{
$integral_category_model = new IntegralCategory();
if (request()->isPost()) {
$data = input('post.');
$data['uid'] = UID;
$res = $integral_category_model->dataUpdate($data);
if (!$res) {
return sendErrorMessage();
}
return sendSuccessMessage();
} else {
$id = input('param.id', 0);
$data = $integral_category_model->getOneData(['id' => $id]);
View::assign('data', $data);
return View::fetch('categoryadd');
}
}
/**
* 商品分类修改
* @return array|mixed|string
*/
public function categoryupdate()
{
return $this->categoryadd();
}
/**
* 产品列表 2017-10-15
*/
public function product()
{
$search = input('get.');
autoSearch(['time', 'keyword', 'type', 'category_id'], $search);
$integral_product_model = new IntegralProduct();
$integral_category_model = new IntegralCategory();
$where [] = ['uid', '=', UID];
$hasWhere = [];
if ($search['time']) {
$time = explode('-', $search['time']);
$where[] = ['create_time', 'between time', [$time[0], $time[1]]];
}
if ($search['keyword'] !== null && $search['keyword'] !== '') {
$where[] = ['name', 'like', '%' . $search['keyword'] . '%'];
}
if ($search['type'] !== null && $search['type'] !== '') {
$where [] = ['type', '=', $search['type']];
}
if (!empty($search['category_id'])) {
$hasWhere[] = ['category_id', '=', $search['category_id']];
}
$where = $integral_product_model->whereChange($where);
$dataList = $integral_product_model::hasWhere('integralProductCategory', $hasWhere)
->with('integralProductCategory')->where($where)->order('id desc')->paginate([
'list_rows' => 15,
'page' => array_key_exists("page", $search) ? (string)$search['page'] : "1",
'query' => $search
], false)->each(function ($item, $key) {
$category_model = new IntegralProductCategory();
$item['category_id'] = $category_model->where(['product_id' => $item['id']])->column('category_id');
// $temp = explode(',', $item['deliver_type']);
// $item['deliver_type_name'] = "";
// if (!empty($temp)) {
// $temp_name = array();
// foreach ($temp as $val) {
// if ($val == 1) {
// $temp_name[] = "邮寄";
// } elseif ($val == 2) {
// $temp_name[] = "上门自提";
// } else {
// $temp_name[] = "";
// }
// }
// $item['deliver_type_name'] = implode('/', $temp_name);
// }
});
$attach = [
'total_html' => [['商品总数', $dataList->total()]]
];
//获取分类列表信息
$category_list = $integral_category_model->getAllData(['uid' => UID], 'id,name', 'sort desc');
View::assign('attach', $attach);
View::assign('search', $search);
View::assign('dataList', $dataList);
View::assign('category_list', $category_list);
return View::fetch();
}
/**
* 添加产品 2017-10-15
*/
public function productadd()
{
$product_model = new IntegralProduct();
$category_model = new IntegralCategory();
$product_category_model = new IntegralProductCategory();
if (request()->isPost()) {
$data = input('post.');
$data['uid'] = UID;
if (empty($data['integral'])) {
return sendErrorMessage(1, '请选择消耗积分数/金额');
}
if (empty($data['type'])) {
return sendErrorMessage(1, '请选择商品类型');
}
if ((!empty($data['video_url']) && empty($data['video_cover_img'])) || (empty($data['video_url']) && !empty($data['video_cover_img']))) {
return sendErrorMessage(1, '视频和视频封面两个需要同时传');
}
$min_price = $data['price'];
//是否开启规格
$data['is_spec_open'] = array_key_exists('is_spec_open', $data) ? $data['is_spec_open'] : 0;
//开启规格时,获取产品最低价钱
if ($data['is_spec_open'] == 1) {
if (!array_key_exists('spec_id', $data)) {
return sendErrorMessage(1, '请添加规格');
}
foreach ($data['option_ids'] as $key => $value) {
$price[] = $data['option_price_' . $value];
}
$min_price = min($price);
}
$update = [
'min_price' => $min_price,
'is_spec_open' => $data['is_spec_open'],
'stock' => $data['stock'],
'freight_type' => $data['freight_type'],
'freight_id' => $data['freight_type'] == 2 ? $data['freight_id'] : 0,
'freight_money' => $data['freight_type'] == 1 ? $data['freight_money'] : 0,
'weight' => $data['weight'],
'is_publish' => array_key_exists('is_publish', $data) ? $data['is_publish'] : 0,
'publish_time' => array_key_exists('is_publish', $data) ? time() : 0,
];
$data = $data + $update;
Db::startTrans();
$product_id = $product_model->dataUpdate($data);
if ($product_id === false) {
Db::rollback();
return sendErrorMessage();
}
//商品分类操作
$res = $this->productCategory($product_id, $data);
if ($res == false) {
Db::rollback();
return sendErrorMessage();
}
//商品规格操作
$res = $this->productSpec($product_id, $data);
if ($res['code'] != 0) {
Db::rollback();
return sendErrorMessage($res['code'], $res['msg']);
}
Db::commit();
return sendSuccessMessage();
} else {
$id = input('param.id', 0);
$data = $product_model->getOneData(['id' => $id]);
if ($id) {
}
//获取分类
$where = ['uid' => UID];
$categoryList = $category_model->getAllData($where);
//查询商品关联分类
$category_id = $product_category_model->where('product_id', $id)->column('category_id');
if (empty($category_id)) {
$category_id = [];
}
foreach ($categoryList as $key => &$value) {
if (in_array($value['id'], $category_id)) {
$value['is_select'] = 1;
} else {
$value['is_select'] = 0;
}
}
if (!empty($data)) {
$integral_product_spec_model = new IntegralProductSpec();
$integral_product_spec_item_model = new IntegralProductSpecItem();
//查询属性及属性项
$spec = $integral_product_spec_model->getAllData(['uid' => UID, 'product_id' => $id], '', 'id');
foreach ($spec as $key => $value) {
$value['item'] = $integral_product_spec_item_model->getAllData(['uid' => UID, 'spec_id' => $value['spec_id'], 'product_id' => $id], '', 'id asc')->toArray();
}
//查询SKU
$product_sku_model = new IntegralProductSku();
$sku = $product_sku_model->where(['product_id' => $id])->order('id asc')->column('sku,price,stock,cover_img,integral', 'sku');
} else {
$spec = [];
$sku = [];
}
View::assign('spec', $spec);
// dump($spec->toArray());
// foreach ($spec->toArray() as $k => $v){
// dump($v['item']);
// }
View::assign('sku', json_encode($sku));
$freight_model = new Freight();
$freight = $freight_model->select();
View::assign('freight', $freight);
//查询商品关联分类
View::assign('categoryList', $categoryList);
View::assign('data', $data);
return View::fetch('productadd');
}
}
/**
* 商品发布
*/
public function productPublish()
{
$data = input('post.');
$product_model = new IntegralProduct();
$update_data = ['is_publish' => $data['value'], 'publish_time' => time()];
if ($data['value'] == 0) {
$update_data['publish_time'] = 0;
}
$res = $product_model->where(['id' => $data['id']])->update($update_data);
if ($res === false) {
return sendErrorMessage();
}
return sendSuccessMessage();
}
/**
* 商品-分类 操作
* @param $product_id
* @param array $data
* @return array|string
* @throws \think\Exception
*/
public function productCategory($product_id, $data = [])
{
$product_category_model = new IntegralProductCategory();
$res = $product_category_model->where(['product_id' => $product_id])->delete();
if ($res === false) {
return sendErrorMessage();
}
$insert_array = [];
if (array_key_exists('category_id', $data)) {
foreach ($data['category_id'] as $key => $value) {
$insert_array[] = [
'product_id' => $product_id,
'category_id' => $value,
'create_time' => time(),
'update_time' => time(),
];
}
$insert_array = array_values(array_unique($insert_array, SORT_REGULAR));
$res = $product_category_model->insertAll($insert_array);
if ($res === false) {
return false;
}
}
return true;
}
/**
* 商品规格操作
* @param $product_id
* @param array $data
* @return array|string
* @throws \think\Exception
*/
public function productSpec($product_id, $data = [])
{
$snow_flake = new Snowflake();
$integral_product_spec_model = new IntegralProductSpec();
$integral_product_spec_item_model = new IntegralProductSpecItem();
$integral_product_sku_model = new IntegralProductSku();
$integral_product_model = new IntegralProduct();
//清空数据
$where = ['uid' => UID, 'product_id' => $product_id];
$res = $integral_product_spec_model->destroy($where);
if ($res === false) {
return sendErrorArray();
}
$res = $integral_product_spec_item_model->destroy($where);
if ($res === false) {
return sendErrorArray();
}
$res = $integral_product_sku_model->destroy($where);
if ($res === false) {
return sendErrorArray();
}
if ($res === false) {
return sendErrorArray();
}
// 商品规格开启
if ($data['is_spec_open'] == 1) {
//保存规格名
$spec_data = [];
$spec_item_data = [];
if (!array_key_exists('spec_id', $data)) {
return sendErrorArray('请添加规格');
}
foreach ($data['spec_id'] as $key => $value) {
$spec_data[] = [
'id' => $snow_flake->id(),
'uid' => UID,
'product_id' => $product_id,
'spec_id' => $value,
'spec_title' => $data['spec_title'][$value],
'create_time' => time(),
];
if (!array_key_exists('spec_item_name_' . $value, $data)) {
return sendErrorArray('请添加' . $data['spec_title'][$value] . '的规格项');
}
foreach ($data['spec_item_name_' . $value] as $k => $v) {
$spec_item_data[] = [
'id' => $snow_flake->id(),
'uid' => UID,
'product_id' => $product_id,
'spec_id' => $value,
'spec_item_id' => $data['spec_item_id_' . $value][$k],
'spec_item_value' => $data['spec_item_name_' . $value][$k],
'create_time' => time(),
];
}
}
$res = $integral_product_spec_model->insertAll($spec_data);
if ($res === false) {
return sendErrorArray();
}
//保存规格值
$res = $integral_product_spec_item_model->insertAll($spec_item_data);
if ($res === false) {
return sendErrorArray();
}
//保存SKU
$sku_data = [];
foreach ($data['option_ids'] as $key => $value) {
$sku_data[] = [
'id' => $snow_flake->id(),
'uid' => UID,
'product_id' => $product_id,
'sku' => $value,
'price' => $data['option_price_' . $value],
'integral' => $data['option_integral_' . $value],
'stock' => $data['option_stock_' . $value],
'cover_img' => $data['option_cover_img_' . $value],
'create_time' => time()
];
if (empty($data['option_integral_' . $value])) {
return sendErrorArray(4001, '积分不可为0');
}
}
$res = $integral_product_sku_model->insertAll($sku_data);
if ($res === false) {
return sendErrorArray();
}
// 更新库存
$all_stock = array_sum(array_column($sku_data, 'stock'));
$res = $integral_product_model->update(['stock' => $all_stock], ['id' => $product_id]);
if ($res === false) {
return sendErrorArray();
}
return sendSuccessArray();
} else {
return sendSuccessArray();
}
}
/**
* 积分商城商品编辑
* @return mixed
*/
public function productUpdate()
{
return $this->productadd();
}
public function productRecommend()
{
$data = input('post.');
$model = new IntegralProduct();
if ($data['value'] == 1) {
$res = $model->where(['id' => $data['id']])->update([$data['field'] => $data['value'], 'recommend_time' => '']);
} else {
$res = $model->where(['id' => $data['id']])->update([$data['field'] => $data['value'], 'recommend_time' => time()]);
}
if ($res === false) {
return sendErrorMessage();
}
return sendSuccessMessage();
}
/**
* 自提门店列表
* @return array|mixed|string
*/
public function store()
{
$search = input('get.');
autoSearch(['time', 'keyword', 'is_publish'], $search);
$integral_store_model = new IntegralStore();
$where [] = ['uid', '=', UID];
if ($search['time']) {
$time = explode('-', $search['time']);
$where[] = ['create_time', 'between time', [$time[0], $time[1]]];
}
if ($search['keyword'] !== null && $search['keyword'] !== '') {
// $where['order_number|linkman|mobile_phone|address'] = ['like', '%' . $search['keyword'] . '%'];
$where[] = ['name', 'like', '%' . $search['keyword'] . '%'];
}
if ($search['is_publish'] !== null && $search['is_publish'] !== '') {
$where [] = ['is_publish', '=', $search['is_publish']];
}
$page = array_key_exists("page", $search) ? (string)$search['page'] : "1";
$dataList = $integral_store_model
->where($where)->order('id asc')
->paginate(['list_rows' => 50, 'page' => $page], false)->each(function ($item, $key) {
return $item;
});
$attach = [
'total_html' => [['门店总数', $dataList->total()]]
];
View::assign('attach', $attach);
View::assign('search', $search);
View::assign('dataList', $dataList);
return View::fetch();
}
/**
* 自提门店添加
* @return array|mixed|string
*/
public function storeAdd()
{
$user_model = new UserInfo();
$integral_store_model = new IntegralStore();
if (request()->isPost()) {
$data = input('post.');
$data['uid'] = UID;
$data['is_publish'] = array_key_exists('is_publish', $data) ? $data['is_publish'] : 0;
Db::startTrans();
$store_id = $integral_store_model->dataUpdate($data);
if ($store_id === false) {
Db::rollback();
return sendErrorMessage();
}
if (!empty($data['id'])) {
$store_id = $data['id'];
}
//处理自提门店与核销员
$res = $this->storeUser($store_id, $data);
if ($res === false) {
Db::rollback();
return sendErrorMessage();
}
Db::commit();
return sendSuccessMessage();
} else {
$id = input('param.id', 0);
$data = $integral_store_model->getOneData(['id' => $id]);
View::assign('data', $data);
$userWhere [] = [['uid', '=', UID], ['nick_name', '<>', ''], ['user_id', '>', 0]];
$userList = $user_model->getAllData($userWhere);
//查询已关联的核销员
$integral_store_checker_model = new IntegralStoreChecker();
$userId = $integral_store_checker_model->where(['uid' => UID, 'store_id' => $id])->column('user_id');
foreach ($userList as $key => &$value) {
if (!empty($userId)) {
if (in_array($value['user_id'], $userId)) {
$value['is_select'] = 1;
} else {
$value['is_select'] = 0;
}
} else {
$value['is_select'] = 0;
}
}
View::assign('userList', $userList);
return View::fetch('storeadd');
}
}
/**
* 自提门店与核销员
* @param int $store_id
* @param array $data
* @return array|string
* @throws \think\Exception
*/
public function storeUser($store_id = 0, $data = [])
{
if (!array_key_exists('user_id', $data)) {
return sendErrorMessage('请选择核销员');
}
$where = ['uid' => UID, 'store_id' => $store_id];
$integral_store_checker_model = new IntegralStoreChecker();
$res = $integral_store_checker_model->destroy($where, true);
if ($res === false) {
return sendErrorMessage();
}
foreach ($data['user_id'] as $k => $v) {
$update = ['uid' => UID, 'store_id' => $store_id, 'user_id' => $v];
$res = $integral_store_checker_model->dataUpdate($update);
if ($res === false) {
return false;
}
}
return true;
}
/**
* 自提门店修改
* @return array|mixed|string
*/
public function storeUpdate()
{
return $this->storeAdd();
}
/**
* 积分商城订单列表
*/
public function order()
{
$search = input('get.');
autoSearch(['time', 'keyword', 'status', 'remind', 'delivery_type', 'product_type', 'product_name'], $search);
$order_model = new IntegralOrder();
$where [] = ['uid', '=', UID];
$hasWhere = [];
if ($search['time']) {
$time = explode('-', $search['time']);
$where[] = ['create_time', 'between time', [$time[0], $time[1]]];
}
if ($search['keyword'] !== null && $search['keyword'] !== '') {
$where[] = ['order_number', 'like', '%' . $search['keyword'] . '%'];
}
if ($search['product_name'] !== null && $search['product_name'] !== '') {
$hasWhere[] = ['product_name', 'like', '%' . $search['product_name'] . '%'];
}
if ($search['status'] !== null && $search['status'] !== '') {
$where [] = ['status', '=', $search['status']];
}
if (!empty($search['remind'])) {
if ($search['remind'] == 1) {
$where [] = ['remind_time', '>', 0];
} else {
$where [] = ['remind_time', 'null', ''];
}
}
if (!empty($search['delivery_type'])) {
$where [] = ['delivery_type', '=', $search['delivery_type']];
}
if (!empty($search['product_type'])) {
$where [] = ['product_type', '=', $search['product_type']];
}
$where = $order_model->whereChange($where);
session('where', $where);
session('hasWhere', $hasWhere);
$dataList = $order_model::hasWhere('integralOrderProduct', $hasWhere)
->with(['integralOrderProduct', 'userInfo'])
->where($where)->order('id desc')->paginate([
'list_rows' => 20,
'page' => array_key_exists("page", $search) ? (string)$search['page'] : "1",
'query' => $search
], false)
->each(function ($item, $key) {
$item['status_text'] = $item['status_text'];
return $item;
});
$order_total_money = $order_model::hasWhere('integralOrderProduct', $hasWhere)->where($where)->sum('IntegralOrder.pay_money');
$waitSendOrder = $order_model::hasWhere('integralOrderProduct', $hasWhere)->where([['status', '=', '2']])->count();
$attach = [
'total_html' => [
['订单总数', $dataList->total()],
['订单金额', $order_total_money],
['代发货订单', $waitSendOrder],
],
];
View::assign('search', $search);
View::assign('attach', $attach);
View::assign('dataList', $dataList);
return View::fetch();
}
/**
* 修改订单 2017-10-15
*/
public function orderdetail()
{
$id = input('param.id', 0);
$express_model = new PlatformKdniaoCode();
$integral_order_model = new IntegralOrder();
$data = $integral_order_model->with('userInfo')->where(['id' => $id])->find();
if ($id) {
$data['status_text'] = $data['status_text'];
$integral_order_product_model = new IntegralOrderProduct();
$data['order_product'] = $integral_order_product_model->getAllData(['order_id' => $id]);
if ($data['delivery_type'] == 2 && $data['type'] == 1) {
$integral_store_model = new IntegralStore();
$data['store_data'] = $integral_store_model->getOneData(['id' => $data['store_id']]);
}
if ($data['type'] == 1) {
if ($data['status'] == 4) {
//获取核销记录
$integral_order_check_model = new IntegralOrderCheck();
$check_data = $integral_order_check_model->getOneData(['order_id' => $id]);
// dump($check_data);
if (!empty($check_data)) {
$data['check_data'] = $check_data;
}
}
}
}
$expressList = $express_model->getAllData(['is_show' => 1]);
View::assign('expressList', $expressList);
View::assign('data', $data);
return View::fetch();
}
/**
* 后台核销
* @return array|string
* @throws \think\Exception
*/
public function orderCheck()
{
$integral_order_model = new IntegralOrder();
if (request()->isPost()) {
$data = input('post.');
$where_order = ['uid' => UID, 'id' => $data['id']];
$order = $integral_order_model->getOneData($where_order);
if (empty($order)) {
return sendErrorMessage(1, '订单不存在');
}
if ($order['delivery_type'] != 2) {
return sendErrorMessage(1, '该订单无需核销');
}
if ($order['status'] != 3) {
return sendErrorMessage(1, '订单未支付或已提货');
}
$integral_order_check_model = new IntegralOrderCheck();
Db::startTrans();
//添加到核销历史记录
$update = [
'uid' => UID,
'user_id' => $data['user_id'],
'order_id' => $data['id'],
'store_id' => $order['store_id'],
'type' => 2,
'system_loginer_id' => LID
];
$res = $integral_order_check_model->dataUpdate($update);
if ($res === false) {
Db::rollback();
return sendErrorMessage();
}
$res1 = $integral_order_model->where($where_order)->update(['status' => 5]);
if ($res1 === false) {
Db::rollback();
return sendErrorMessage();
}
Db::commit();
return sendSuccessMessage('', '核销成功');
} else {
$id = input('param.id', 0);
$where_order = ['uid' => UID, 'id' => $id];
$data = $integral_order_model->getOneData($where_order);
//获取核销员信息
$integral_store_checker_model = new IntegralStoreChecker();
$checker = $integral_store_checker_model->with('userInfo')->where(['store_id' => $data['store_id'], 'uid' => UID])->select();
View::assign('checker', $checker);
View::assign('data', $data);
return View::fetch('ordercheck');
}
}
/*
* 虚拟商品,状态变更
*/
public function orderFinish()
{
$integral_order_model = new IntegralOrder();
if (request()->isPost()) {
$data = input('post.');
$where_order = ['uid' => UID, 'id' => $data['id']];
$order = $integral_order_model->getOneData($where_order);
if (empty($order)) {
return sendErrorMessage('订单不存在');
}
if ($order['status'] != 2) {
return sendErrorMessage('订单未支付或已完成');
}
$res = $integral_order_model->where($where_order)->update(['status' => 4, 'system_remark' => $data['system_remark'], 'express_time' => time(), 'confirm_time' => time()]);
if ($res === false) {
return sendErrorMessage();
}
return sendSuccessMessage('', '确认成功');
} else {
$id = input('param.id', 0);
$where_order = ['uid' => UID, 'id' => $id];
$data = $integral_order_model->getOneData($where_order);
//获取核销员信息
View::assign('data', $data);
return View::fetch('orderstatus');
}
}
/**
* 订单发货
* @return array|mixed|string
*/
public function orderSend()
{
$integral_order_model = new IntegralOrder();
$express_model = new PlatformKdniaoCode();
if (request()->isPost()) {
$data = input('post.');
$order = $integral_order_model->getOneData(['id' => $data['id']]);
if ($order['status'] == 2 && $order['product_type'] == 1) {
if (!isMobilephone($data['mobile_phone'])) {
return sendErrorMessage(1, '手机号格式不正确');
}
}
if ($order->status != 2) {
return sendErrorMessage(1, '订单状态已发生变化,请重试');
}
if ($order['product_type'] == 1) {
$express = $express_model->getOneData(['id' => $data['express_id']]);
$data['express_code'] = $express['express_code'];
$data['express_name'] = $express['express_company'];
$data['express_time'] = time();
}
$res = $integral_order_model->dataUpdate($data);
if ($res === false) {
return sendErrorMessage();
}
return sendSuccessMessage();
} else {
$id = input('param.id');
$data = $integral_order_model->getOneData(['id' => $id]);
View::assign('data', $data);
$expressList = $express_model->getAllData(['is_show' => 1]);
//获取快递公司
View::assign('expressList', $expressList);
return View::fetch('ordersend');
}
}
/**
* 订单列表导出
* @date 2022-12-28
*/
public function orderexport()
{
$where = session('where');
$hasWhere = session('hasWhere');
$integral_order_model = new IntegralOrder();
$integral_order_product_model = new IntegralOrderProduct();
$dataList = $integral_order_model::hasWhere('integralOrderProduct', $hasWhere)
->with(['integralOrderProduct', 'userInfo'])
->where($where)->order('id desc')->select();
$data[] = [];
foreach ($dataList as $key => $value) {
$value['status_'] = "";
switch ($value['status']) {
case 1:
$value['status_'] = '待付款';
break;
case 2:
$value['status_'] = '待发货';
break;
case 3:
$value['status_'] = '已发货';
break;
case 4:
$value['status_'] = '已完成';
break;
}
$value['delivery_type_'] = "";
switch ($value['delivery_type']) {
case 1:
$value['delivery_type_'] = '邮寄';
break;
case 2:
$value['delivery_type_'] = '自提';
break;
default:
$value['delivery_type_'] = '';
}
$product_list = $integral_order_product_model->getAllData(['order_id' => $value['id'], 'uid' => UID], 'product_name,number', 'create_time desc');
$temp_list = [];
if (!empty($product_list)) {
$temp_list = [];
foreach ($product_list as $val) {
$str = $val['product_name'] . "(×" . $val['number'] . ")";
$temp_list[] = $str;
}
$value['product_list'] = implode('  ', $temp_list);
} else {
$value['product_list'] = "";
}
$data[$key] = [
" " . $value['order_number'], //订单编号
$value['nick_name'], //下单人
$value['product_list'], //购买商品名(×数量)
$value['product_type'] == 1 ? '实物' : '虚拟', //商品类型
$value['delivery_type'] == 1 ? '姓名:' . $value['linkman'] . ';联系电话:' . $value['mobile_phone'] . ';地址:' . $value['province'] . $value['city'] . $value['area'] . $value['address'] : '自提门店地址:' . $value['store_address'], //邮寄信息/提货信息
$value['delivery_type'] == 1 ? '邮寄' : '门店自提', //提货方式
$value['pay_integral'], //实付积分数
$value['pay_money'], //实付金额
$value['remark'], //备注信息
$value['create_time'], //下单时间
$value['status_text'], //状态
];
};
$fileName = "积分订单表";
$headArr = ["订单编号", "下单人", "购买商品信息", "商品类型", "邮寄信息/提货信息", '提货方式', "实付积分数", "实付金额", "备注信息", "下单时间", "状态"];
$msg = '';
$excel_class = new Excel();
$res = $excel_class->excelExport($fileName, $headArr, $data, $msg);
return $res;
}
public function text()
{
create_qr_code_to_oss('/', '123');
}
/**
* 运费设置
* @return array|mixed|string
*/
public function freight()
{
$where = [
'uid' => UID,
];
$freight_model = new IntegralFreight();
$dataList = $freight_model->selectList($where);
View::assign('dataList', $dataList);
return View::fetch();
}
/**
* 规则添加
*/
public function modeAddindie()
{
//获取省市数据
$mode = input('param.mode', 1);
$json_string = file_get_contents('static/json/address.json');
$list = json_decode($json_string, true);
View::assign('list', $list);
View::assign('mode', $mode);
return View::fetch('modeadd');
}
/**
* 运费添加
* @return array|mixed|string
*/
public function freightAdd()
{
$freight_model = new IntegralFreight();
if (request()->isPost()) { //新增和更新
$data = input('post.');
$data['uid'] = UID;
if ($data['type'] == 1) {
$rule = [
'name' => 'require|max:30',
'type' => 'require',
'first_number' => 'require',
'first_number_money' => 'require',
'second_number' => 'require',
'second_number_money' => 'require',
'free_money' => 'require',
];
$msg = [
'name.require' => '规则名称必须',
'name.max' => '规则名称最多不能超过30个字符',
'type.require' => '运费方式必须',
'first_number.require' => '首件必填',
'first_number_money.require' => '首费必填',
'second_number.require' => '续件必填',
'second_number_money.require' => '续费必填',
'free_money.require' => '免邮金额必填',
];
} else {
$rule = [
'name' => 'require|max:30',
'type' => 'require',
'first_weight' => 'require',
'first_weight_money' => 'require',
'second_weight' => 'require',
'second_weight_money' => 'require',
'free_money' => 'require',
];
$msg = [
'name.require' => '规则名称必须',
'name.max' => '规则名称最多不能超过30个字符',
'type.require' => '运费方式必须',
'first_weight.require' => '首重必填',
'first_weight_money.require' => '首费必填',
'second_weight.require' => '续重必填',
'second_weight_money.require' => '续费必填',
'free_money.require' => '免邮金额必填',
];
}
$validate = new Validate($rule, $msg);
if (!$validate->check($data)) {
return sendErrorMessage($validate->getError());
}
//检测数据的合理性
if (!empty($data['id'])) {
$where['id'] = ['neq', $data['id']];
}
if (!empty($data['fee_conf'])) {
$data['fee_conf'] = serialize($data['fee_conf']);
} else {
$data['fee_conf'] = serializeMysql([]);
}
$res = $freight_model->dataUpdate($data);
if ($res === false) {
return sendErrorMessage();
}
return sendSuccessMessage();
} else { //编辑,添加
$id = input('param.id', 0);
$data = $freight_model->findOne(['id' => $id]);
//运费
$index = 0;
if (!empty($data)) {
if (!empty($data['fee_conf'])) {
$data['fee_conf'] = unserialize($data['fee_conf']);
if (!empty($data['fee_conf'])) {
$index = max(array_keys($data['fee_conf']));
}
}
}
View::assign('data', $data);
View::assign('index', $index); //搜索最大的key值
View::assign('mode', isset($data['type']) ? $data['type'] : 1);
return View::fetch('freightadd');
}
}
/**
* 更新运费设置的默认项
* @return array|string|void
*/
public function updateDefault()
{
$data = input('post.');
$freight_model = new IntegralFreight();
if ($data['afterchange'] == 1) {
$freight_model->where('id !=' . $data['id'])->update(['is_default' => 0]);
}
$res = $freight_model->dataUpdate(['is_default' => $data['afterchange'], 'id' => $data['id']]);
if ($res === false) {
return sendErrorMessage();
}
return sendSuccessMessage();
}
/**
* 运费修改
* @return array|mixed|string
*/
public function freightUpdate()
{
return $this->freightAdd();
}
public function review()
{
$search = input('get.');
autoSearch(['time', 'keyword', 'is_replay', 'is_add'], $search);
View::assign('search', $search);
$where = [
'uid' => UID,
'type' => 1
];
if ($search['time']) {
$time = explode('-', $search['time']);
$where['create_time'] = ['between time', [$time[0], $time[1]]];
}
if ($search['keyword'] !== null && $search['keyword'] !== '') {
$where['content'] = ['like', '%' . $search['keyword'] . '%'];
}
if ($search['is_replay'] !== null && $search['is_replay'] !== '') {
$where['is_replay'] = $search['is_replay'];
}
if ($search['is_add'] !== null && $search['is_add'] !== '') {
$where['is_add'] = $search['is_add'];
}
$review_model = new IntegralReview();
$dataList = $review_model->getMemberList($where, $search, '', 'id desc', 50);
View::assign('dataList', $dataList);
$attach = [
'total_html' => [['评论总数', $dataList->total()]]
];
View::assign('attach', $attach);
return View::fetch();
}
public function reviewdetail()
{
$review_model = new IntegralReview();
if (request()->isPost()) {
$data = input('post.');
$data['uid'] = UID;
$data['reply_time'] = time();
$res = $review_model->dataUpdate($data);
if (!$res) {
return sendErrorMessage();
}
return sendSuccessMessage();
} else {
$id = input('param.id', 0);
$data = $review_model->findOne(['id' => $id]);
$add_review = $review_model->findOne(['review_id' => 1]);
View::assign('data', $data);
View::assign('add_review', $add_review);
return View::fetch('reviewdetail');
}
}
public function reviewadd()
{
return $this->reviewdetail();
}
/**
* @return string
* 退款原因设置
*/
public function refundcause()
{
$search = input('get.');
autoSearch(['keyword'], $search);
View::assign('search', $search);
$where [] = ['uid', '=', UID];
if ($search['keyword']) {
$where[] = ['content', 'like', '%' . $search['keyword'] . '%'];
}
$attach_model = new IntegralRefundCause();
$dataList = $attach_model->getMemberList($where, $search, "", "id desc");
View::assign('dataList', $dataList);
$attach = [
'total_html' => [['退款原因总数', $dataList->total()]]
];
View::assign('attach', $attach);
return View::fetch();
}
/**
* @return string
* 退款原因添加
*/
public function refundcauseadd()
{
$refund_model = new IntegralRefundCause();
if (request()->isPost()) {
$data = input('post.');
$data['uid'] = UID;
$res = $refund_model->dataUpdate($data);
if ($res === false) {
return sendErrorMessage();
}
return sendSuccessMessage();
} else {
$id = input('param.id', 0);
$data = $refund_model->findOne(['id' => $id]);
View::assign('data', $data);
return View::fetch('refundcauseadd');
}
}
/**
* 标识/服务保障修改
* @return bool
*/
public function refundcauseupdate()
{
return $this->refundcauseadd();
}
/*
* 退款订单列表
*/
public function refund()
{
$search = input('get.');
autoSearch(['time', 'keyword', 'status', 'refund_way', 'product_order_number', 'nickname', 'product_name'], $search);
View::assign('search', $search);
$where [] = ['uid', '=', UID];
if ($search['time']) {
$time = explode('-', $search['time']);
$where[] = ['create_time', 'between time', [$time[0], $time[1]]];
}
if ($search['refund_way'] !== null && $search['refund_way'] !== '') {
$where [] = ['refund_way', '=', $search['refund_way']];
}
if ($search['keyword']) {
$where[] = ['order_number', 'like', '%' . $search['keyword'] . '%'];
}
if ($search['nickname'] !== null && $search['nickname'] !== '') {
$where[] = ['user_id', 'in', (new VipInfo())->selectListByColumn([['nickname', 'like', '%' . $search['nickname'] . '%']], 'user_id')];
}
if ($search['status'] !== null && $search['status'] !== '') {
$where [] = ['status', '=', $search['status']];
}
if ($search['product_name'] !== null && $search['product_name'] !== '') {
$where[] = ['order_product_id', 'in', (new IntegralOrderProduct())->selectListByColumn([['product_name', 'like', '%' . $search['product_name'] . '%']], 'id')];
}
$order_number = 0;
if ($search['product_order_number'] !== null && $search['product_order_number'] !== '') {
$order_number = $search['product_order_number'];
}
session('where', $where);
$refund_model = new IntegralRefund();
$dataList = $refund_model->getMemberList($where, $search, '', 'id desc', 50, $order_number);
View::assign('dataList', $dataList);
$refund_money = $refund_model->where($where)->sum('refund_money');
$attach = [
'total_html' => [['订单总数', $dataList->total()], ['退款金额', $refund_money]]
];
View::assign('attach', $attach);
return View::fetch();
}
/**
* 退款订单审核通过(同步做退款操作)
* @return array|string
* @throws \think\Exception
*/
public function refundupdate1()
{
$integral_refund_model = new IntegralRefund();
$integral_order_model = new IntegralOrder();
$id = input('param.id', 0);
if (empty($id)) {
return sendErrorMessage('参数错误,审核失败!');
}
$where = [
'uid' => UID,
'id' => $id
];
$refund = $integral_refund_model->findOne($where);
if ($refund['status'] != 1) {
return sendErrorMessage('审核状态发生变化,请刷新重试');
}
$wx_type = "";
if ($refund['source'] == 2) {
$wx_type = "applet";
} elseif ($refund['source'] == 1) {
$wx_type = "wechat";
}
$weixin_logic = new WeixinLogic(['wx_type' => $wx_type]);
$order = $integral_refund_model->findOne(['id' => $refund['order_id']]);
if ($refund['refund_way'] == 1) { //微信原路返回
Db::startTrans();
//获取退款订单信息
$result = $weixin_logic->wxRefund($order['order_number'], $order['pay_money'], $refund['refund_money'], $refund['order_number']);
if ($result['return_code'] === 'SUCCESS') { //返回状态码
if ($result['result_code'] === 'SUCCESS') { //业务结果
$update_data = [
'id' => $id,
'is_arrival' => 1,
'status' => 2,
'arrival_time' => time(),
'update_time' => time(),
'transaction_id' => $result['transaction_id']
];
$res = $integral_refund_model->dataUpdate($update_data);
if (!$res) {
Db::rollback();
return sendErrorMessage();
}
//修改订单状态
$res1 = $integral_order_model->where('id', $refund['order_id'])->update(['status' => ORDER_REFUND_SUCCESS, 'refund_status' => 3]);
if ($res1 === false) {
Db::rollback();
return sendErrorMessage();
}
//发送模板消息
//$weixin_logic->sendTemplateByApplet('order_refund',$order['openid'],getDomain() . '/wechat.php/mall/orderdetail/id/' . $order['id'],['order_id' => $order['id']])
//库存退回
$this->stockchange($refund['order_product_id'], $refund['refund_number']);
$res = $this->integralchange($refund['user_id'], $refund['refund_integral']);
if ($res === false) {
Db::rollback();
return sendErrorMessage();
}
Db::commit();
return sendSuccessMessage('', '审核退款成功');
} else {
Db::rollback();
return sendErrorMessage($result['err_code_des']);
}
} else {
Db::rollback();
return sendErrorMessage($result['return_msg']);
}
} elseif ($refund['refund_way'] == 2) { //余额退回
//生成退款日志,并增加用户的余额信息
Db::startTrans();
$update_data = [
'id' => $id,
'is_arrival' => 1,
'status' => 2,
'arrival_time' => time(),
'update_time' => time()
];
$res = $integral_refund_model->dataUpdate($update_data);
if (!$res) {
Db::rollback();
return sendErrorMessage();
}
$money_service = new \app\money\service\Money();
$res1 = $money_service->change($order['user_id'], 5, $refund['refund_money'], "商城购物退款", $refund['id'], $refund['order_id']);
if ($res1['code'] != 1) {
Db::rollback();
return sendErrorMessage($res1['message']);
}
//修改订单状态
$res2 = $integral_order_model->where('id', $refund['order_id'])->update(['status' => ORDER_REFUND_SUCCESS, 'refund_status' => 3]);
if ($res2 === false) {
Db::rollback();
return sendErrorMessage();
}
//库存退回
$this->stockchange($refund['order_product_id'], $refund['refund_number']);
$res = $this->integralchange($refund['user_id'], $refund['refund_integral']);
if ($res === false) {
Db::rollback();
return sendErrorMessage();
}
//发送模板消息
//$weixin_logic->sendTemplateByApplet('order_refund',$order['openid'],getDomain() . '/wechat.php/mall/orderdetail/id/' . $order['id'],['order_id' => $order['id']])
Db::commit();
return sendSuccessMessage('', '审核退款成功');
} elseif ($refund['refund_way'] == 3) { //支付宝退回
//生成退款日志,并增加用户的余额信息
Db::startTrans();
$update_data = [
'id' => $id,
'is_arrival' => 1,
'status' => 2,
'arrival_time' => time(),
'update_time' => time()
];
$res = $integral_refund_model->dataUpdate($update_data);
if (!$res) {
Db::rollback();
return sendErrorMessage();
}
$ali_logic = new Alipay();
$res1 = $ali_logic->aliRefund($order['order_number'], $refund['order_number'], $refund['refund_money']);
if ($res1['code'] != 1) {
Db::rollback();
return sendErrorMessage($res1['message']);
}
//修改订单状态
$res2 = $integral_order_model->where('id', $refund['order_id'])->update(['status' => ORDER_REFUND_SUCCESS, 'refund_status' => 3]);
if ($res2 === false) {
Db::rollback();
return sendErrorMessage();
}
//库存退回
$this->stockchange($refund['order_product_id'], $refund['refund_number']);
$res = $this->integralchange($refund['user_id'], $refund['refund_integral']);
if ($res === false) {
Db::rollback();
return sendErrorMessage();
}
//发送模板消息
//$weixin_logic->sendTemplateByApplet('order_refund',$order['openid'],getDomain() . '/wechat.php/mall/orderdetail/id/' . $order['id'],['order_id' => $order['id']])
Db::commit();
return sendSuccessMessage('', '审核退款成功');
}
}
public function refundupdate()
{
$mall_refund_model = new IntegralRefund();
$mall_order_model = new IntegralOrder();
$order_product_model = new IntegralOrderProduct();
$id = input('param.id', 0);
if (empty($id)) {
return sendErrorMessage('参数错误,审核失败!');
}
$where = [
'uid' => UID,
'id' => $id
];
$refund = $mall_refund_model->findOne($where);
if ($refund['status'] != 1) {
return sendErrorMessage('审核状态发生变化,请刷新重试');
}
$weixin_logic = invoke(Weixin::class);
$order = $mall_order_model->findOne(['id' => $refund['order_id']]);
$res = $this->integralchange($refund['user_id'], $refund['refund_integral']);
if ($res === false) {
Db::rollback();
return sendErrorMessage();
}
if ($refund['refund_money'] > 0) {
if ($refund['refund_way'] == 1) { //微信原路返回
Db::startTrans();
//获取退款订单信息
$result = $weixin_logic->wxRefund($order['order_number'], $order['pay_money'], $refund['refund_money'], $refund['order_number']);
if ($result['return_code'] === 'SUCCESS') { //返回状态码
if ($result['result_code'] === 'SUCCESS') { //业务结果
$update_data = [
'id' => $id,
'is_arrival' => 1,
'status' => 2,
'arrival_time' => time(),
'update_time' => time(),
'transaction_id' => $result['transaction_id']
];
$res = $mall_refund_model->dataUpdate($update_data);
if (!$res) {
Db::rollback();
return sendErrorMessage();
}
//修改订单状态
// $res1 = $mall_order_model->where('id', $refund['order_id'])->update(['status' => ORDER_REFUND_SUCCESS, 'refund_status' => 3]);
// if ($res1 === false) {
// Db::rollback();
// return sendErrorMessage();
// }
//修改订单状态
//查询订单剩余商品数量
$order_now_product_number = $order_product_model->where(['order_id' => $refund['order_id']])->sum('number');
//查询订单退款单的剩余审核中数量
$now_refund_order_number = $mall_refund_model->where(['order_id' => $refund['order_id'], 'status' => 1])->count();
if ($order_now_product_number == 0 && $now_refund_order_number == 0) {//该订单没有没有未申请的商品也没有审核中的退款单 改变订单状态为退款成功
$res1 = $mall_order_model->dataUpdate(['id' => $refund['order_id'], 'status' => ORDER_REFUND_SUCCESS, 'refund_status' => 3]);
if ($res1 === false) {
Db::rollback();
return sendErrorMessage();
}
} else {
$status = $order['delivery_type'] + 1;
$res1 = $mall_order_model->dataUpdate(['id' => $refund['order_id'], 'status' => $status, 'refund_status' => 1]);
if ($res1 === false) {
Db::rollback();
return sendErrorMessage(1);
}
}
//发送模板消息
//$weixin_logic->sendTemplateByApplet('order_refund',$order['openid'],getDomain() . '/wechat.php/mall/orderdetail/id/' . $order['id'],['order_id' => $order['id']])
//库存退回
$this->stockchange($refund['order_product_id'], $refund['refund_number']);
Db::commit();
return sendSuccessMessage('', '审核退款成功');
} else {
Db::rollback();
return sendErrorMessage($result['err_code_des']);
}
} else {
Db::rollback();
return sendErrorMessage($result['return_msg']);
}
} elseif ($refund['refund_way'] == 2) { //余额退回
//生成退款日志,并增加用户的余额信息
Db::startTrans();
$update_data = [
'id' => $id,
'is_arrival' => 1,
'status' => 2,
'arrival_time' => time(),
'update_time' => time()
];
$res = $mall_refund_model->dataUpdate($update_data);
if (!$res) {
Db::rollback();
return sendErrorMessage();
}
$money_service = new \app\money\service\Money();
$res1 = $money_service->change($order['user_id'], 5, $refund['refund_money'], "商城购物退款", $refund['id'], $refund['order_id']);
if ($res1['code'] != 1) {
Db::rollback();
return sendErrorMessage($res1['message']);
}
//修改订单状态
// $res2 = $mall_order_model->where('id', $refund['order_id'])->update(['status' => ORDER_REFUND_SUCCESS, 'refund_status' => 3]);
// if ($res2 === false) {
// Db::rollback();
// return sendErrorMessage();
// }
//修改订单状态
//查询订单剩余商品数量
$order_now_product_number = $order_product_model->where(['order_id' => $refund['order_id']])->sum('number');
//查询订单退款单的剩余审核中数量
$now_refund_order_number = $mall_refund_model->where(['order_id' => $refund['order_id'], 'status' => 1])->count();
if ($order_now_product_number == 0 && $now_refund_order_number == 0) {//该订单没有没有未申请的商品也没有审核中的退款单 改变订单状态为退款成功
$res1 = $mall_order_model->dataUpdate(['id' => $refund['order_id'], 'status' => ORDER_REFUND_SUCCESS, 'refund_status' => 3]);
if ($res1 === false) {
Db::rollback();
return sendErrorMessage(1);
}
} else {
$status = $order['delivery_type'] + 1;
$res1 = $mall_order_model->dataUpdate(['id' => $refund['order_id'], 'status' => $status, 'refund_status' => 1]);
if ($res1 === false) {
Db::rollback();
return sendErrorMessage(1);
}
}
//库存退回
$this->stockchange($refund['order_product_id'], $refund['refund_number']);
//发送模板消息
//$weixin_logic->sendTemplateByApplet('order_refund',$order['openid'],getDomain() . '/wechat.php/mall/orderdetail/id/' . $order['id'],['order_id' => $order['id']])
Db::commit();
return sendSuccessMessage('', '审核退款成功');
} elseif ($refund['refund_way'] == 3) { //支付宝退回
//生成退款日志,并增加用户的余额信息
Db::startTrans();
$update_data = [
'id' => $id,
'is_arrival' => 1,
'status' => 2,
'arrival_time' => time(),
'update_time' => time()
];
$res = $mall_refund_model->dataUpdate($update_data);
if (!$res) {
Db::rollback();
return sendErrorMessage();
}
$ali_logic = new Alipay();
$res1 = $ali_logic->aliRefund($order['order_number'], $refund['order_number'], $refund['refund_money']);
if ($res1['code'] != 1) {
Db::rollback();
return sendErrorMessage($res1['message']);
}
//修改订单状态
// $res2 = $mall_order_model->where('id', $refund['order_id'])->update(['status' => ORDER_REFUND_SUCCESS, 'refund_status' => 3]);
// if ($res2 === false) {
// Db::rollback();
// return sendErrorMessage();
// }
//修改订单状态
//查询订单剩余商品数量
$order_now_product_number = $order_product_model->where(['order_id' => $refund['order_id']])->sum('number');
//查询订单退款单的剩余审核中数量
$now_refund_order_number = $mall_refund_model->where(['order_id' => $refund['order_id'], 'status' => 1])->count();
if ($order_now_product_number == 0 && $now_refund_order_number == 0) {//该订单没有没有未申请的商品也没有审核中的退款单 改变订单状态为退款成功
$res1 = $mall_order_model->dataUpdate(['id' => $refund['order_id'], 'status' => ORDER_REFUND_SUCCESS, 'refund_status' => 3]);
if ($res1 === false) {
Db::rollback();
return sendErrorMessage();
}
} else {
$status = $order['delivery_type'] + 1;
$res1 = $mall_order_model->dataUpdate(['id' => $refund['order_id'], 'status' => $status, 'refund_status' => 1]);
if ($res1 === false) {
Db::rollback();
return sendErrorMessage(1);
}
}
//库存退回
$this->stockchange($refund['order_product_id'], $refund['refund_number']);
//发送模板消息
//$weixin_logic->sendTemplateByApplet('order_refund',$order['openid'],getDomain() . '/wechat.php/mall/orderdetail/id/' . $order['id'],['order_id' => $order['id']])
Db::commit();
return sendSuccessMessage('', '审核退款成功');
}
} else {
$update_data = [
'id' => $id,
'is_arrival' => 1,
'status' => 2,
'arrival_time' => time(),
'update_time' => time(),
];
$res = $mall_refund_model->dataUpdate($update_data);
if (!$res) {
Db::rollback();
return sendErrorMessage();
}
//修改订单状态
// $res1 = $mall_order_model->where('id', $refund['order_id'])->update(['status' => ORDER_REFUND_SUCCESS, 'refund_status' => 3]);
// if ($res1 === false) {
// Db::rollback();
// return sendErrorMessage();
// }
//修改订单状态
//查询订单剩余商品数量
$order_now_product_number = $order_product_model->where(['order_id' => $refund['order_id']])->sum('number');
//查询订单退款单的剩余审核中数量
$now_refund_order_number = $mall_refund_model->where(['order_id' => $refund['order_id'], 'status' => 1])->count();
if ($order_now_product_number == 0 && $now_refund_order_number == 0) {//该订单没有没有未申请的商品也没有审核中的退款单 改变订单状态为退款成功
$res1 = $mall_order_model->dataUpdate(['id' => $refund['order_id'], 'status' => ORDER_REFUND_SUCCESS, 'refund_status' => 3]);
if ($res1 === false) {
Db::rollback();
return sendErrorMessage();
}
} else {
$status = $order['delivery_type'] + 1;
$res1 = $mall_order_model->dataUpdate(['id' => $refund['order_id'], 'status' => $status, 'refund_status' => 1]);
if ($res1 === false) {
Db::rollback();
return sendErrorMessage(1);
}
}
//发送模板消息
//$weixin_logic->sendTemplateByApplet('order_refund',$order['openid'],getDomain() . '/wechat.php/mall/orderdetail/id/' . $order['id'],['order_id' => $order['id']])
//库存退回
$this->stockchange($refund['order_product_id'], $refund['refund_number']);
Db::commit();
return sendSuccessMessage('', '审核退款成功');
}
}
/**
* 审核订单审核不通过
* @return array|string
* @throws \think\Exception
*/
public function refundRefuse()
{
$mall_refund_model = new IntegralRefund();
$mall_order_model = new IntegralOrder();
$mall_order_product_model = new IntegralOrderProduct();
$id = input('param.id', 0);
$cause = input('param.cause', 0);
if (empty($id)) {
return sendErrorMessage('参数错误,审核状态变更失败!');
}
$where = [
'uid' => UID,
'id' => $id
];
$refund = $mall_refund_model->findOne($where);
if ($refund['status'] != 1) {
return sendErrorMessage('审核状态发生变化,请刷新重试');
}
$order = $mall_order_model->findOne(['id' => $refund['order_id']]);
Db::startTrans();
//退款订单数据变更
$res = $mall_refund_model->dataUpdate(['id' => $id, 'status' => 3, 'update_time' => time(), 'refuse_cause' => $cause]);
if (!$res) {
Db::rollback();
return sendErrorMessage();
}
//修改订单商品数量
$res1 = $mall_order_product_model->where(['order_id' => $refund['order_id'], 'id' => $refund['order_product_id']])->inc('number', $refund['refund_number'])->update();
if ($res1 === false) {
Db::rollback();
return sendErrorMessage();
}
$status = $order['delivery_type'] + 1;
$res1 = $mall_order_model->dataUpdate(['id' => $refund['order_id'], 'status' => $status, 'refund_status' => 1]);
if ($res1 === false) {
Db::rollback();
return sendErrorMessage();
}
Db::commit();
return sendSuccessMessage('', '审核状态变更成功');
}
public function stockchange($id, $refund_number)
{
//获取订单信息
$order_product_model = new IntegralOrderProduct();
$data = $order_product_model->field('id,product_id,is_product_spec_open,product_sku,number')->where(['id' => $id])->find();
$integral_product_model = new IntegralProduct();
$integral_product_sku_model = new IntegralProductSku();
if (!empty($data)) {
$integral_product_model->where(['id' => $data['product_id']])->dec('sales_actual_number', $refund_number)->update();
// 没有开启规格 减少产品总库存
if ($data['is_product_spec_open'] == 0) {
$integral_product_model->where(['id' => $data['product_id']])->inc('stock', $refund_number)->update();
} else {
$integral_product_sku_model->where(['product_id' => $data['product_id'], 'sku' => $data['product_sku']])->inc('stock', $refund_number)->update();
}
}
}
public function integralchange($user_id, $integral_num)
{
$my_integral = new IntegralMy();
return $my_integral->where(['user_id' => $user_id])->inc('integral', $integral_num)->update();
}
public function test()
{
$res = exec('ffmpeg -i 2.mp4 -vf "drawtext=fontfile=SimHei.ttf:text=\'哈哈哈哈哈\':y=h-line_h-20:x=(w-text_w)/2:fontsize=34:fontcolor=yellow:shadowy=2" -b:v 3000k 22.mp4');
}
/**
* 热门标签列表
* @return array|mixed|string
*/
public function search()
{
$search_hot_model = new IntegralSearchHot();
$where = ['uid' => UID];
$dataList = $search_hot_model->getAllData($where, '', 'sort desc,id desc');
View::assign('dataList', $dataList);
return View::fetch("search");
}
/**
* 热门搜索添加
* @return array|mixed|string
*/
public function searchAdd()
{
$search_hot_model = new IntegralSearchHot();
if (request()->isPost()) {
$data = input('post.');
$data['uid'] = UID;
$res = $search_hot_model->dataUpdate($data);
if ($res === false) {
return sendErrorMessage();
}
return sendSuccessMessage();
} else {
$id = input('param.id', 0);
$data = $search_hot_model->getOneData(['id' => $id]);
View::assign('data', $data);
return View::fetch('searchadd');
}
}
public function searchUpdate()
{
return $this->searchAdd();
}
}