Преглед на файлове

Merge branch 'refs/heads/master' into develop_rayson

rayson преди 9 месеца
родител
ревизия
6934b74699
променени са 34 файла, в които са добавени 1308 реда и са изтрити 4 реда
  1. 2 1
      citu-module-mall/citu-module-promotion-biz/src/main/java/com/citu/module/promotion/framework/rpc/config/RpcConfiguration.java
  2. 1 1
      citu-module-mall/citu-module-trade-biz/src/main/java/com/citu/module/trade/service/price/calculator/TradeCouponPriceCalculator.java
  3. 15 0
      citu-module-member/citu-module-member-api/src/main/java/com/citu/module/member/enums/ErrorCodeConstants.java
  4. 6 0
      citu-module-member/citu-module-member-biz/pom.xml
  5. 106 0
      citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/controller/admin/invoice/AdminInvoiceListController.java
  6. 46 0
      citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/controller/admin/invoice/vo/AdminInvoiceListPageReqVO.java
  7. 43 0
      citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/controller/admin/invoice/vo/InvoiceStatusUpdateReqVo.java
  8. 85 0
      citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/controller/app/invoice/AppInvoiceListController.java
  9. 93 0
      citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/controller/app/invoice/InvoiceTitleController.java
  10. 43 0
      citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/controller/app/invoice/vo/InvoiceListPageReqVO.java
  11. 56 0
      citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/controller/app/invoice/vo/InvoiceListRespVO.java
  12. 40 0
      citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/controller/app/invoice/vo/InvoiceListSaveReqVO.java
  13. 40 0
      citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/controller/app/invoice/vo/InvoiceTitlePageReqVO.java
  14. 48 0
      citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/controller/app/invoice/vo/InvoiceTitleRespVO.java
  15. 34 0
      citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/controller/app/invoice/vo/InvoiceTitleSaveReqVO.java
  16. 65 0
      citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/dal/dataobject/invoice/InvoiceListDO.java
  17. 55 0
      citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/dal/dataobject/invoice/InvoiceTitleDO.java
  18. 49 0
      citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/dal/mysql/invoice/InvoiceListMapper.java
  19. 32 0
      citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/dal/mysql/invoice/InvoiceTitleMapper.java
  20. 2 1
      citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/framework/rpc/config/RpcConfiguration.java
  21. 62 0
      citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/service/invoice/InvoiceListService.java
  22. 132 0
      citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/service/invoice/InvoiceListServiceImpl.java
  23. 57 0
      citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/service/invoice/InvoiceTitleService.java
  24. 81 0
      citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/service/invoice/InvoiceTitleServiceImpl.java
  25. 6 0
      menduner/menduner-im-api/pom.xml
  26. 20 0
      menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/WuKongMessageController.java
  27. 44 0
      menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/base/wukong/HistoryMessagesReqVo.java
  28. 5 1
      menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/service/UserServiceImpl.java
  29. 3 0
      menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/service/wukong/WuKongMessageService.java
  30. 23 0
      menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/service/wukong/WuKongMessageServiceImpl.java
  31. 3 0
      menduner/menduner-im-biz/src/main/resources/bootstrap.yaml
  32. 6 0
      menduner/menduner-mall-api/pom.xml
  33. 3 0
      menduner/menduner-mall-biz/src/main/resources/bootstrap.yaml
  34. 2 0
      pom.xml

+ 2 - 1
citu-module-mall/citu-module-promotion-biz/src/main/java/com/citu/module/promotion/framework/rpc/config/RpcConfiguration.java

@@ -4,12 +4,13 @@ import com.citu.module.member.api.user.MemberUserApi;
 import com.citu.module.product.api.category.ProductCategoryApi;
 import com.citu.module.product.api.sku.ProductSkuApi;
 import com.citu.module.product.api.spu.ProductSpuApi;
+import com.citu.module.system.api.social.SocialClientApi;
 import com.citu.module.trade.api.order.TradeOrderApi;
 import org.springframework.cloud.openfeign.EnableFeignClients;
 import org.springframework.context.annotation.Configuration;
 
 @Configuration(proxyBeanMethods = false)
