123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- <?php
- namespace app\common\model;
- use think\Db;
- use think\Exception;
- class MateApply extends Base
- {
- protected $createTime = 'create_time';
- protected $updateTime = 'update_time';
- public $table = 'mate_apply';
- protected $validateName = 'MateApply';
- public function updates($userId){
- $data = request()->post();
- $data['org_id'] = cur_org_id();
- $result = validate($this->validateName)->check($data,[],'');
- if(true !== $result){
- $this->error = validate($this->validateName)->getError();
- return false;
- }
- $curTime = date('Y-m-d H:i:s');
- Db::startTrans();
- try{
- $applyId = Db::name('mate_apply')->insertGetId([
- 'org_id' => $data['org_id'],
- 'create_time' => $curTime,
- 'user_id' => $userId,
- 'sn' => get_unique_id(),
- 'remark' => $data['remark'],
- 'name' => $data['name'],
- 'phone' => $data['phone'],
- 'type' => $data['type']
- ]);
- if(!$applyId){
- \exception('操作失败');
- }
- $arr = [];
- foreach ($data['goods'] as $k=>$v){
- // 重新计算平均价
- $info = Db::name('mate_goods')->where('id',$k)->find();
- if($data['type'] == 1){
- $price = ($info['price'] *$info['nums'] + $v['price']*$v['nums']) / ($info['nums']+$v['nums']);
- $ret = Db::name('mate_goods')->where('id',$k)->update([
- 'price' => round($price,2),
- 'nums' => $info['nums']+$v['nums'],
- 'update_time' => $curTime
- ]);
- if(!$ret){
- \exception('操作失败');
- }
- }else{
- $ret = Db::name('mate_goods')->where('id',$k)->update([
- 'nums' => $info['nums'] - $v['nums'],
- 'update_time' => $curTime
- ]);
- if(!$ret){
- \exception('操作失败');
- }
- }
- $arr[] = [
- 'apply_id' => $applyId,
- 'goods_id' => $k,
- 'nums' => $v['nums'],
- 'price' => $data['type'] == 1?$v['price']:$info['price']
- ];
- }
- $ret = Db::name('mate_apply_goods')->insertAll($arr);
- if($ret != count($arr)){
- \exception('操作失败');
- }
- Db::commit();
- }catch (Exception $e){
- Db::rollback();
- $this->error = $e->getMessage();
- return false;
- }
- return true;
- }
- public function saveData($data){
- $data['create_time'] = date('Y-m-d H:i:s');
- $data['user_id'] = is_login();
- $data['sn'] = get_unique_id();
- $ret = $this->allowField(true)->save($data);
- if(!$ret){
- $this->error = '操作失败';
- return false;
- }
- return $this->getLastInsID();
- }
- public function getInfo($id){
- $info = $this
- ->where('id',$id)
- ->find()
- ->toArray();
- if(!$info){
- return false;
- }
- $info['userName'] = Db::name('user')
- ->where('id',$info['user_id'])
- ->value('real_name');
- $info['goods'] = Db::name('mate_apply_goods')
- ->alias('a')
- ->join('mate_goods c','c.id=a.goods_id')
- ->where('a.apply_id',$info['id'])
- ->field('a.*,c.title,c.unit,c.brand,c.spec')
- ->select();
- return $info;
- }
- }
|