Browse Source

fix:订单档案信息

super-yimizi 3 weeks ago
parent
commit
016240d49c

+ 30 - 1
application/admin/controller/shop/Order.php

@@ -10,6 +10,7 @@ use app\common\Enum\ChannelEnum;
 use app\common\Enum\OrderActionEnum;
 use app\common\Service\Order\OrderActionService;
 use app\common\Service\Pay\PayService;
+use app\common\library\KdApiExpOrder;
 
 /**
  * 订单管理
@@ -173,7 +174,7 @@ class Order extends Backend
             $this->error('参数错误');
         }
         
-        // 查询订单信息,包括关联的用户、商品、操作记录、收货地址
+        // 查询订单信息,包括关联的用户、商品、操作记录、收货地址、档案信息
         $row = $this->model
             ->field('o.*,sum(s.refund) refund')
             ->with([
@@ -185,6 +186,9 @@ class Order extends Backend
                 },
                 'OrderAddress' => function($query) {
                     $query->field('*');
+                },
+                'OrderProfile' => function($query) {
+                    $query->field('*');
                 }
             ])
             ->where('o.id', $id)
@@ -237,6 +241,31 @@ class Order extends Backend
         //  查询支付信息
         $payInfo = PayService::getPayInfo($rowData['id']);
         $rowData['pay_info'] = $payInfo;
+        
+        // 处理档案信息
+        // echo "<pre>";
+        // print_r($rowData);
+        // die();
+        if (!empty($rowData['order_profile'])) {
+            $profile = $rowData['order_profile'];
+            // // 处理体型选择数据
+            // if (!empty($profile['body_types'])) {
+            //     $bodyTypes = json_decode($profile['body_types'], true);
+            //     $profile['body_types_formatted'] = is_array($bodyTypes) ? $bodyTypes : [];
+            // }
+            // // 处理AI报告内容
+            // if (!empty($profile['ai_report_content'])) {
+            //     $aiReportContent = json_decode($profile['ai_report_content'], true);
+            //     $profile['ai_report_content_formatted'] = is_array($aiReportContent) ? $aiReportContent : [];
+            // }
+            // // 处理身体照片
+            // if (!empty($profile['body_photos'])) {
+            //     $bodyPhotos = json_decode($profile['body_photos'], true);
+            //     $profile['body_photos_formatted'] = is_array($bodyPhotos) ? $bodyPhotos : [];
+            // }
+            $rowData['order_profile'] = $profile;
+        }
+        
         $config = get_addon_config('shop');
         $this->assignconfig('shop', $config);
 

+ 5 - 0
application/admin/model/shop/Order.php

@@ -229,4 +229,9 @@ class Order extends Model
     {
         return $this->hasMany('OrderAction', 'order_sn', 'order_sn');
     }
+
+    public function OrderProfile()
+    {
+        return $this->hasOne('\\app\\common\\model\\OrderProfile', 'order_id', 'id', [], 'LEFT');
+    }
 }

+ 132 - 0
application/admin/view/shop/order/detail.html

@@ -240,6 +240,138 @@
     </div>
     {/if}
     
+    <!-- 档案信息 -->
+    {if !empty($row.order_profile)}
+    <div class="panel panel-default">
+        <div class="panel-heading">
+            <span>档案信息</span>
+        </div>
+        <div class="panel-body">
+            <div class="row">
+                <div class="col-xs-6">
+                    <ul class="list-group">
+                        <li class="list-group-item">档案名称:{$row.order_profile.profile_name|default='未填写'}</li>
+                        <li class="list-group-item">关系:{$row.order_profile.relation_text|default='未知'}</li>
+                        <li class="list-group-item">性别:{$row.order_profile.gender_text|default='未知'}</li>
+                        <li class="list-group-item">年龄:{$row.order_profile.age|default='0'}岁</li>
+                        <li class="list-group-item">身高:{$row.order_profile.height|default='0'}cm</li>
+                        <li class="list-group-item">体重:{$row.order_profile.weight|default='0'}kg</li>
+                        <li class="list-group-item">BMI:{$row.order_profile.bmi|default='0'} ({$row.order_profile.bmi_level_text|default='未知'})</li>
+                        <li class="list-group-item">是否本人:{if $row.order_profile.is_own == 1}是{else/}否{/if}</li>
+                    </ul>
+                </div>
+                <div class="col-xs-6">
+                    <ul class="list-group">
+                        {if !empty($row.order_profile.profile_photo)}
+                        <li class="list-group-item">
+                            <div>档案照片:</div>
+                            <div style="margin-top:10px;">
+                                <img src="{$row.order_profile.profile_photo}" style="max-width:150px;max-height:150px;border-radius:8px;" alt="档案照片">
+                            </div>
+                        </li>
+                        {/if}
+                        {if !empty($row.order_profile.body_photos_formatted)}
+                        <li class="list-group-item">
+                            <div>身体照片:</div>
+                            <div style="margin-top:10px;display:flex;flex-wrap:wrap;gap:10px;">
+                                {foreach name="row.order_profile.body_photos_formatted" item="photo"}
+                                <img src="{$photo}" style="max-width:100px;max-height:100px;border-radius:8px;" alt="身体照片">
+                                {/foreach}
+                            </div>
+                        </li>
+                        {/if}
+                    </ul>
+                </div>
+            </div>
+            
+            <!-- 测量数据 -->
+            {if !empty($row.order_profile.measurement_id)}
+            <div class="row" style="margin-top:20px;">
+                <div class="col-xs-12">
+                    <h5 style="margin-bottom:15px;font-weight:bold;color:#333;">测量数据</h5>
+                    <div class="row">
+                        <div class="col-xs-4">
+                            <ul class="list-group">
+                                <li class="list-group-item">胸围:{$row.order_profile.chest|default='0'}cm</li>
+                                <li class="list-group-item">腰围:{$row.order_profile.waist|default='0'}cm</li>
+                                <li class="list-group-item">臀围:{$row.order_profile.hip|default='0'}cm</li>
+                                <li class="list-group-item">大腿围:{$row.order_profile.thigh|default='0'}cm</li>
+                                <li class="list-group-item">小腿围:{$row.order_profile.calf|default='0'}cm</li>
+                            </ul>
+                        </div>
+                        <div class="col-xs-4">
+                            <ul class="list-group">
+                                <li class="list-group-item">上臂围:{$row.order_profile.upper_arm|default='0'}cm</li>
+                                <li class="list-group-item">前臂围:{$row.order_profile.forearm|default='0'}cm</li>
+                                <li class="list-group-item">颈围:{$row.order_profile.neck|default='0'}cm</li>
+                                <li class="list-group-item">肩宽:{$row.order_profile.shoulder_width|default='0'}cm</li>
+                                <li class="list-group-item">胸围(女):{$row.order_profile.bust|default='0'}cm</li>
+                            </ul>
+                        </div>
+                        <div class="col-xs-4">
+                            <ul class="list-group">
+                                <li class="list-group-item">下胸围:{$row.order_profile.underbust|default='0'}cm</li>
+                                <li class="list-group-item">内缝长:{$row.order_profile.inseam|default='0'}cm</li>
+                                <li class="list-group-item">外缝长:{$row.order_profile.outseam|default='0'}cm</li>
+                                <li class="list-group-item">膝围:{$row.order_profile.knee|default='0'}cm</li>
+                                <li class="list-group-item">手腕围:{$row.order_profile.wrist|default='0'}cm</li>
+                            </ul>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            {/if}
+            
+            <!-- 体型选择 -->
+            {if !empty($row.order_profile.body_types)}
+            <div class="row" style="margin-top:20px;">
+                <div class="col-xs-12">
+                    <h5 style="margin-bottom:15px;font-weight:bold;color:#333;">体型选择</h5>
+                    <div style="display:flex;flex-wrap:wrap;gap:15px;">
+                        {foreach name="row.order_profile.body_types" key="category" item="bodyType"}
+                        <div style="display:flex;flex-direction:column;align-items:center;padding:10px;border:1px solid #ddd;border-radius:8px;background-color:#f9f9f9;min-width:120px;">
+                            {if !empty($bodyType.type_image)}
+                            <img src="{$bodyType.type_image}" style="width:60px;height:60px;object-fit:cover;border-radius:6px;margin-bottom:8px;" alt="{$bodyType.type_name|default=''}">
+                            {/if}
+                            <div style="text-align:center;">
+                                <div style="font-size:12px;color:#666;margin-bottom:2px;">{$category|default=''}</div>
+                                <div style="font-size:14px;font-weight:bold;color:#333;">{$bodyType.type_name|default=''}</div>
+                            </div>
+                        </div>
+                        {/foreach}
+                    </div>
+                </div>
+            </div>
+            {/if}
+            
+            <!-- AI报告 -->
+            {if !empty($row.order_profile.ai_report_content_formatted)}
+            <div class="row" style="margin-top:20px;">
+                <div class="col-xs-12">
+                    <h5 style="margin-bottom:15px;font-weight:bold;color:#333;">AI分析报告</h5>
+                    <div class="panel panel-default">
+                        <div class="panel-body" style="background-color:#f9f9f9;">
+                            <p><strong>报告类型:</strong>{$row.order_profile.ai_report_type|default='未知'}</p>
+                            {if !empty($row.order_profile.ai_report_content_formatted.summary)}
+                            <p><strong>分析摘要:</strong>{$row.order_profile.ai_report_content_formatted.summary}</p>
+                            {/if}
+                            {if !empty($row.order_profile.ai_report_content_formatted.recommendations)}
+                            <p><strong>建议:</strong></p>
+                            <ul>
+                                {foreach name="row.order_profile.ai_report_content_formatted.recommendations" item="recommendation"}
+                                <li>{$recommendation}</li>
+                                {/foreach}
+                            </ul>
+                            {/if}
+                        </div>
+                    </div>
+                </div>
+            </div>
+            {/if}
+        </div>
+    </div>
+    {/if}
+    
     <!--  -->
     <div class="panel panel-default">
         <div class="panel-heading print-flex">