-@EnableFeignClients(clients = {ProductSkuApi.class, ProductSpuApi.class, ProductCategoryApi.class,
+@EnableFeignClients(clients = {SocialClientApi.class,ProductSkuApi.class, ProductSpuApi.class, ProductCategoryApi.class,
         MemberUserApi.class, TradeOrderApi.class})
 public class RpcConfiguration {
 }

+ 1 - 1
citu-module-mall/citu-module-trade-biz/src/main/java/com/citu/module/trade/service/price/calculator/TradeCouponPriceCalculator.java

@@ -41,7 +41,7 @@ public class TradeCouponPriceCalculator implements TradePriceCalculator {
     @Override
     public void calculate(TradePriceCalculateReqBO param, TradePriceCalculateRespBO result) {
         // 1.1 校验优惠劵
-        if (param.getCouponId() == null) {
+        if (param.getCouponId() == null  || 0 == param.getCouponId()) {
             return;
         }
         CouponRespDTO coupon = couponApi.validateCoupon(new CouponValidReqDTO()

+ 15 - 0
citu-module-member/citu-module-member-api/src/main/java/com/citu/module/member/enums/ErrorCodeConstants.java

@@ -55,4 +55,19 @@ public interface ErrorCodeConstants {
     ErrorCode GROUP_NOT_EXISTS = new ErrorCode(1_004_012_000, "用户分组不存在");
     ErrorCode GROUP_HAS_USER = new ErrorCode(1_004_012_001, "用户分组下存在用户,无法删除");
 
+
+    ErrorCode INVOICE_TITLE_NOT_EXISTS = new ErrorCode(1_004_013_001, "发票抬头不存在");
+
+
+    ErrorCode INVOICE_LIST_NOT_EXISTS = new ErrorCode(1_004_014_001, "发票不存在");
+
+    ErrorCode INVOICE_LIST_ORDER_NOT_EXISTS = new ErrorCode(1_004_014_002, "待发票的订单不存在");
+
+    ErrorCode INVOICE_EXISTS = new ErrorCode(1_004_014_003, "已经存在开发票的记录!");
+
+    ErrorCode INVOICE_STATUS_ERROR = new ErrorCode(1_004_014_003, "发票已处理,请刷新");
+
+
+
+
 }

+ 6 - 0
citu-module-member/citu-module-member-biz/pom.xml

@@ -35,6 +35,12 @@
             <artifactId>citu-module-member-api</artifactId>
             <version>${revision}</version>
         </dependency>
+        <dependency>
+            <groupId>com.citu</groupId>
+            <artifactId>citu-module-pay-api</artifactId>
+            <version>${revision}</version>
+        </dependency>
+
         <dependency>
             <groupId>com.citu</groupId>
             <artifactId>citu-module-system-api</artifactId>

+ 106 - 0
citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/controller/admin/invoice/AdminInvoiceListController.java

@@ -0,0 +1,106 @@
+package com.citu.module.member.controller.admin.invoice;
+
+import com.citu.framework.apilog.core.annotation.ApiAccessLog;
+import com.citu.framework.apilog.core.enums.OperateTypeEnum;
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.common.pojo.PageParam;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.util.object.BeanUtils;
+import com.citu.framework.excel.core.util.ExcelUtils;
+import com.citu.module.member.controller.admin.invoice.vo.AdminInvoiceListPageReqVO;
+import com.citu.module.member.controller.admin.invoice.vo.InvoiceStatusUpdateReqVo;
+import com.citu.module.member.controller.app.invoice.vo.InvoiceListPageReqVO;
+import com.citu.module.member.controller.app.invoice.vo.InvoiceListRespVO;
+import com.citu.module.member.controller.app.invoice.vo.InvoiceListSaveReqVO;
+import com.citu.module.member.dal.dataobject.invoice.InvoiceListDO;
+import com.citu.module.member.service.invoice.InvoiceListService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+import java.io.IOException;
+import java.util.List;
+
+import static com.citu.framework.common.pojo.CommonResult.success;
+
+
+@Tag(name = " 发票清单")
+@RestController
+@RequestMapping("/member/invoice-list/admin")
+@Validated
+public class AdminInvoiceListController {
+
+    @Resource
+    private InvoiceListService invoiceListService;
+
+//    @PostMapping("/create")
+//    @Operation(summary = "创建发票")
+//    public CommonResult<Long> createInvoiceList(@Valid @RequestBody InvoiceListSaveReqVO createReqVO) {
+//        return success(invoiceListService.createInvoiceList(createReqVO));
+//    }
+
+//    @PutMapping("/update")
+//    @Operation(summary = "更新发票清单")
+//    @PreAuthorize("@ss.hasPermission('member:invoice-list:update')")
+//    public CommonResult<Boolean> updateInvoiceList(@Valid @RequestBody InvoiceListSaveReqVO updateReqVO) {
+//        invoiceListService.updateInvoiceList(updateReqVO);
+//        return success(true);
+//    }
+
+//    @DeleteMapping("/delete")
+//    @Operation(summary = "删除发票清单")
+//    @Parameter(name = "id", description = "编号", required = true)
+//    public CommonResult<Boolean> deleteInvoiceList(@RequestParam("id") String id) {
+//        invoiceListService.deleteInvoiceList(id);
+//        return success(true);
+//    }
+
+
+
+
+//    @GetMapping("/get")
+//    @Operation(summary = "获得发票清单")
+//    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+//    @PreAuthorize("@ss.hasPermission('member:invoice-list:query')")
+//    public CommonResult<InvoiceListRespVO> getInvoiceList(@RequestParam("id") Long id) {
+//        InvoiceListDO invoiceList = invoiceListService.getInvoiceList(id);
+//        return success(BeanUtils.toBean(invoiceList, InvoiceListRespVO.class));
+//    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得发票清单分页")
+    @PreAuthorize("@ss.hasPermission('member:invoice-list:query')")
+    public CommonResult<PageResult<InvoiceListRespVO>> getAdminInvoiceListPage(@Valid AdminInvoiceListPageReqVO pageReqVO) {
+        PageResult<InvoiceListDO> pageResult = invoiceListService.getAdminInvoiceListPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, InvoiceListRespVO.class));
+    }
+
+    @Operation(summary = "上传发票")
+    @PreAuthorize("@ss.hasPermission('member:invoice-list:status')")
+    @PostMapping("/status")
+    public  CommonResult  invoiceStatusUpdate(@RequestBody @Valid  InvoiceStatusUpdateReqVo reqVo){
+     	return success(invoiceListService.invoiceStatusUpdate(reqVo));
+    }
+
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出发票清单 Excel")
+//    @PreAuthorize("@ss.hasPermission('member:invoice-list:export')")
+    @ApiAccessLog(operateType = OperateTypeEnum.EXPORT)
+    public void exportInvoiceListExcel(@Valid InvoiceListPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<InvoiceListDO> list = invoiceListService.getInvoiceListPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "发票清单.xls", "数据", InvoiceListRespVO.class,
+                        BeanUtils.toBean(list, InvoiceListRespVO.class));
+    }
+
+}

+ 46 - 0
citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/controller/admin/invoice/vo/AdminInvoiceListPageReqVO.java

@@ -0,0 +1,46 @@
+package com.citu.module.member.controller.admin.invoice.vo;
+
+import com.citu.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+import java.util.List;
+
+@Schema(description = "管理后台 - 发票清单分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class AdminInvoiceListPageReqVO extends PageParam {
+
+    @Schema(description = "0.个人  1.企业")
+    private Integer category;
+
+    @Schema(description = "接受通知的电话")
+    private String phone;
+
+    @Schema(description = "接受通知的邮件")
+    private String email;
+
+    @Schema(description = "主体称呼")
+    private String title;
+
+    @Schema(description = "身份证号  或者 企业统一信用代码")
+    private String code;
+
+    @Schema(description = "用户编号", example = "10764")
+    private Long userId;
+
+    @Schema(description = "发票状态 0.开票中  1.已开票  2.拒绝开票")
+    private Integer statue;
+
+    @Schema(description = "支付订单id", example = "32484")
+    private Long payOrderId;
+
+
+    @Schema(description = "支付订单ids", example = "32484")
+    private List<Long> payOrderIds;
+
+
+}

+ 43 - 0
citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/controller/admin/invoice/vo/InvoiceStatusUpdateReqVo.java

@@ -0,0 +1,43 @@
+package com.citu.module.member.controller.admin.invoice.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+
+import javax.validation.constraints.NotNull;
+
+public class InvoiceStatusUpdateReqVo {
+
+    @NotNull
+    @Schema(description = "主键id")
+    private Long id;
+
+    @Schema(description = "发票状态 1.已开票 ")
+    private Integer status=1;
+
+    @NotNull
+    @Schema(description = "发票文件地址")
+    private String fileUrl;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
+    public String getFileUrl() {
+        return fileUrl;
+    }
+
+    public void setFileUrl(String fileUrl) {
+        this.fileUrl = fileUrl;
+    }
+}

+ 85 - 0
citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/controller/app/invoice/AppInvoiceListController.java

@@ -0,0 +1,85 @@
+package com.citu.module.member.controller.app.invoice;
+
+import com.citu.module.member.controller.app.invoice.vo.InvoiceListPageReqVO;
+import com.citu.module.member.controller.app.invoice.vo.InvoiceListRespVO;
+import com.citu.module.member.controller.app.invoice.vo.InvoiceListSaveReqVO;
+import com.citu.module.member.dal.dataobject.invoice.InvoiceListDO;
+import com.citu.module.member.service.invoice.InvoiceListService;
+import org.springframework.web.bind.annotation.*;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import javax.validation.*;
+
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.common.util.object.BeanUtils;
+import static com.citu.framework.common.pojo.CommonResult.success;
+
+
+@Tag(name = " 发票清单")
+@RestController
+@RequestMapping("/member/invoice-list")
+@Validated
+public class AppInvoiceListController {
+
+    @Resource
+    private InvoiceListService invoiceListService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建发票")
+    public CommonResult<Long> createInvoiceList(@Valid @RequestBody InvoiceListSaveReqVO createReqVO) {
+        return success(invoiceListService.createInvoiceList(createReqVO));
+    }
+
+//    @PutMapping("/update")
+//    @Operation(summary = "更新发票清单")
+//    @PreAuthorize("@ss.hasPermission('member:invoice-list:update')")
+//    public CommonResult<Boolean> updateInvoiceList(@Valid @RequestBody InvoiceListSaveReqVO updateReqVO) {
+//        invoiceListService.updateInvoiceList(updateReqVO);
+//        return success(true);
+//    }
+
+//    @DeleteMapping("/delete")
+//    @Operation(summary = "删除发票清单")
+//    @Parameter(name = "id", description = "编号", required = true)
+//    public CommonResult<Boolean> deleteInvoiceList(@RequestParam("id") String id) {
+//        invoiceListService.deleteInvoiceList(id);
+//        return success(true);
+//    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得发票清单")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('member:invoice-list:query')")
+    public CommonResult<InvoiceListRespVO> getInvoiceList(@RequestParam("id") Long id) {
+        InvoiceListDO invoiceList = invoiceListService.getInvoiceList(id);
+        return success(BeanUtils.toBean(invoiceList, InvoiceListRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得发票清单分页")
+//    @PreAuthorize("@ss.hasPermission('member:invoice-list:query')")
+    public CommonResult<PageResult<InvoiceListRespVO>> getInvoiceListPage(@Valid InvoiceListPageReqVO pageReqVO) {
+        PageResult<InvoiceListDO> pageResult = invoiceListService.getInvoiceListPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, InvoiceListRespVO.class));
+    }
+
+//    @GetMapping("/export-excel")
+//    @Operation(summary = "导出发票清单 Excel")
+////    @PreAuthorize("@ss.hasPermission('member:invoice-list:export')")
+//    @ApiAccessLog(operateType = EXPORT)
+//    public void exportInvoiceListExcel(@Valid InvoiceListPageReqVO pageReqVO,
+//              HttpServletResponse response) throws IOException {
+//        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+//        List<InvoiceListDO> list = invoiceListService.getInvoiceListPage(pageReqVO).getList();
+//        // 导出 Excel
+//        ExcelUtils.write(response, "发票清单.xls", "数据", InvoiceListRespVO.class,
+//                        BeanUtils.toBean(list, InvoiceListRespVO.class));
+//    }
+
+}

+ 93 - 0
citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/controller/app/invoice/InvoiceTitleController.java

@@ -0,0 +1,93 @@
+package com.citu.module.member.controller.app.invoice;
+
+import com.citu.module.member.controller.app.invoice.vo.InvoiceTitlePageReqVO;
+import com.citu.module.member.controller.app.invoice.vo.InvoiceTitleRespVO;
+import com.citu.module.member.controller.app.invoice.vo.InvoiceTitleSaveReqVO;
+import com.citu.module.member.dal.dataobject.invoice.InvoiceTitleDO;
+import com.citu.module.member.service.invoice.InvoiceTitleService;
+import org.springframework.web.bind.annotation.*;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import javax.validation.constraints.*;
+import javax.validation.*;
+import javax.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import com.citu.framework.common.pojo.PageParam;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.common.util.object.BeanUtils;
+import static com.citu.framework.common.pojo.CommonResult.success;
+
+import com.citu.framework.excel.core.util.ExcelUtils;
+
+import com.citu.framework.apilog.core.annotation.ApiAccessLog;
+import static com.citu.framework.apilog.core.enums.OperateTypeEnum.*;
+
+
+
+@Tag(name = "管理发票抬头")
+@RestController
+@RequestMapping("/member/invoice-title")
+@Validated
+public class InvoiceTitleController {
+
+    @Resource
+    private InvoiceTitleService invoiceTitleService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建发票抬头")
+    public CommonResult<Long> createInvoiceTitle(@Valid @RequestBody InvoiceTitleSaveReqVO createReqVO) {
+        return success(invoiceTitleService.createInvoiceTitle(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新发票抬头")
+    public CommonResult<Boolean> updateInvoiceTitle(@Valid @RequestBody InvoiceTitleSaveReqVO updateReqVO) {
+        invoiceTitleService.updateInvoiceTitle(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除发票抬头")
+    @Parameter(name = "id", description = "编号", required = true)
+//    @PreAuthorize("@ss.hasPermission('member:invoice-title:delete')")
+    public CommonResult<Boolean> deleteInvoiceTitle(@RequestParam("id") Long id) {
+        invoiceTitleService.deleteInvoiceTitle(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得发票抬头")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    public CommonResult<InvoiceTitleRespVO> getInvoiceTitle(@RequestParam("id") Long id) {
+        InvoiceTitleDO invoiceTitle = invoiceTitleService.getInvoiceTitle(id);
+        return success(BeanUtils.toBean(invoiceTitle, InvoiceTitleRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得发票抬头分页")
+    public CommonResult<PageResult<InvoiceTitleRespVO>> getInvoiceTitlePage(@Valid InvoiceTitlePageReqVO pageReqVO) {
+        PageResult<InvoiceTitleDO> pageResult = invoiceTitleService.getInvoiceTitlePage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, InvoiceTitleRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出发票抬头 Excel")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportInvoiceTitleExcel(@Valid InvoiceTitlePageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<InvoiceTitleDO> list = invoiceTitleService.getInvoiceTitlePage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "发票抬头.xls", "数据", InvoiceTitleRespVO.class,
+                        BeanUtils.toBean(list, InvoiceTitleRespVO.class));
+    }
+
+}

+ 43 - 0
citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/controller/app/invoice/vo/InvoiceListPageReqVO.java

@@ -0,0 +1,43 @@
+package com.citu.module.member.controller.app.invoice.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import com.citu.framework.common.pojo.PageParam;
+
+@Schema(description = "管理后台 - 发票清单分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class InvoiceListPageReqVO extends PageParam {
+
+    @Schema(description = "0.个人  1.企业")
+    private Integer category;
+
+    @Schema(description = "接受通知的电话")
+    private String phone;
+
+    @Schema(description = "接受通知的邮件")
+    private String email;
+
+    @Schema(description = "主体称呼")
+    private String title;
+
+    @Schema(description = "身份证号  或者 企业统一信用代码")
+    private String code;
+
+    @Schema(description = "用户编号", example = "10764")
+    private Long userId;
+
+    @Schema(description = "发票状态 0.开票中  1.已开票  2.拒绝开票")
+    private Integer statue;
+
+    @Schema(description = "支付订单id", example = "32484")
+    private Long payOrderId;
+
+
+    @Schema(description = "支付订单ids", example = "32484")
+    private List<Long> payOrderIds;
+
+
+}

+ 56 - 0
citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/controller/app/invoice/vo/InvoiceListRespVO.java

@@ -0,0 +1,56 @@
+package com.citu.module.member.controller.app.invoice.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import java.util.*;
+import com.alibaba.excel.annotation.*;
+
+@Schema(description = "管理后台 - 发票清单 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class InvoiceListRespVO {
+
+    @Schema(description = "主键", example = "14860")
+    @ExcelProperty("主键")
+    private String id;
+
+    @Schema(description = "0.个人  1.企业")
+    @ExcelProperty("0.个人  1.企业")
+    private Integer category;
+
+    @Schema(description = "接受通知的电话")
+    @ExcelProperty("接受通知的电话")
+    private String phone;
+
+    @Schema(description = "接受通知的邮件")
+    @ExcelProperty("接受通知的邮件")
+    private String email;
+
+    @Schema(description = "主体称呼")
+    @ExcelProperty("主体称呼")
+    private String title;
+
+    @Schema(description = "身份证号  或者 企业统一信用代码")
+    @ExcelProperty("身份证号  或者 企业统一信用代码")
+    private String code;
+
+    @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "10764")
+    @ExcelProperty("用户编号")
+    private Long userId;
+
+    @Schema(description = "发票状态 0.开票中  1.已开票  2.拒绝开票")
+    @ExcelProperty("发票状态 0.开票中   1.已开票  2.拒绝开票")
+    private Integer status;
+
+    @Schema(description = "支付订单id", example = "32484")
+    @ExcelProperty("支付订单id")
+    private Integer payOrderId;
+
+    @Schema(description = "发票文件地址")
+    @ExcelProperty("发票文件地址")
+    private String fileUrl;
+
+    private Long price;
+
+}

+ 40 - 0
citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/controller/app/invoice/vo/InvoiceListSaveReqVO.java

@@ -0,0 +1,40 @@
+package com.citu.module.member.controller.app.invoice.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import javax.validation.constraints.*;
+
+@Schema(description = "管理后台 - 发票清单新增/修改 Request VO")
+@Data
+public class InvoiceListSaveReqVO {
+
+    @Schema(description = "主键", example = "14860")
+    private Long id;
+
+    @Schema(description = "0.个人  1.企业")
+    private Integer category;
+
+    @Schema(description = "接受通知的电话")
+    private String phone;
+
+    @Schema(description = "接受通知的邮件")
+    private String email;
+
+    @Schema(description = "主体称呼")
+    private String title;
+
+    @Schema(description = "身份证号  或者 企业统一信用代码")
+    private String code;
+
+//    @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "10764")
+//    @NotNull(message = "用户编号不能为空")
+//    private Long userId;
+
+    @Schema(description = "发票状态 0.开票中  1.已开票  2.拒绝开票")
+    private Integer status;
+
+    @Schema(description = "支付订单id", example = "32484")
+    private Long payOrderId;
+
+}

+ 40 - 0
citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/controller/app/invoice/vo/InvoiceTitlePageReqVO.java

@@ -0,0 +1,40 @@
+package com.citu.module.member.controller.app.invoice.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import com.citu.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 发票抬头分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class InvoiceTitlePageReqVO extends PageParam {
+
+    @Schema(description = "0.个人  1.企业")
+    private Integer category;
+
+    @Schema(description = "接受通知的电话")
+    private String phone;
+
+    @Schema(description = "接受通知的邮件")
+    private String email;
+
+    @Schema(description = "主体称呼")
+    private String title;
+
+    @Schema(description = "身份证号  或者 企业统一信用代码")
+    private String code;
+
+    @Schema(description = "用户编号", example = "18709")
+    private Long userId;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 48 - 0
citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/controller/app/invoice/vo/InvoiceTitleRespVO.java

@@ -0,0 +1,48 @@
+package com.citu.module.member.controller.app.invoice.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+
+@Schema(description = "管理后台 - 发票抬头 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class InvoiceTitleRespVO {
+
+    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "23688")
+    @ExcelProperty("主键")
+    private Long id;
+
+    @Schema(description = "0.个人  1.企业")
+    @ExcelProperty("0.个人  1.企业")
+    private Integer category;
+
+    @Schema(description = "接受通知的电话")
+    @ExcelProperty("接受通知的电话")
+    private String phone;
+
+    @Schema(description = "接受通知的邮件")
+    @ExcelProperty("接受通知的邮件")
+    private String email;
+
+    @Schema(description = "主体称呼")
+    @ExcelProperty("主体称呼")
+    private String title;
+
+    @Schema(description = "身份证号  或者 企业统一信用代码")
+    @ExcelProperty("身份证号  或者 企业统一信用代码")
+    private String code;
+
+    @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "18709")
+    @ExcelProperty("用户编号")
+    private Long userId;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 34 - 0
citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/controller/app/invoice/vo/InvoiceTitleSaveReqVO.java

@@ -0,0 +1,34 @@
+package com.citu.module.member.controller.app.invoice.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import javax.validation.constraints.*;
+
+@Schema(description = "管理后台 - 发票抬头新增/修改 Request VO")
+@Data
+public class InvoiceTitleSaveReqVO {
+
+    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "23688")
+    private Long id;
+
+    @Schema(description = "0.个人  1.企业")
+    private Integer category;
+
+    @Schema(description = "接受通知的电话")
+    private String phone;
+
+    @Schema(description = "接受通知的邮件")
+    private String email;
+
+    @Schema(description = "主体称呼")
+    private String title;
+
+    @Schema(description = "身份证号  或者 企业统一信用代码")
+    private String code;
+
+    @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "18709")
+    @NotNull(message = "用户编号不能为空")
+    private Long userId;
+
+}

+ 65 - 0
citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/dal/dataobject/invoice/InvoiceListDO.java

@@ -0,0 +1,65 @@
+package com.citu.module.member.dal.dataobject.invoice;
+
+import lombok.*;
+import java.util.*;
+import com.baomidou.mybatisplus.annotation.*;
+import com.citu.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * 发票清单 DO
+ *
+ * @author 辞图科技
+ */
+@TableName("member_invoice_list")
+@KeySequence("member_invoice_list_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class InvoiceListDO extends BaseDO {
+
+    /**
+     * 主键
+     */
+    @TableId(type = IdType.ASSIGN_ID)
+    private Long id;
+    /**
+     * 0.个人  1.企业
+     */
+    private Integer category;
+    /**
+     * 接受通知的电话
+     */
+    private String phone;
+    /**
+     * 接受通知的邮件
+     */
+    private String email;
+    /**
+     * 主体称呼
+     */
+    private String title;
+    /**
+     * 身份证号  或者 企业统一信用代码
+     */
+    private String code;
+    /**
+     * 用户编号
+     */
+    private Long userId;
+    /**
+     * 发票状态 0.开票中  1.已开票  2.拒绝开票
+     */
+    private Integer status;
+    /**
+     * 支付订单id
+     */
+    private Integer payOrderId;
+
+    private String fileUrl;
+
+    private Long price;
+
+}

+ 55 - 0
citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/dal/dataobject/invoice/InvoiceTitleDO.java

@@ -0,0 +1,55 @@
+package com.citu.module.member.dal.dataobject.invoice;
+
+import lombok.*;
+import java.util.*;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
+import com.citu.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * 发票抬头 DO
+ *
+ * @author 辞图科技
+ */
+@TableName("member_invoice_title")
+@KeySequence("member_invoice_title_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class InvoiceTitleDO extends BaseDO {
+
+    /**
+     * 主键
+     */
+    @TableId(type = IdType.ASSIGN_ID)
+    private Long id;
+    /**
+     * 0.个人  1.企业
+     */
+    private Integer category;
+    /**
+     * 接受通知的电话
+     */
+    private String phone;
+    /**
+     * 接受通知的邮件
+     */
+    private String email;
+    /**
+     * 主体称呼
+     */
+    private String title;
+    /**
+     * 身份证号  或者 企业统一信用代码
+     */
+    private String code;
+    /**
+     * 用户编号
+     */
+    private Long userId;
+
+}

+ 49 - 0
citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/dal/mysql/invoice/InvoiceListMapper.java

@@ -0,0 +1,49 @@
+package com.citu.module.member.dal.mysql.invoice;
+
+import java.util.*;
+
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.mybatis.core.query.LambdaQueryWrapperX;
+import com.citu.framework.mybatis.core.mapper.BaseMapperX;
+import com.citu.module.member.controller.admin.invoice.vo.AdminInvoiceListPageReqVO;
+import com.citu.module.member.controller.app.invoice.vo.InvoiceListPageReqVO;
+import com.citu.module.member.dal.dataobject.invoice.InvoiceListDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 发票清单 Mapper
+ *
+ * @author 辞图科技
+ */
+@Mapper
+public interface InvoiceListMapper extends BaseMapperX<InvoiceListDO> {
+
+    default PageResult<InvoiceListDO> selectPage(InvoiceListPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<InvoiceListDO>()
+                .inIfPresent(InvoiceListDO::getPayOrderId, reqVO.getPayOrderIds())
+                .eqIfPresent(InvoiceListDO::getCategory, reqVO.getCategory())
+                .eqIfPresent(InvoiceListDO::getPhone, reqVO.getPhone())
+                .eqIfPresent(InvoiceListDO::getEmail, reqVO.getEmail())
+                .eqIfPresent(InvoiceListDO::getTitle, reqVO.getTitle())
+                .eqIfPresent(InvoiceListDO::getCode, reqVO.getCode())
+                .eqIfPresent(InvoiceListDO::getUserId, reqVO.getUserId())
+                .eqIfPresent(InvoiceListDO::getStatus, reqVO.getStatue())
+                .eqIfPresent(InvoiceListDO::getPayOrderId, reqVO.getPayOrderId())
+                .orderByDesc(InvoiceListDO::getId));
+    }
+
+    default PageResult<InvoiceListDO> selectPage(AdminInvoiceListPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<InvoiceListDO>()
+                .inIfPresent(InvoiceListDO::getPayOrderId, reqVO.getPayOrderIds())
+                .eqIfPresent(InvoiceListDO::getCategory, reqVO.getCategory())
+                .eqIfPresent(InvoiceListDO::getPhone, reqVO.getPhone())
+                .eqIfPresent(InvoiceListDO::getEmail, reqVO.getEmail())
+                .eqIfPresent(InvoiceListDO::getTitle, reqVO.getTitle())
+                .eqIfPresent(InvoiceListDO::getCode, reqVO.getCode())
+                .eqIfPresent(InvoiceListDO::getUserId, reqVO.getUserId())
+                .eqIfPresent(InvoiceListDO::getStatus, reqVO.getStatue())
+                .eqIfPresent(InvoiceListDO::getPayOrderId, reqVO.getPayOrderId())
+                .orderByDesc(InvoiceListDO::getId));
+    }
+
+}

+ 32 - 0
citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/dal/mysql/invoice/InvoiceTitleMapper.java

@@ -0,0 +1,32 @@
+package com.citu.module.member.dal.mysql.invoice;
+
+import java.util.*;
+
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.mybatis.core.query.LambdaQueryWrapperX;
+import com.citu.framework.mybatis.core.mapper.BaseMapperX;
+import com.citu.module.member.controller.app.invoice.vo.InvoiceTitlePageReqVO;
+import com.citu.module.member.dal.dataobject.invoice.InvoiceTitleDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 发票抬头 Mapper
+ *
+ * @author 辞图科技
+ */
+@Mapper
+public interface InvoiceTitleMapper extends BaseMapperX<InvoiceTitleDO> {
+
+    default PageResult<InvoiceTitleDO> selectPage(InvoiceTitlePageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<InvoiceTitleDO>()
+                .eqIfPresent(InvoiceTitleDO::getCategory, reqVO.getCategory())
+                .eqIfPresent(InvoiceTitleDO::getPhone, reqVO.getPhone())
+                .eqIfPresent(InvoiceTitleDO::getEmail, reqVO.getEmail())
+                .eqIfPresent(InvoiceTitleDO::getTitle, reqVO.getTitle())
+                .eqIfPresent(InvoiceTitleDO::getCode, reqVO.getCode())
+                .eqIfPresent(InvoiceTitleDO::getUserId, reqVO.getUserId())
+                .betweenIfPresent(InvoiceTitleDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(InvoiceTitleDO::getId));
+    }
+
+}

+ 2 - 1
citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/framework/rpc/config/RpcConfiguration.java

@@ -1,5 +1,6 @@
 package com.citu.module.member.framework.rpc.config;
 
+import com.citu.module.pay.api.order.PayOrderApi;
 import com.citu.module.system.api.logger.LoginLogApi;
 import com.citu.module.system.api.sms.SmsCodeApi;
 import com.citu.module.system.api.social.SocialClientApi;
@@ -8,6 +9,6 @@ import org.springframework.cloud.openfeign.EnableFeignClients;
 import org.springframework.context.annotation.Configuration;
 
 @Configuration(proxyBeanMethods = false)
-@EnableFeignClients(clients = {SmsCodeApi.class, LoginLogApi.class, SocialUserApi.class, SocialClientApi.class})
+@EnableFeignClients(clients = {PayOrderApi.class,SmsCodeApi.class, LoginLogApi.class, SocialUserApi.class, SocialClientApi.class})
 public class RpcConfiguration {
 }

+ 62 - 0
citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/service/invoice/InvoiceListService.java

@@ -0,0 +1,62 @@
+package com.citu.module.member.service.invoice;
+
+import java.util.*;
+import javax.validation.*;
+
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.pojo.PageParam;
+import com.citu.module.member.controller.admin.invoice.vo.AdminInvoiceListPageReqVO;
+import com.citu.module.member.controller.admin.invoice.vo.InvoiceStatusUpdateReqVo;
+import com.citu.module.member.controller.app.invoice.vo.InvoiceListPageReqVO;
+import com.citu.module.member.controller.app.invoice.vo.InvoiceListSaveReqVO;
+import com.citu.module.member.dal.dataobject.invoice.InvoiceListDO;
+
+/**
+ * 发票清单 Service 接口
+ *
+ * @author 辞图科技
+ */
+public interface InvoiceListService {
+
+    /**
+     * 创建发票清单
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createInvoiceList(@Valid InvoiceListSaveReqVO createReqVO);
+
+    /**
+     * 更新发票清单
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateInvoiceList(@Valid InvoiceListSaveReqVO updateReqVO);
+
+    /**
+     * 删除发票清单
+     *
+     * @param id 编号
+     */
+    void deleteInvoiceList(Long id);
+
+    /**
+     * 获得发票清单
+     *
+     * @param id 编号
+     * @return 发票清单
+     */
+    InvoiceListDO getInvoiceList(Long id);
+
+    /**
+     * 获得发票清单分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 发票清单分页
+     */
+    PageResult<InvoiceListDO> getInvoiceListPage(InvoiceListPageReqVO pageReqVO);
+
+    PageResult<InvoiceListDO> getAdminInvoiceListPage(AdminInvoiceListPageReqVO pageReqVO);
+
+    Object invoiceStatusUpdate(InvoiceStatusUpdateReqVo reqVo);
+}

+ 132 - 0
citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/service/invoice/InvoiceListServiceImpl.java

@@ -0,0 +1,132 @@
+package com.citu.module.member.service.invoice;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.citu.framework.security.core.util.SecurityFrameworkUtils;
+import com.citu.module.member.controller.admin.invoice.vo.AdminInvoiceListPageReqVO;
+import com.citu.module.member.controller.admin.invoice.vo.InvoiceStatusUpdateReqVo;
+import com.citu.module.member.controller.app.invoice.vo.InvoiceListPageReqVO;
+import com.citu.module.member.controller.app.invoice.vo.InvoiceListSaveReqVO;
+import com.citu.module.member.dal.dataobject.invoice.InvoiceListDO;
+import com.citu.module.member.dal.mysql.invoice.InvoiceListMapper;
+import com.citu.module.pay.api.order.PayOrderApi;
+import com.citu.module.pay.api.order.dto.PayOrderBaseRespDTO;
+import com.citu.module.pay.api.order.dto.PayOrderRespDTO;
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.pojo.PageParam;
+import com.citu.framework.common.util.object.BeanUtils;
+
+
+import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static com.citu.module.member.enums.ErrorCodeConstants.*;
+
+/**
+ * 发票清单 Service 实现类
+ *
+ * @author 辞图科技
+ */
+@Service
+@Validated
+public class InvoiceListServiceImpl implements InvoiceListService {
+
+    @Resource
+    private InvoiceListMapper invoiceListMapper;
+
+    @Resource
+    private PayOrderApi payOrderApi;
+
+
+    @Override
+    public Long createInvoiceList(InvoiceListSaveReqVO createReqVO) {
+        Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
+        PayOrderBaseRespDTO data = payOrderApi.getOrder2(createReqVO.getPayOrderId()).getData();
+        if(null==data){
+            throw   exception(INVOICE_LIST_ORDER_NOT_EXISTS);
+        }
+//        // 非本人订单
+//        if(!loginUserId.toString().equals( data.getChannelUserId())){
+//            throw   exception(INVOICE_LIST_ORDER_NOT_EXISTS);
+//        }
+
+
+
+        InvoiceListDO invoiceListDO = invoiceListMapper.selectOne(new LambdaQueryWrapper<InvoiceListDO>().eq(InvoiceListDO::getPayOrderId, createReqVO.getPayOrderId()));
+
+        if(null!=invoiceListDO){
+          throw    exception(INVOICE_EXISTS);
+        }
+
+        // 插入
+        InvoiceListDO invoiceList = BeanUtils.toBean(createReqVO, InvoiceListDO.class);
+        invoiceList.setUserId(loginUserId);
+        invoiceList.setStatus(0);
+        invoiceList.setPrice(data.getPrice());
+        invoiceListMapper.insert(invoiceList);
+        // 返回
+        return invoiceList.getId();
+    }
+
+    @Override
+    public void updateInvoiceList(InvoiceListSaveReqVO updateReqVO) {
+        // 校验存在
+        validateInvoiceListExists(updateReqVO.getId());
+        // 更新
+        InvoiceListDO updateObj = BeanUtils.toBean(updateReqVO, InvoiceListDO.class);
+        invoiceListMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteInvoiceList(Long id) {
+        // 校验存在
+        validateInvoiceListExists(id);
+        // 删除
+        invoiceListMapper.deleteById(id);
+    }
+
+    private void validateInvoiceListExists(Long id) {
+        if (invoiceListMapper.selectById(id) == null) {
+            throw exception(INVOICE_LIST_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public InvoiceListDO getInvoiceList(Long id) {
+        return invoiceListMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<InvoiceListDO> getInvoiceListPage(InvoiceListPageReqVO pageReqVO) {
+        pageReqVO.setUserId(SecurityFrameworkUtils.getLoginUserId());
+        return invoiceListMapper.selectPage(pageReqVO);
+    }
+
+    @Override
+    public PageResult<InvoiceListDO> getAdminInvoiceListPage(AdminInvoiceListPageReqVO pageReqVO) {
+        return invoiceListMapper.selectPage(pageReqVO);
+    }
+
+    @Override
+    public Object invoiceStatusUpdate(InvoiceStatusUpdateReqVo reqVo) {
+        InvoiceListDO invoiceListDO = invoiceListMapper.selectById(reqVo.getId());
+        if(null == invoiceListDO){
+            throw  exception(INVOICE_LIST_NOT_EXISTS);
+        }
+
+        if(!invoiceListDO.getStatus().equals(0)){
+            throw exception(INVOICE_STATUS_ERROR);
+        }
+
+        int update = invoiceListMapper.update(null, new LambdaUpdateWrapper<InvoiceListDO>()
+                .eq(InvoiceListDO::getId, reqVo.getId()).set(InvoiceListDO::getFileUrl, reqVo.getFileUrl()).set(InvoiceListDO::getStatus, reqVo.getStatus()));
+
+        return update;
+    }
+
+}

+ 57 - 0
citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/service/invoice/InvoiceTitleService.java

@@ -0,0 +1,57 @@
+package com.citu.module.member.service.invoice;
+
+import java.util.*;
+import javax.validation.*;
+
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.pojo.PageParam;
+import com.citu.module.member.controller.app.invoice.vo.InvoiceTitlePageReqVO;
+import com.citu.module.member.controller.app.invoice.vo.InvoiceTitleSaveReqVO;
+import com.citu.module.member.dal.dataobject.invoice.InvoiceTitleDO;
+
+/**
+ * 发票抬头 Service 接口
+ *
+ * @author 辞图科技
+ */
+public interface InvoiceTitleService {
+
+    /**
+     * 创建发票抬头
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createInvoiceTitle(@Valid InvoiceTitleSaveReqVO createReqVO);
+
+    /**
+     * 更新发票抬头
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateInvoiceTitle(@Valid InvoiceTitleSaveReqVO updateReqVO);
+
+    /**
+     * 删除发票抬头
+     *
+     * @param id 编号
+     */
+    void deleteInvoiceTitle(Long id);
+
+    /**
+     * 获得发票抬头
+     *
+     * @param id 编号
+     * @return 发票抬头
+     */
+    InvoiceTitleDO getInvoiceTitle(Long id);
+
+    /**
+     * 获得发票抬头分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 发票抬头分页
+     */
+    PageResult<InvoiceTitleDO> getInvoiceTitlePage(InvoiceTitlePageReqVO pageReqVO);
+
+}

+ 81 - 0
citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/service/invoice/InvoiceTitleServiceImpl.java

@@ -0,0 +1,81 @@
+package com.citu.module.member.service.invoice;
+
+import com.citu.framework.security.core.util.SecurityFrameworkUtils;
+import com.citu.module.member.controller.app.invoice.vo.InvoiceTitlePageReqVO;
+import com.citu.module.member.controller.app.invoice.vo.InvoiceTitleSaveReqVO;
+import com.citu.module.member.dal.dataobject.invoice.InvoiceTitleDO;
+import com.citu.module.member.dal.mysql.invoice.InvoiceTitleMapper;
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.pojo.PageParam;
+import com.citu.framework.common.util.object.BeanUtils;
+
+
+import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static com.citu.module.member.enums.ErrorCodeConstants.*;
+
+/**
+ * 发票抬头 Service 实现类
+ *
+ * @author 辞图科技
+ */
+@Service
+@Validated
+public class InvoiceTitleServiceImpl implements InvoiceTitleService {
+
+    @Resource
+    private InvoiceTitleMapper invoiceTitleMapper;
+
+    @Override
+    public Long createInvoiceTitle(InvoiceTitleSaveReqVO createReqVO) {
+        // 插入
+        InvoiceTitleDO invoiceTitle = BeanUtils.toBean(createReqVO, InvoiceTitleDO.class);
+        invoiceTitle.setUserId(SecurityFrameworkUtils.getLoginUserId());
+        invoiceTitleMapper.insert(invoiceTitle);
+        // 返回
+        return invoiceTitle.getId();
+    }
+
+    @Override
+    public void updateInvoiceTitle(InvoiceTitleSaveReqVO updateReqVO) {
+        // 校验存在
+        validateInvoiceTitleExists(updateReqVO.getId());
+        // 更新
+        InvoiceTitleDO updateObj = BeanUtils.toBean(updateReqVO, InvoiceTitleDO.class);
+        updateObj.setUserId(SecurityFrameworkUtils.getLoginUserId());
+
+        invoiceTitleMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteInvoiceTitle(Long id) {
+        // 校验存在
+        validateInvoiceTitleExists(id);
+        // 删除
+        invoiceTitleMapper.deleteById(id);
+    }
+
+    private void validateInvoiceTitleExists(Long id) {
+        if (invoiceTitleMapper.selectById(id) == null) {
+            throw exception(INVOICE_TITLE_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public InvoiceTitleDO getInvoiceTitle(Long id) {
+        return invoiceTitleMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<InvoiceTitleDO> getInvoiceTitlePage(InvoiceTitlePageReqVO pageReqVO) {
+        pageReqVO.setUserId(SecurityFrameworkUtils.getLoginUserId());
+        return invoiceTitleMapper.selectPage(pageReqVO);
+    }
+
+}

+ 6 - 0
menduner/menduner-im-api/pom.xml

@@ -26,6 +26,12 @@
             <groupId>com.citu</groupId>
             <artifactId>menduner-common</artifactId>
             <version>${revision}</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>com.citu</groupId>
+                    <artifactId>spring-boot-starter-data-redis</artifactId>
+                </exclusion>
+            </exclusions>
         </dependency>
 
     </dependencies>

+ 20 - 0
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/WuKongMessageController.java

@@ -3,6 +3,7 @@ package com.citu.module.menduner.im.controller.app;
 import com.citu.framework.common.pojo.CommonResult;
 import com.citu.framework.security.core.annotations.PreAuthenticated;
 import com.citu.module.menduner.im.controller.app.base.wukong.ChannelMessageSyncReqVo;
+import com.citu.module.menduner.im.controller.app.base.wukong.HistoryMessagesReqVo;
 import com.citu.module.menduner.im.service.wukong.WuKongMessageService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -38,6 +39,25 @@ public class WuKongMessageController {
       return service.channelMessageSync(reqVo);
     }
 
+
+    /**
+     * @eo.name 获取历史消息
+     * @eo.url /im/history/messages
+     * @eo.method post
+     * @eo.request-type json
+     * @param reqVo
+     * @return CommonResult
+     */
+    @PreAuthenticated
+    @PostMapping("/im/history/messages")
+    public CommonResult historyMessages(@RequestBody HistoryMessagesReqVo reqVo){
+        return service.historyMessages(reqVo);
+    }
+
+
+
+
+
     @Autowired
     public void setService(WuKongMessageService service) {
         this.service = service;

+ 44 - 0
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/base/wukong/HistoryMessagesReqVo.java

@@ -0,0 +1,44 @@
+package com.citu.module.menduner.im.controller.app.base.wukong;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+
+public class HistoryMessagesReqVo {
+    private Page page =new Page(1,1);
+    private String fromUid;
+
+    private String channelId;
+
+    private Integer type;
+
+    public Page getPage() {
+        return page;
+    }
+
+    public void setPage(Page page) {
+        this.page = page;
+    }
+
+    public String getFromUid() {
+        return fromUid;
+    }
+
+    public void setFromUid(String fromUid) {
+        this.fromUid = fromUid;
+    }
+
+    public String getChannelId() {
+        return channelId;
+    }
+
+    public void setChannelId(String channelId) {
+        this.channelId = channelId;
+    }
+
+    public Integer getType() {
+        return type;
+    }
+
+    public void setType(Integer type) {
+        this.type = type;
+    }
+}

+ 5 - 1
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/service/UserServiceImpl.java

@@ -124,8 +124,12 @@ public class UserServiceImpl implements UserService{
             item.setEnterpriseId(DEFAULT_ENTERPRISE_ID.equals(userDO.getEnterpriseId())?null:userDO.getEnterpriseId());
             list.add(item);
         }
-
+//        System.out.println("DEBUG ============>");
+//        System.out.println(JSON.toJSONString(userDOS));
         List<UserInfoRespDTO> result = userApi.getUserInfo(list).getCheckedData();
+//        System.out.println(JSON.toJSONString(result));
+//        System.out.println("DEBUG ============>");
+
         List<ImUserInfoVo> resultVo =  new ArrayList<>(result.size()+1);
         Map<String, UserInfoRespDTO> collect = result.stream().collect(Collectors.toMap(item -> item.getUserId().toString() +"-"+ (null == item.getEnterpriseId() ? DEFAULT_ENTERPRISE_ID.intValue() : item.getEnterpriseId()), item -> item));
 //        System.out.println(JSON.toJSONString(collect));

+ 3 - 0
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/service/wukong/WuKongMessageService.java

@@ -2,7 +2,10 @@ package com.citu.module.menduner.im.service.wukong;
 
 import com.citu.framework.common.pojo.CommonResult;
 import com.citu.module.menduner.im.controller.app.base.wukong.ChannelMessageSyncReqVo;
+import com.citu.module.menduner.im.controller.app.base.wukong.HistoryMessagesReqVo;
 
 public interface WuKongMessageService {
     CommonResult channelMessageSync(ChannelMessageSyncReqVo reqVo);
+
+    CommonResult historyMessages(HistoryMessagesReqVo reqVo);
 }

+ 23 - 0
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/service/wukong/WuKongMessageServiceImpl.java

@@ -1,8 +1,14 @@
 package com.citu.module.menduner.im.service.wukong;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.citu.framework.common.pojo.CommonResult;
 import com.citu.module.menduner.im.controller.app.base.wukong.ChannelMessageSyncReqVo;
+import com.citu.module.menduner.im.controller.app.base.wukong.HistoryMessagesReqVo;
+import com.citu.module.menduner.im.dal.dataobject.UserMsgDO;
+import com.citu.module.menduner.im.dal.mysql.UserMsgMapper;
 import com.citu.module.menduner.im.service.UserService;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -13,6 +19,7 @@ public class WuKongMessageServiceImpl implements WuKongMessageService{
 
     WuKongApiService wuKongApiService;
 
+    UserMsgMapper userMsgMapper;
 
 
     @Override
@@ -22,6 +29,22 @@ public class WuKongMessageServiceImpl implements WuKongMessageService{
         return CommonResult.success(wuKongApiService.channelMessageSync(reqVo));
     }
 
+    @Override
+    public CommonResult historyMessages(HistoryMessagesReqVo reqVo) {
+        Page page = reqVo.getPage();
+        userMsgMapper.selectPage(page,new LambdaQueryWrapper<UserMsgDO>()
+                        .eq(null!=reqVo.getType(),UserMsgDO::getType,reqVo.getType())
+                .eq(StringUtils.isNotBlank(reqVo.getFromUid()),UserMsgDO::getFromUid,reqVo.getFromUid())
+                .eq(StringUtils.isNotBlank(reqVo.getChannelId()),UserMsgDO::getChannelId,reqVo.getChannelId()));
+
+        return CommonResult.success(page);
+    }
+
+    @Autowired
+    public void setUserMsgMapper(UserMsgMapper userMsgMapper) {
+        this.userMsgMapper = userMsgMapper;
+    }
+
     @Autowired
     public void setWuKongApiService(WuKongApiService wuKongApiService) {
         this.wuKongApiService = wuKongApiService;

+ 3 - 0
menduner/menduner-im-biz/src/main/resources/bootstrap.yaml

@@ -35,4 +35,7 @@ citu:
   info:
     version: 1.0.0
     base-package: com.citu.module.menduner.im
+  web:
+    admin-ui:
+      url: http://127.0.0.1:8080
 

+ 6 - 0
menduner/menduner-mall-api/pom.xml

@@ -19,6 +19,12 @@
             <groupId>com.citu</groupId>
             <artifactId>menduner-common</artifactId>
             <version>${revision}</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>com.citu</groupId>
+                    <artifactId>spring-boot-starter-data-redis</artifactId>
+                </exclusion>
+            </exclusions>
         </dependency>
     </dependencies>
 

+ 3 - 0
menduner/menduner-mall-biz/src/main/resources/bootstrap.yaml

@@ -35,4 +35,7 @@ citu:
   info:
     version: 1.0.0
     base-package: com.citu.module.menduner.im
+  web:
+    admin-ui:
+      url: http://127.0.0.1:8080
 

+ 2 - 0
pom.xml

@@ -57,6 +57,8 @@
         </dependencies>
     </dependencyManagement>
 
+
+
     <build>
         <pluginManagement>
             <plugins>