|
@@ -2,10 +2,13 @@
|
|
|
|
|
|
namespace app\mobile\logic;
|
|
|
|
|
|
+use app\model\AddrModel;
|
|
|
use app\model\CommonModel;
|
|
|
use app\model\CompanyGoodModel;
|
|
|
use app\model\GoodModel;
|
|
|
use app\model\GroupModel;
|
|
|
+use app\model\InventoryExchangeModel;
|
|
|
+use app\model\OrderExchangeModel;
|
|
|
use think\Exception;
|
|
|
use think\facade\Db;
|
|
|
use think\response\Json;
|
|
@@ -16,16 +19,10 @@ class ExchangeLogic extends BaseLogic
|
|
|
//商品列表
|
|
|
public static function goodList(array $data = []): Json
|
|
|
{
|
|
|
-
|
|
|
- $group_id = GroupModel::where(['is_del' => CommonModel::$del_normal, 'company_id' => self::$company_id, 'card_id' => self::$card_id])
|
|
|
- ->value('id', 0);
|
|
|
- if (!$group_id) return json_show(CommonModel::$error_param, '该账户所对应的分组不存在');
|
|
|
-
|
|
|
-
|
|
|
$db = CompanyGoodModel::alias('a')
|
|
|
->leftJoin('good b', 'b.id=a.good_id AND b.type=' . GoodModel::$type_exchange . ' AND b.is_del=' . CommonModel::$del_normal)
|
|
|
->leftJoin('inventory_exchange c', 'c.account_id=' . self::$aid . ' AND c.good_id=a.good_id')
|
|
|
- ->where(['a.is_del' => CommonModel::$del_normal, 'a.group_id' => $group_id]);
|
|
|
+ ->where(['a.is_del' => CommonModel::$del_normal, 'a.group_id' => self::$group_id]);
|
|
|
|
|
|
$count = $db->count('a.id');
|
|
|
|
|
@@ -62,35 +59,127 @@ class ExchangeLogic extends BaseLogic
|
|
|
|
|
|
}
|
|
|
|
|
|
- //下单
|
|
|
+ //兑换商品下单
|
|
|
public static function orderAdd(array $data = []): Json
|
|
|
{
|
|
|
-
|
|
|
Db::startTrans();
|
|
|
|
|
|
try {
|
|
|
|
|
|
+ //判断收货地址
|
|
|
+
|
|
|
+ $rs = AddrModel::field('id')
|
|
|
+ ->where(['is_del' => CommonModel::$del_normal, 'id' => $data['addr_id'], 'uid' => self::$aid])
|
|
|
+ ->findOrEmpty()
|
|
|
+ ->isEmpty();
|
|
|
+ if ($rs) throw new Exception('该地址不存在');
|
|
|
+
|
|
|
+
|
|
|
+ //判断商品
|
|
|
+ $rs = CompanyGoodModel::alias('a')
|
|
|
+ ->field('a.id,a.good_id,b.good_code,b.good_name,b.status,b.moq,c.id inventory_id,c.inventory')
|
|
|
+ ->leftJoin('good b', 'b.id=a.good_id AND b.is_del=' . CommonModel::$del_normal)
|
|
|
+ ->leftJoin('inventory_exchange c', 'c.account_id=' . self::$aid . ' AND c.good_id=a.good_id')
|
|
|
+ ->where(['a.is_del' => CommonModel::$del_normal, 'a.group_id' => self::$group_id, 'a.good_id' => $data['good_id']])
|
|
|
+ ->findOrEmpty();
|
|
|
+
|
|
|
+ if ($rs->isEmpty()) throw new Exception('该商品不存在或不允许兑换');
|
|
|
+ if ($rs->status != CommonModel::$status_normal) throw new Exception('该商品已被禁用');
|
|
|
+ if ($rs->moq > $data['num']) throw new Exception('不满足该商品的起订量,' . $rs->moq);
|
|
|
+ if ($rs->inventory < $data['num']) throw new Exception('库存数不足');
|
|
|
+
|
|
|
+ $date = date('Y-m-d H:i:s');
|
|
|
+
|
|
|
+ $after_inventory = bcsub($rs->inventory, $data['num']);
|
|
|
+
|
|
|
+ //添加库存变动记录
|
|
|
+ Db::name('inventory_exchange_log')
|
|
|
+ ->insert([
|
|
|
+ 'inventory_exchange_id' => $rs->inventory_id,
|
|
|
+ 'before_inventory' => $rs->inventory,
|
|
|
+ 'after_inventory' => $after_inventory,
|
|
|
+ 'good_id' => $rs->good_id,
|
|
|
+ 'good_code' => $rs->good_code,
|
|
|
+ 'good_name' => $rs->good_name,
|
|
|
+ 'source' => CommonModel::$source_account,
|
|
|
+ 'createrid' => self::$aid,
|
|
|
+ 'creater' => self::$aname,
|
|
|
+ 'addtime' => $date
|
|
|
+ ]);
|
|
|
+
|
|
|
+ //扣减库存
|
|
|
+ InventoryExchangeModel::where('id', $rs->inventory_id)
|
|
|
+ ->save(['inventory' => $after_inventory, 'updaterid' => self::$aid, 'updater' => self::$aname, 'updatetime' => $date]);
|
|
|
+
|
|
|
+ //生成兑换订单
|
|
|
+ OrderExchangeModel::create([
|
|
|
+ 'orderCode' => make_no('DH'),
|
|
|
+ 'company_id' => self::$company_id,
|
|
|
+ 'card_id' => self::$card_id,
|
|
|
+ 'uid' => self::$aid,
|
|
|
+ 'good_id' => $rs->good_id,
|
|
|
+ 'num' => $data['num'],
|
|
|
+ 'addr_id' => $data['addr_id'],
|
|
|
+ 'remark' => $data['remark'],
|
|
|
+ 'status' => CommonModel::$status_not_deliver,
|
|
|
+ 'is_del' => CommonModel::$del_normal,
|
|
|
+ 'creater' => self::$aname,
|
|
|
+ 'createrid' => self::$aid,
|
|
|
+ 'addtime' => $date,
|
|
|
+ 'updater' => self::$aname,
|
|
|
+ 'updaterid' => self::$aid,
|
|
|
+ 'updatetime' => $date,
|
|
|
+ ])->save();
|
|
|
|
|
|
+ Db::commit();
|
|
|
|
|
|
+ return json_show(CommonModel::$success, '兑换商品成功');
|
|
|
+ } catch (Exception $exception) {
|
|
|
+ Db::rollback();
|
|
|
+ return json_show(CommonModel::$error_param, '兑换失败,' . $exception->getMessage());
|
|
|
+ }
|
|
|
|
|
|
+ }
|
|
|
|
|
|
+ //兑换订单列表
|
|
|
+ public static function orderList(array $data = []): Json
|
|
|
+ {
|
|
|
+ $db = OrderExchangeModel::alias('a')
|
|
|
+ ->leftJoin('good b', 'b.id=a.good_id AND b.is_del=' . CommonModel::$del_normal)
|
|
|
+ ->where('a.is_del', CommonModel::$del_normal);
|
|
|
|
|
|
+ if ($data['status'] != '') $db->where('a.status', $data['status']);
|
|
|
|
|
|
+ $count = $db->count('a.id');
|
|
|
|
|
|
+ $list = $db
|
|
|
+ ->field('a.id,a.orderCode,b.good_name,a.num,a.status,a.addtime')
|
|
|
+ ->page($data['page'], $data['size'])
|
|
|
+ ->order('a.id', 'desc')
|
|
|
+ ->select()
|
|
|
+ ->toArray();
|
|
|
|
|
|
+ return json_show(CommonModel::$success, '获取兑换订单列表成功', ['count' => $count, 'list' => $list]);
|
|
|
|
|
|
+ }
|
|
|
|
|
|
+ //兑换订单详情
|
|
|
+ public static function orderInfo(int $id = 0): Json
|
|
|
+ {
|
|
|
+ $rs = OrderExchangeModel::alias('a')
|
|
|
+ ->field('a.id,a.orderCode,a.status,a.addtime,b.good_name,a.num,c.contactor,c.mobile,c.addr,c.addr_code')
|
|
|
+ ->leftJoin('good b', 'b.id=a.good_id AND b.is_del=' . CommonModel::$del_normal)
|
|
|
+ ->leftJoin('addr c', 'c.id=a.addr_id AND c.is_del=' . CommonModel::$del_normal)
|
|
|
+ ->where(['a.is_del' => CommonModel::$del_normal, 'a.id' => $id])
|
|
|
+ ->withAttr('addr', function ($val, $da) {
|
|
|
+ return $da['addr_code'] ? get_addr_name($da['addr_code']) . $val : $val;
|
|
|
+ })
|
|
|
+ ->findOrEmpty()
|
|
|
+ ->toArray();
|
|
|
|
|
|
-
|
|
|
-
|
|
|
- Db::commit();
|
|
|
-
|
|
|
- return json_show(CommonModel::$success, '兑换商品成功');
|
|
|
- } catch (Exception $exception) {
|
|
|
- Db::rollback();
|
|
|
- return json_show(CommonModel::$error_param, '兑换失败,' . $exception->getMessage());
|
|
|
- }
|
|
|
+ return $rs ? json_show(CommonModel::$success, '获取兑换订单详情成功', $rs) : json_show(CommonModel::$error_param, '该订单不存在');
|
|
|
|
|
|
}
|
|
|
|
|
|
+
|
|
|
}
|