|
@@ -35,6 +35,8 @@ class Userdecorate extends Api
|
|
|
* 购买并加入我的背包
|
|
|
*/
|
|
|
public function buy_one() {
|
|
|
+ $this->apiLimit();
|
|
|
+
|
|
|
$did = input_post('did',''); //装扮ID
|
|
|
if (!$did) {
|
|
|
$this->error();
|
|
@@ -54,22 +56,44 @@ class Userdecorate extends Api
|
|
|
Db::startTrans();
|
|
|
|
|
|
// 添加到背包
|
|
|
- $data = [
|
|
|
- 'user_id' => $this->auth->id,
|
|
|
- 'decorate_id' => $decorate['id'],
|
|
|
- 'decorate_type' => $decorate['type'],
|
|
|
- 'is_using' => 0,
|
|
|
- 'end_time' => time() + ($decorate['days'] * 86400),
|
|
|
- 'createtime' => time(),
|
|
|
- 'updatetime' => time(),
|
|
|
- ];
|
|
|
-
|
|
|
- $log_id = Db::name('user_decorate')->insertGetId($data);
|
|
|
- if(!$log_id){
|
|
|
- Db::rollback();
|
|
|
- $this->error('购买失败');
|
|
|
+ $check = Db::name('user_decorate')->where('user_id',$this->auth->id)->where('decorate_id',$decorate['id'])->order('id desc')->lock(true)->find();
|
|
|
+ if(!$check){
|
|
|
+ $data = [
|
|
|
+ 'user_id' => $this->auth->id,
|
|
|
+ 'decorate_id' => $decorate['id'],
|
|
|
+ 'decorate_type' => $decorate['type'],
|
|
|
+ 'is_using' => 0,
|
|
|
+ 'end_time' => time() + (intval($decorate['days']) * 86400),
|
|
|
+ 'createtime' => time(),
|
|
|
+ 'updatetime' => time(),
|
|
|
+ ];
|
|
|
+
|
|
|
+ $log_id = Db::name('user_decorate')->insertGetId($data);
|
|
|
+ if(!$log_id){
|
|
|
+ Db::rollback();
|
|
|
+ $this->error('购买失败');
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ $update = [
|
|
|
+ 'updatetime' => time(),
|
|
|
+ ];
|
|
|
+
|
|
|
+ if($check['endtime'] < time()){
|
|
|
+ //过期了
|
|
|
+ $update['endtime'] = time() + (intval($decorate['days']) * 86400);
|
|
|
+ }else{
|
|
|
+ //追加日期
|
|
|
+ $update['endtime'] = $check['endtime'] + (intval($decorate['days']) * 86400);
|
|
|
+ }
|
|
|
+
|
|
|
+ $rs_update = Db::name('user_decorate')->where('id',$check['id'])->update($update);
|
|
|
+ if($rs_update === false){
|
|
|
+ Db::rollback();
|
|
|
+ $this->error('购买失败');
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
+ //扣钱
|
|
|
$rs = model('wallet')->lockChangeAccountRemain($this->auth->id,'gold',-$decorate['price'],31,'购买装扮','user_decorate',$log_id);
|
|
|
if($rs['status'] === false){
|
|
|
Db::rollback();
|