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.
298 lines
10 KiB
298 lines
10 KiB
<?php
|
|
namespace addons\qingdong\controller;
|
|
use addons\qingdong\model\Business as BusinessModel;
|
|
use addons\qingdong\model\BusinessOther;
|
|
use addons\qingdong\model\FormField;
|
|
use addons\qingdong\model\Staff;
|
|
use addons\qingdong\model\Message;
|
|
use addons\qingdong\model\Contract;
|
|
use addons\qingdong\model\BusinessStatus;
|
|
use addons\qingdong\model\File;
|
|
use think\Db;
|
|
use think\Exception;
|
|
/**
|
|
* 商机接口
|
|
*/
|
|
class Business extends StaffApi
|
|
{
|
|
protected $noNeedLogin = [];
|
|
protected $noNeedRight = [];
|
|
|
|
|
|
//创建商机
|
|
public function addBusiness()
|
|
{
|
|
$params = $this->request->post();
|
|
|
|
$result = FormField::checkFields(FormField::BUSINESS_TYPE, $params);
|
|
if ($result !== true) {
|
|
$this->error($result);
|
|
}
|
|
Db::startTrans();
|
|
try {
|
|
|
|
$result = BusinessModel::createBusiness($params);
|
|
Db::commit();
|
|
} catch (Exception $e) {
|
|
Db::rollback();
|
|
$this->error($e->getMessage());
|
|
}
|
|
if ($result) {
|
|
$this->success('添加商机成功');
|
|
}
|
|
}
|
|
|
|
|
|
//获取商机列表
|
|
public function getList()
|
|
{
|
|
$limit = input("limit/d", 10);
|
|
$customer_id = input('customer_id');
|
|
$params = $this->request->post();
|
|
|
|
$where= FormField::updateWhereField(FormField::BUSINESS_TYPE,$params);
|
|
|
|
if (isset($params['createtime']) && $params['createtime']) {//
|
|
$createtime = $params['createtime'];
|
|
$createtime = explode(',', $createtime);
|
|
$where['createtime'] = ['between', [strtotime($createtime[0]), strtotime($createtime[1]) + 86400 - 1]];
|
|
}
|
|
if (isset($params['staff_id']) && $params['staff_id']) {//下级员工筛选
|
|
$where['owner_staff_id'] = $params['staff_id'];
|
|
} else {
|
|
$where['owner_staff_id'] = ['in', Staff::getMyStaffIds()];
|
|
if (isset($params['type']) && $params['type']) {//客户分类
|
|
if ($params['type'] == 1) {//我的创建
|
|
$where['owner_staff_id'] = $this->auth->id;
|
|
} elseif ($params['type'] == 2) {//下属创建
|
|
$where['owner_staff_id'] = ['in', Staff::getLowerStaffId()];
|
|
}
|
|
}
|
|
}
|
|
$wheres =[];
|
|
if (isset($params['contract_status']) && $params['contract_status']) {
|
|
if($params['contract_status'] == 1){
|
|
$wheres['contract_status'] = 0;
|
|
}
|
|
if($params['contract_status'] == 2){
|
|
$wheres['contract_status'] = 1;
|
|
}
|
|
}
|
|
|
|
if ($customer_id) {
|
|
$where['customer_id'] = $customer_id;
|
|
}
|
|
$records = BusinessModel::where($where)->where($wheres)->with([
|
|
'customer',
|
|
'ownerStaff',
|
|
])->order('id desc')->paginate($limit)->toArray();
|
|
$data=[];
|
|
foreach($records['data'] as $k=>$v){
|
|
$types = BusinessStatus::where(array('business_id'=>$v['id']))->order('id desc')->value('type');
|
|
if($types){
|
|
$v['type'] = (int)$types;
|
|
}else{
|
|
$v['type'] = 0;
|
|
}
|
|
$data[$k] = $v;
|
|
}
|
|
$allMoney = BusinessModel::where($where)->where($wheres)->sum('money');
|
|
$moneyinfo['repayment_money'] = BusinessModel::where($where)->where(array('contract_status'=>1))->sum('money'); //成交金额
|
|
$moneyinfo['no_money'] = sprintf("%.2f",$allMoney)-sprintf("%.2f",$moneyinfo['repayment_money']);//未成交金额
|
|
$moneyinfo['allmoney'] = $allMoney;//合同总金额
|
|
$this->success('请求成功', ['moneyinfo' => $moneyinfo, 'total' => $records['total'], 'per_page' => $records['per_page'], 'current_page' => $records['current_page'], 'last_page' => $records['last_page'], 'data' => $data]);
|
|
|
|
}
|
|
|
|
//获取商机详情
|
|
public function getDetail()
|
|
{
|
|
$id = input('id');
|
|
$contract = BusinessModel::where(['id' => $id])->with([
|
|
'customer',
|
|
'ownerStaff',
|
|
'product',
|
|
])->find();
|
|
if (empty($contract)) {
|
|
$this->error('商机不存在');
|
|
}
|
|
$contract = $contract->toArray();
|
|
$contract = BusinessOther::getOther($contract);
|
|
$type = BusinessStatus::where(array('business_id'=>$contract['id']))->order('id desc')->value('type');
|
|
$contract['type'] = $type ? (int)$type : 0;
|
|
//产品删除不显示
|
|
if(isset($contract['product']) && $contract['product']){
|
|
foreach($contract['product'] as $k=>$v){
|
|
if(!$v['name'] && !$v['num']){
|
|
unset($contract['product'][$k]);
|
|
}
|
|
}
|
|
}
|
|
//标记通知已读
|
|
Message::setRead(Message::BUSINESS_TYPE, $id, $this->auth->id);
|
|
|
|
$this->success('请求成功', $contract);
|
|
}
|
|
|
|
//修改商机
|
|
public function editBusiness()
|
|
{
|
|
$id = input('id');
|
|
$params = $this->request->post();
|
|
$row = BusinessModel::where(['id' => $id])->find();
|
|
if (empty($row)) {
|
|
$this->error('商机信息不存在');
|
|
}
|
|
|
|
$result = FormField::checkFields(FormField::BUSINESS_TYPE, $params,$id);
|
|
if ($result !== true) {
|
|
$this->error($result);
|
|
}
|
|
Db::startTrans();
|
|
try {
|
|
$result = BusinessModel::updateBusiness($params);
|
|
Db::commit();
|
|
} catch (Exception $e) {
|
|
Db::rollback();
|
|
$this->error($e->getMessage());
|
|
}
|
|
$this->success('修改商机成功');
|
|
}
|
|
|
|
/**
|
|
* 转移商机
|
|
*/
|
|
public function batch_change()
|
|
{
|
|
$ids = input('id');
|
|
$staff_id = input('owner_staff_id');
|
|
if(!$ids || !$staff_id){
|
|
$this->error('参数不正确');
|
|
}
|
|
$ids = BusinessModel::where([
|
|
'id' => $ids
|
|
])->column('id');
|
|
if (empty($ids)) {
|
|
$this->error('商机不存在');
|
|
}
|
|
$result = BusinessModel::batchTransfer($ids, $staff_id);
|
|
if(!$result){
|
|
$this->error('操作失败');
|
|
}
|
|
$this->success('操作成功');
|
|
}
|
|
//删除商机
|
|
public function delete()
|
|
{
|
|
$ids = input('id');
|
|
if(!$ids){
|
|
$this->error('参数不正确');
|
|
}
|
|
$data = BusinessModel::where([
|
|
'id' => $ids
|
|
])->column('id');
|
|
if (empty($data)) {
|
|
$this->error('商机不存在');
|
|
}
|
|
$result = BusinessModel::where(array('id'=>$ids))->update(array('updatetime'=>time(),'deletetime'=>time()));
|
|
if(!$result){
|
|
$this->error('删除失败');
|
|
}
|
|
$this->success('删除成功');
|
|
}
|
|
//关联商机列表
|
|
public function business_list(){
|
|
$ids = input('customer_id');
|
|
if(!$ids){
|
|
$this->error('参数不正确');
|
|
}
|
|
$data= BusinessModel::where(['customer_id'=>$ids,'owner_staff_id'=>['in',Staff::getMyStaffIds()]])->field('id,name')->select();
|
|
|
|
$this->success('请求成功',$data);
|
|
}
|
|
//商机合同
|
|
public function contract(){
|
|
$limit = input("limit/d", 10);
|
|
$ids = input('id');
|
|
if(!$ids){
|
|
$this->error('参数不正确');
|
|
}
|
|
$contract = Contract::where(array('business_id'=>$ids))->with([
|
|
'customer',
|
|
'contacts',
|
|
'ownerStaff',
|
|
'orderStaff',
|
|
'receivables'
|
|
])->order('id desc')->paginate($limit)->toArray();
|
|
$data = isset($contract['data'])?$contract['data']:[];
|
|
if($data){
|
|
foreach ($data as $k => $v) {
|
|
if (empty($v['receivables'])) {
|
|
$v['receivables'] = [
|
|
'repayment_money' => 0,
|
|
'be_money' => $v['money'],
|
|
'ratio' => 0
|
|
];
|
|
} else {
|
|
$be_money = $v['money'] - $v['receivables']['repayment_money'];
|
|
$be_money = ($be_money > 0) ? $be_money : 0;
|
|
$v['receivables'] = [
|
|
'repayment_money' => $v['receivables']['repayment_money'],
|
|
'be_money' =>$be_money,
|
|
'ratio' => round($v['receivables']['repayment_money'] / $v['money'] * 100, 2)
|
|
];
|
|
}
|
|
$data[$k] = $v;
|
|
}
|
|
}
|
|
$this->success('请求成功', ['total' => $contract['total'], 'per_page' => $contract['per_page'], 'current_page' => $contract['current_page'], 'last_page' => $contract['last_page'], 'data' => $data]);
|
|
|
|
}
|
|
//商机状态
|
|
public function business_status(){
|
|
$id = input('id');
|
|
$type = input('type',0);
|
|
$remark = input('remark');
|
|
$file = input('file');
|
|
if(!$id){
|
|
$this->error('参数不正确');
|
|
}
|
|
$data = array(
|
|
'id'=>$id,
|
|
'type'=>$type,
|
|
'remark'=>$remark,
|
|
'file'=>$file,
|
|
);
|
|
$business =BusinessModel::batchStatus($data);
|
|
if(!$business){
|
|
$this->error('操作失败');
|
|
}
|
|
$this->success('操作成功');
|
|
}
|
|
//商机历史
|
|
public function business_history(){
|
|
$id = input('id');
|
|
if(!$id){
|
|
$this->error('参数不正确');
|
|
}
|
|
$business = BusinessStatus::where(array('business_id'=>$id))->order('id desc')->select();
|
|
foreach($business as $k=>$v){
|
|
$business[$k]['createtime'] = date('Y-m-d H:i:s',$v['createtime']);
|
|
if($v['file']){
|
|
$business[$k]['file'] = File::where(array('id'=>['in',$v['file']]))->field('id,types,name,save_name,size,file_path')->select();
|
|
}
|
|
}
|
|
$this->success('请求成功',$business);
|
|
}
|
|
//查询商机列表
|
|
public function get_select_list(){
|
|
$limit = input("limit/d", 10);
|
|
$params = $this->request->post();
|
|
$where = [];
|
|
if(isset($params['name']) && $params['name']){
|
|
$where['name'] = array('like','%'.$params['name'].'%');
|
|
}
|
|
$data= BusinessModel::where(['owner_staff_id'=>['in',Staff::getMyStaffIds()]])->where($where)->field('id,name')->order('id desc')->paginate($limit)->toArray();;
|
|
$this->success('请求成功',$data);
|
|
}
|
|
}
|