licailing 4 rokov pred
rodič
commit
256a22753e

+ 82 - 0
src/main/java/com/izouma/jiashanxia/dto/OrderInfoDTO.java

@@ -0,0 +1,82 @@
+package com.izouma.jiashanxia.dto;
+
+import com.izouma.jiashanxia.annotations.Searchable;
+import com.izouma.jiashanxia.domain.BaseEntity;
+import com.izouma.jiashanxia.domain.User;
+import com.izouma.jiashanxia.enums.OrderInfoStatus;
+import com.izouma.jiashanxia.enums.PayMethod;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.hibernate.annotations.NotFound;
+import org.hibernate.annotations.NotFoundAction;
+import org.hibernate.annotations.Where;
+
+import javax.persistence.*;
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+@ApiModel(value = "订单")
+public class OrderInfoDTO {
+    private Long          id;
+    private LocalDateTime createdAt;
+
+    private Long   userId;
+    private String nickname;
+
+    @ApiModelProperty(value = "支付方式")
+    private PayMethod payMethod;
+
+    @ApiModelProperty(value = "支付时间")
+    private LocalDateTime paidAt;
+
+    @ApiModelProperty(value = "订单状态")
+    private OrderInfoStatus status;
+
+    @ApiModelProperty(value = "数量")
+    private Integer num;
+
+    @ApiModelProperty(value = "订单号")
+    private String orderNumber;
+
+    @ApiModelProperty(value = "交易单号")
+    private String transactionId;
+
+    @ApiModelProperty(value = "充值套餐")
+    private Long   packageId;
+    private String packName;
+    private String packImg;
+
+    @ApiModelProperty(value = "价钱")
+    private BigDecimal price;
+
+    @ApiModelProperty(value = "分享此链接的用户")
+    private Long   parentUserId;
+    private String parentNickname;
+
+    @ApiModelProperty(value = "规格")
+    private String specification;
+
+    @ApiModelProperty(value = "日期")
+    private LocalDate day;
+
+    @ApiModelProperty(value = "真实姓名")
+    private String realName;
+
+    @ApiModelProperty(value = "身份证")
+    private String IDNo;
+
+    @ApiModelProperty(value = "购买手机")
+    private String buyPhone;
+
+    @ApiModelProperty(value = "备注")
+    private String remark;
+}

+ 13 - 0
src/main/java/com/izouma/jiashanxia/service/OrderInfoService.java

@@ -702,4 +702,17 @@ public class OrderInfoService {
         });
         });
     }
     }
 
 
+    public OrderInfoDTO toDTO(OrderInfo orderInfo) {
+        OrderInfoDTO dto = new OrderInfoDTO();
+        BeanUtil.copyProperties(orderInfo, dto);
+        dto.setNickname(orderInfo.getUser().getNickname());
+        if (ObjectUtil.isNotNull(orderInfo.getParentUserId())) {
+            userRepo.findById(orderInfo.getParentUserId()).ifPresent(user -> dto.setParentNickname(user.getNickname()));
+        }
+        packageRepo.findById(orderInfo.getPackageId()).ifPresent(aPackage -> {
+            dto.setPackName(aPackage.getName());
+            dto.setPackImg(aPackage.getImg().get(0));
+        });
+        return dto;
+    }
 }
 }

+ 8 - 3
src/main/java/com/izouma/jiashanxia/service/UserPackageFlowService.java

