|
|
@@ -51,10 +51,13 @@ class GroupActivityLogic extends BaseLogic
|
|
|
/**
|
|
|
* @notes 拼团订单详情
|
|
|
*/
|
|
|
- public static function orderDetail($sn,$url){
|
|
|
- $detail = GroupOrder::where(['sn'=>$sn])->findOrEmpty()->toArray();
|
|
|
+ public static function orderDetail($sn,$order_id,$url){
|
|
|
+ if (empty($sn) && empty($order_id)) {
|
|
|
+ return [];
|
|
|
+ }
|
|
|
+ $where = $sn ? ['sn'=>$sn] : ['id'=>$order_id];
|
|
|
+ $detail = GroupOrder::where($where)->findOrEmpty()->toArray();
|
|
|
if(!empty($detail)){
|
|
|
-
|
|
|
$detail['activity'] = GroupActivity::with('goods')->where(['id'=>$detail['group_activity_id']])->visible([
|
|
|
'id','title','image','start_time','end_time','type','equity_id',
|
|
|
'participant_num','origin_price','price','form_time_limit'
|
|
|
@@ -138,63 +141,67 @@ class GroupActivityLogic extends BaseLogic
|
|
|
|
|
|
//校验拼团活动
|
|
|
if (empty($params['sn'])) {
|
|
|
+ //新开团
|
|
|
+ $activity = GroupActivity::findOrEmpty($params['group_activity_id']); //活动详情
|
|
|
+ if ($activity->isEmpty()) {
|
|
|
+ throw new Exception('拼团活动不存在!'); //拼团活动不存在
|
|
|
+ }
|
|
|
+ //校验活动时间
|
|
|
+ if (time() < strtotime($activity['start_time'])) {
|
|
|
+ throw new Exception('拼团活动未开始!'); //拼团活动未开始
|
|
|
+ }
|
|
|
+ if (time() > $activity['end_time']) {
|
|
|
+ throw new Exception('拼团活动已结束!'); //拼团活动已结束
|
|
|
+ }
|
|
|
+
|
|
|
+ $order_amount = explode(",",$activity['price'])[0];
|
|
|
+ //生成拼团单
|
|
|
+ $data = [
|
|
|
+ 'sn' => generate_sn(GroupOrder::class, 'sn'),
|
|
|
+ 'group_activity_id' => $params['group_activity_id'],
|
|
|
+ 'equity_id' => $activity['equity_id'],
|
|
|
+ 'goods_id' => EquityConfig::where('id', $activity['equity_id'])->value('goods_id'),
|
|
|
+ 'user_id' => $params['user_id'],
|
|
|
+ 'origin_price' => $activity['origin_price'],
|
|
|
+ 'price' => $order_amount,
|
|
|
+ 'create_time' => time(),
|
|
|
+ 'end_time' => time() + $activity['form_time_limit'] * 60 * 60,
|
|
|
+ ];
|
|
|
|
|
|
- //如果已有团单,直接加入
|
|
|
+ //如果已有数据,直接覆盖
|
|
|
$groupOrder = GroupOrder::where(['group_activity_id' => $params['group_activity_id'],'user_id' => $params['user_id']])->findOrEmpty()->toArray();
|
|
|
if (!$groupOrder) {
|
|
|
- //新开团
|
|
|
- $activity = GroupActivity::findOrEmpty($params['group_activity_id']); //活动详情
|
|
|
- if ($activity->isEmpty()) {
|
|
|
- throw new Exception('拼团活动不存在!'); //拼团活动不存在
|
|
|
- }
|
|
|
- //校验活动时间
|
|
|
- if (time() < strtotime($activity['start_time'])) {
|
|
|
- throw new Exception('拼团活动未开始!'); //拼团活动未开始
|
|
|
- }
|
|
|
- if (time() > $activity['end_time']) {
|
|
|
- throw new Exception('拼团活动已结束!'); //拼团活动已结束
|
|
|
- }
|
|
|
-
|
|
|
- $order_amount = explode(",",$activity['price'])[0];
|
|
|
- //生成拼团单
|
|
|
- $data = [
|
|
|
- 'sn' => generate_sn(GroupOrder::class, 'sn'),
|
|
|
- 'group_activity_id' => $params['group_activity_id'],
|
|
|
- 'equity_id' => $activity['equity_id'],
|
|
|
- 'goods_id' => EquityConfig::where('id', $activity['equity_id'])->value('goods_id'),
|
|
|
- 'user_id' => $params['user_id'],
|
|
|
- 'origin_price' => $activity['origin_price'],
|
|
|
- 'price' => $order_amount,
|
|
|
- 'create_time' => time(),
|
|
|
- 'end_time' => time() + $activity['form_time_limit'] * 60 * 60,
|
|
|
- ];
|
|
|
- $group_order = GroupOrder::create($data);
|
|
|
+ $groupOrder = GroupOrder::create($data);
|
|
|
+ } else {
|
|
|
+ GroupOrder::where('id',$groupOrder['id'])->update($data);
|
|
|
+ $data['id'] = $groupOrder['id'];
|
|
|
+ $groupOrder = $data;
|
|
|
}
|
|
|
} else {
|
|
|
//加入已开的拼团单
|
|
|
- $group_order = GroupOrder::where(['group_activity_id' => $params['group_activity_id'], 'sn' => $params['sn']])->findOrEmpty()->toArray();
|
|
|
- if (empty($group_order)) {
|
|
|
+ $groupOrder = GroupOrder::where(['group_activity_id' => $params['group_activity_id'], 'sn' => $params['sn']])->findOrEmpty()->toArray();
|
|
|
+ if (empty($groupOrder)) {
|
|
|
throw new Exception('拼团订单不存在!'); //拼团活动不存在
|
|
|
}
|
|
|
- if ($group_order['num'] >= 100) {
|
|
|
+ if ($groupOrder['num'] >= 100) {
|
|
|
throw new Exception('拼团人数已满!'); //拼团人数已满
|
|
|
}
|
|
|
- if ($group_order['status'] == 1 ) {
|
|
|
+ if ($groupOrder['status'] == 1 ) {
|
|
|
throw new Exception('活动已成团');
|
|
|
}
|
|
|
- if ($group_order['status'] >= 1 ) {
|
|
|
+ if ($groupOrder['status'] >= 1 ) {
|
|
|
throw new Exception('拼团已取消!');
|
|
|
}
|
|
|
- if ($group_order['end_time'] < time()) {
|
|
|
+ if ($groupOrder['end_time'] < time()) {
|
|
|
throw new Exception('拼团活动已结束!'); //拼团活动已结束
|
|
|
}
|
|
|
- $order_amount = $group_order['price'];
|
|
|
+ $order_amount = $groupOrder['price'];
|
|
|
}
|
|
|
|
|
|
//生成用户拼单订单
|
|
|
$data = [
|
|
|
- 'sn' => $group_order['sn'],
|
|
|
- 'group_order_id' => $group_order['id'],
|
|
|
+ 'sn' => $groupOrder['sn'],
|
|
|
+ 'group_order_id' => $groupOrder['id'],
|
|
|
'group_activity_id' => $params['group_activity_id'],
|
|
|
'user_id' => $params['user_id'],
|
|
|
'remark' => isset($params['remark']) ?? '',
|
|
|
@@ -217,7 +224,7 @@ class GroupActivityLogic extends BaseLogic
|
|
|
|
|
|
return [
|
|
|
'order_id' => (int)$userOrder['id'],
|
|
|
- 'sn' => $group_order['sn']
|
|
|
+ 'sn' => $groupOrder['sn']
|
|
|
];
|
|
|
}
|
|
|
|
|
|
@@ -359,7 +366,7 @@ class GroupActivityLogic extends BaseLogic
|
|
|
|
|
|
$scene_page = 'group';
|
|
|
$response = (new WeChatMnpService())->getUnlimitedQRCode(
|
|
|
- 'page='.$scene_page.'&id='.$params['id'].'&sn='.$params['sn'],
|
|
|
+ 'page='.$scene_page.'&id='.$params['id'].'&order_id='.$params['order_id'],
|
|
|
$mnp_page,
|
|
|
env('miniprogram.mini_env_version', 'release'),
|
|
|
false
|