@@ -166,15 +166,17 @@ public class UserPackageFlowService {
     核销
     核销
     */
     */
     public UserPackageFlow writeOff1(WriteOffSaveVO writeOffSaveVO) {
     public UserPackageFlow writeOff1(WriteOffSaveVO writeOffSaveVO) {
-        if (writeOffSaveVO.getUserId().equals(writeOffSaveVO.getWriteOffUserId())) {
-            throw new BusinessException("不可自己核销自己");
-        }
         Long orderInfoId = writeOffSaveVO.getOrderInfoId();
         Long orderInfoId = writeOffSaveVO.getOrderInfoId();
 
 
         // 核销订单类的
         // 核销订单类的
         if (ObjectUtil.isNotEmpty(orderInfoId)) {
         if (ObjectUtil.isNotEmpty(orderInfoId)) {
             OrderInfo orderInfo = orderInfoRepo.findById(orderInfoId)
             OrderInfo orderInfo = orderInfoRepo.findById(orderInfoId)
                     .orElseThrow(new BusinessException("无订单"));
                     .orElseThrow(new BusinessException("无订单"));
+
+            if (orderInfo.getUserId().equals(writeOffSaveVO.getWriteOffUserId())) {
+                throw new BusinessException("不可自己核销自己");
+            }
+
 //            if (orderInfo.isUse()) {
 //            if (orderInfo.isUse()) {
             if (OrderInfoStatus.USED.equals(orderInfo.getStatus())) {
             if (OrderInfoStatus.USED.equals(orderInfo.getStatus())) {
                 throw new BusinessException("已核销");
                 throw new BusinessException("已核销");
@@ -197,6 +199,9 @@ public class UserPackageFlowService {
                             .build());
                             .build());
         }
         }
         // 余额类的
         // 余额类的
+        if (writeOffSaveVO.getUserId().equals(writeOffSaveVO.getWriteOffUserId())) {
+            throw new BusinessException("不可自己核销自己");
+        }
         return this.writeOff(writeOffSaveVO);
         return this.writeOff(writeOffSaveVO);
     }
     }
 
 

+ 6 - 0
src/main/java/com/izouma/jiashanxia/web/OrderInfoController.java

@@ -3,6 +3,7 @@ package com.izouma.jiashanxia.web;
 import com.izouma.jiashanxia.converter.LongArrayConverter;
 import com.izouma.jiashanxia.converter.LongArrayConverter;
 import com.izouma.jiashanxia.domain.OrderInfo;
 import com.izouma.jiashanxia.domain.OrderInfo;
 import com.izouma.jiashanxia.dto.CreateOrder;
 import com.izouma.jiashanxia.dto.CreateOrder;
+import com.izouma.jiashanxia.dto.OrderInfoDTO;
 import com.izouma.jiashanxia.dto.OrderInfoVO;
 import com.izouma.jiashanxia.dto.OrderInfoVO;
 import com.izouma.jiashanxia.enums.OrderInfoStatus;
 import com.izouma.jiashanxia.enums.OrderInfoStatus;
 import com.izouma.jiashanxia.enums.PayMethod;
 import com.izouma.jiashanxia.enums.PayMethod;
@@ -60,6 +61,11 @@ public class OrderInfoController extends BaseController {
         return orderInfoRepo.findById(id).orElseThrow(new BusinessException("无记录"));
         return orderInfoRepo.findById(id).orElseThrow(new BusinessException("无记录"));
     }
     }
 
 
+    @GetMapping("/getDTO/{id}")
+    public OrderInfoDTO getDTO(@PathVariable Long id) {
+        return orderInfoService.toDTO(orderInfoRepo.findById(id).orElseThrow(new BusinessException("无记录")));
+    }
+
     @PostMapping("/del/{id}")
     @PostMapping("/del/{id}")
     public void del(@PathVariable Long id) {
     public void del(@PathVariable Long id) {
         orderInfoRepo.softDelete(id);
         orderInfoRepo.softDelete(id);

+ 84 - 22
src/main/vue/src/views/OrderInfoEdit.vue

@@ -4,51 +4,94 @@
             :model="formData"
             :model="formData"
             :rules="rules"
             :rules="rules"
             ref="form"
             ref="form"
-            label-width="80px"
+            label-width="90px"
             label-position="right"
             label-position="right"
             size="small"
             size="small"
-            style="max-width: 500px;"
+            style="max-width: 520px;"
         >
         >
-            <el-form-item prop="userId" label="昵称">
-                <el-input v-model="user.nickname"></el-input>
+            <el-form-item prop="userId" label="购买用户">
+                <el-input v-model="formData.nickname" readonly></el-input>
+            </el-form-item>
+            <el-form-item prop="parentNickname" label="分享用户">
+                <el-input v-model="formData.parentNickname" readonly></el-input>
+            </el-form-item>
+            <el-divider direction="horizontal" content-position="left">订单信息</el-divider>
+            <el-form-item prop="name" label="商品">
+                <!-- <el-input v-model="formData.name"></el-input> -->
+                <div class="spec">
+                    <div style="float: left; width: 100px">
+                        <img :src="formData.packImg" style="width:100px; height:100px" />
+                    </div>
+                    <div style="float: right; width: 270px">
+                        <p>{{ formData.packName }}</p>
+                        <p>
+                            <span v-if="formData.specification">规格: {{ formData.specification }}</span>
+                            <span v-if="formData.day"> 日期: {{ formData.day }}</span>
+                        </p>
+                        <p>数量: x{{ formData.num }}</p>
+                        <!-- <p>价格: {{ formData.price }}</p> -->
+                    </div>
+                </div>
+            </el-form-item>
+            <el-form-item prop="price" label="价格">
+                <el-input v-model="formData.price" style="width: 60%" readonly></el-input>
+            </el-form-item>
+            <el-form-item prop="status" label="订单状态">
+                <el-select v-model="formData.status" placeholder="请选择" style="width: 60%">
+                    <el-option
+                        v-for="item in statusOptions"
+                        :key="item.value"
+                        :label="item.label"
+                        :value="item.value"
+                        disabled
+                    >
+                    </el-option>
+                </el-select>
+            </el-form-item>
+            <el-form-item prop="createdAt" label="下单时间">
+                <el-input v-model="formData.createdAt" readonly style="width: 60%"></el-input>
             </el-form-item>
             </el-form-item>
             <el-form-item prop="payMethod" label="支付方式">
             <el-form-item prop="payMethod" label="支付方式">
-                <el-select v-model="formData.payMethod" clearable filterable placeholder="请选择">
+                <el-select v-model="formData.payMethod" placeholder="请选择" style="width: 60%">
                     <el-option
                     <el-option
                         v-for="item in payMethodOptions"
                         v-for="item in payMethodOptions"
                         :key="item.value"
                         :key="item.value"
                         :label="item.label"
                         :label="item.label"
                         :value="item.value"
                         :value="item.value"
+                        disabled
                     >
                     >
                     </el-option>
                     </el-option>
                 </el-select>
                 </el-select>
             </el-form-item>
             </el-form-item>
             <el-form-item prop="paidAt" label="支付时间">
             <el-form-item prop="paidAt" label="支付时间">
-                <el-date-picker
+                <!-- <el-date-picker
                     v-model="formData.paidAt"
                     v-model="formData.paidAt"
                     type="datetime"
                     type="datetime"
                     value-format="yyyy-MM-dd HH:mm:ss"
                     value-format="yyyy-MM-dd HH:mm:ss"
                     placeholder="选择日期时间"
                     placeholder="选择日期时间"
+                    disabled
                 >
                 >
-                </el-date-picker>
-            </el-form-item>
-            <el-form-item prop="status" label="订单状态">
-                <el-select v-model="formData.status" clearable filterable placeholder="请选择">
-                    <el-option v-for="item in statusOptions" :key="item.value" :label="item.label" :value="item.value">
-                    </el-option>
-                </el-select>
+                </el-date-picker> -->
+                <el-input v-model="formData.paidAt" readonly style="width: 60%"></el-input>
             </el-form-item>
             </el-form-item>
             <el-form-item prop="transactionId" label="订单号">
             <el-form-item prop="transactionId" label="订单号">
-                <el-input v-model="formData.transactionId"></el-input>
+                <el-input v-model="formData.transactionId" readonly></el-input>
             </el-form-item>
             </el-form-item>
-            <el-form-item prop="name" label="名称">
-                <el-input v-model="formData.name"></el-input>
+            <el-form-item prop="remark" label="备注">
+                <el-input type="textarea" v-model="formData.remark" readonly></el-input>
+            </el-form-item>
+            <el-divider direction="horizontal" content-position="left">真实信息</el-divider>
+            <el-form-item prop="realName" label="姓名">
+                <el-input v-model="formData.realName" readonly></el-input>
+            </el-form-item>
+            <el-form-item prop="idno" label="身份证号">
+                <el-input v-model="formData.idno" readonly></el-input>
+            </el-form-item>
+            <el-form-item prop="buyPhone" label="电话">
+                <el-input v-model="formData.buyPhone" readonly></el-input>
             </el-form-item>
             </el-form-item>
-            <!--<el-form-item prop="setId" label="充值套餐">
-                <el-input v-model="formData.setId"></el-input>
-            </el-form-item>-->
             <el-form-item>
             <el-form-item>
-                <el-button @click="onSave" :loading="saving" type="primary">保存</el-button>
+                <!-- <el-button @click="onSave" :loading="saving" type="primary">保存</el-button> -->
                 <el-button @click="onDelete" :loading="saving" type="danger" v-if="formData.id">删除 </el-button>
                 <el-button @click="onDelete" :loading="saving" type="danger" v-if="formData.id">删除 </el-button>
                 <el-button @click="$router.go(-1)">取消</el-button>
                 <el-button @click="$router.go(-1)">取消</el-button>
             </el-form-item>
             </el-form-item>
@@ -61,7 +104,7 @@ export default {
     created() {
     created() {
         if (this.$route.query.id) {
         if (this.$route.query.id) {
             this.$http
             this.$http
-                .get('orderInfo/get/' + this.$route.query.id)
+                .get('orderInfo/getDTO/' + this.$route.query.id)
                 .then(res => {
                 .then(res => {
                     this.formData = res;
                     this.formData = res;
                     if (res.user != null) {
                     if (res.user != null) {
@@ -153,4 +196,23 @@ export default {
     }
     }
 };
 };
 </script>
 </script>
-<style lang="less" scoped></style>
+<style lang="less" scoped>
+.spec {
+    background-color: #f7f7f7;
+    padding: 20px 20px 15px 20px;
+    height: 110px;
+    span {
+        font-size: 13px;
+        color: #565b66;
+        // line-height: 12px;
+        // padding: 0 10px 0 10px;
+        // margin-left: 10px;
+    }
+    p {
+        padding-top: 0;
+        font-size: 13px;
+        line-height: 13px;
+        color: #565b66;
+    }
+}
+</style>

+ 1 - 1
src/main/vue/src/views/OrderInfoList.vue

@@ -71,7 +71,7 @@
             <!--<el-table-column prop="setId" label="充值套餐"> </el-table-column>-->
             <!--<el-table-column prop="setId" label="充值套餐"> </el-table-column>-->
             <el-table-column label="操作" align="center" fixed="right" min-width="150">
             <el-table-column label="操作" align="center" fixed="right" min-width="150">
                 <template slot-scope="{ row }">
                 <template slot-scope="{ row }">
-                    <!-- <el-button @click="editRow(row)" type="primary" size="mini" plain>编辑</el-button> -->
+                    <el-button @click="editRow(row)" type="primary" size="mini" plain>详情</el-button>
                     <el-button @click="deleteRow(row)" type="danger" size="mini" plain>删除</el-button>
                     <el-button @click="deleteRow(row)" type="danger" size="mini" plain>删除</el-button>
                 </template>
                 </template>
             </el-table-column>
             </el-table-column>