Sfoglia il codice sorgente

golden 订单相关

yexianchao 1 mese fa
parent
commit
5f0880461c
26 ha cambiato i file con 442 aggiunte e 39 eliminazioni
  1. 31 0
      crm-custom/src/main/java/com/crm/custom/controller/FinanceWithdrawController.java
  2. 16 1
      crm-custom/src/main/java/com/crm/custom/controller/GoldenOrderController.java
  3. 3 0
      crm-custom/src/main/java/com/crm/custom/dao/mapper/GoldenOrderMapper.java
  4. 25 0
      crm-custom/src/main/java/com/crm/custom/dao/repository/FinanceDepositRepository.java
  5. 13 0
      crm-custom/src/main/java/com/crm/custom/dao/repository/GoldenOrderDetailsRepository.java
  6. 17 0
      crm-custom/src/main/java/com/crm/custom/service/FinanceWithdrawFeignService.java
  7. 9 0
      crm-custom/src/main/java/com/crm/custom/service/GoldenOrderService.java
  8. 2 11
      crm-custom/src/main/java/com/crm/custom/service/impl/CustomInfoServiceImpl.java
  9. 1 1
      crm-custom/src/main/java/com/crm/custom/service/impl/GoldenGoodsVideoServiceImpl.java
  10. 138 3
      crm-custom/src/main/java/com/crm/custom/service/impl/GoldenOrderServiceImpl.java
  11. 0 2
      crm-custom/src/main/resources/application-test.yml
  12. 44 0
      crm-custom/src/main/resources/mapper/GoldenOrder.xml
  13. 1 1
      crm-manager/pom.xml
  14. 6 0
      crm-manager/src/main/java/com/crm/manager/controller/FinanceWithdrawController.java
  15. 40 0
      crm-manager/src/main/java/com/crm/manager/controller/GoldenOrderController.java
  16. 28 0
      crm-manager/src/main/java/com/crm/manager/service/golden/GoldenOrderFeignService.java
  17. 1 0
      crm-manager/src/main/resources/application-test.yml
  18. 4 2
      crm-model/src/main/java/com/crm/rely/backend/model/dto/golden/order/GoldenOrderListDto.java
  19. 11 0
      crm-model/src/main/java/com/crm/rely/backend/model/entity/golden/order/GoldenOrderAddEntity.java
  20. 26 0
      crm-model/src/main/java/com/crm/rely/backend/model/entity/golden/order/GoldenOrderSearchEntity.java
  21. 2 0
      crm-model/src/main/java/com/crm/rely/backend/model/pojo/table/GoldenOrderTable.java
  22. 11 0
      crm-pay/src/main/java/com/crm/pay/controller/FinanceWithdrawController.java
  23. 2 0
      crm-pay/src/main/java/com/crm/pay/controller/base/BasePayCloseFunctionController.java
  24. 10 15
      crm-pay/src/main/java/com/crm/pay/service/impl/FinanceDepositServiceImpl.java
  25. 1 1
      crm-pay/src/main/java/com/crm/pay/service/impl/FinanceWithdrawServiceImpl.java
  26. 0 2
      crm-pay/src/main/resources/application-test.yml

+ 31 - 0
crm-custom/src/main/java/com/crm/custom/controller/FinanceWithdrawController.java

@@ -0,0 +1,31 @@
+package com.crm.custom.controller;
+
+import com.crm.custom.service.FinanceWithdrawFeignService;
+import com.crm.rely.backend.core.dto.base.BaseResultDto;
+import com.crm.rely.backend.core.dto.base.ResultWithPagerDto;
+import com.crm.rely.backend.model.dto.finance.withdraw.FinanceWithdrawDto;
+import com.crm.rely.backend.model.entity.custom.info.CustomInfoEntity;
+import com.crm.rely.backend.model.entity.finance.withdraw.FinanceWithdrawSearchListEntity;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/finance/withdraw")
+public class FinanceWithdrawController {
+
+    @Autowired
+    private FinanceWithdrawFeignService financeWithdrawFeignService;
+
+    @PostMapping("/searcher/list")
+    public BaseResultDto searcherList(@RequestBody @Validated FinanceWithdrawSearchListEntity entity, CustomInfoEntity infoEntity) throws Exception {
+        entity.setCustomId(infoEntity.getId());
+        entity.setCom(1);
+        ResultWithPagerDto<FinanceWithdrawDto> resultWithPagerDto = financeWithdrawFeignService.searcherList(entity);
+        return resultWithPagerDto;
+    }
+
+}

+ 16 - 1
crm-custom/src/main/java/com/crm/custom/controller/GoldenOrderController.java

@@ -7,6 +7,7 @@ import com.crm.rely.backend.core.dto.base.ResultWithPagerDto;
 import com.crm.rely.backend.core.entity.base.SingleLongEntity;
 import com.crm.rely.backend.model.dto.golden.order.GoldenOrderListDto;
 import com.crm.rely.backend.model.entity.custom.info.CustomInfoEntity;
+import com.crm.rely.backend.model.entity.golden.order.GoldenOrderAddEntity;
 import com.crm.rely.backend.model.entity.golden.order.GoldenOrderSearchEntity;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
@@ -36,16 +37,30 @@ public class GoldenOrderController {
         return BaseResultDto.success();
     }
 
+
+    @PostMapping("/generated")
+    public BaseResultDto generated(@RequestBody @Validated GoldenOrderAddEntity entity, CustomInfoEntity infoEntity) throws Exception {
+        goldenOrderService.generated(entity, infoEntity);
+        return BaseResultDto.success();
+    }
+
     @PostMapping("/manager/search/list")
     @FeignClientAnnotation
     public ResultWithPagerDto<GoldenOrderListDto> pageList(@RequestBody GoldenOrderSearchEntity entity) throws Exception {
         return goldenOrderService.searchPageList(entity);
     }
 
+    @PostMapping("/manager/complete")
+    @FeignClientAnnotation
+    public BaseResultDto completeOrder(@RequestBody @Validated SingleLongEntity entity) throws Exception {
+        goldenOrderService.completeOrder(entity.getId());
+        return BaseResultDto.success();
+    }
+
     @PostMapping("/manager/cancel")
     @FeignClientAnnotation
     public BaseResultDto managerCancelOrder(@RequestBody @Validated SingleLongEntity entity) throws Exception {
-        goldenOrderService.cancelOrder(entity.getId());
+        //goldenOrderService.cancelOrder(entity.getId());
         return BaseResultDto.success();
     }
 

+ 3 - 0
crm-custom/src/main/java/com/crm/custom/dao/mapper/GoldenOrderMapper.java

@@ -2,6 +2,7 @@ package com.crm.custom.dao.mapper;
 
 import com.crm.rely.backend.model.dto.golden.order.GoldenOrderDetailsDto;
 import com.crm.rely.backend.model.entity.golden.order.GoldenOrderSearchEntity;
+import com.crm.rely.backend.model.pojo.table.GoldenOrderDetailsTable;
 import com.crm.rely.backend.model.pojo.table.GoldenOrderTable;
 import org.apache.ibatis.annotations.Param;
 
@@ -15,4 +16,6 @@ public interface GoldenOrderMapper {
 
     List<GoldenOrderDetailsDto> getListBySerial(@Param("serialList") List<String> serialList);
 
+    GoldenOrderDetailsTable getByCustomIdAndGoodsId(@Param("customId")Long customId, @Param("goodsId")Long goodsId);
+
 }

+ 25 - 0
crm-custom/src/main/java/com/crm/custom/dao/repository/FinanceDepositRepository.java

@@ -0,0 +1,25 @@
+package com.crm.custom.dao.repository;
+
+import com.crm.rely.backend.dao.repository.BaseRepository;
+import com.crm.rely.backend.model.pojo.table.FinanceDepositTable;
+import org.springframework.data.jpa.repository.Lock;
+import org.springframework.stereotype.Repository;
+
+import javax.persistence.LockModeType;
+
+/**
+ * @author: houn
+ */
+@Repository
+public interface FinanceDepositRepository extends BaseRepository<FinanceDepositTable> {
+
+    /**
+     * 根据入金流水号获取入金信息(加锁-行级锁)
+     *
+     * @param serial
+     * @return
+     */
+    @Lock(LockModeType.PESSIMISTIC_WRITE)
+    FinanceDepositTable findFirstBySerial(String serial);
+
+}

+ 13 - 0
crm-custom/src/main/java/com/crm/custom/dao/repository/GoldenOrderDetailsRepository.java

@@ -0,0 +1,13 @@
+package com.crm.custom.dao.repository;
+
+import com.crm.rely.backend.dao.repository.BaseRepository;
+import com.crm.rely.backend.model.pojo.table.GoldenOrderDetailsTable;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public interface GoldenOrderDetailsRepository extends BaseRepository<GoldenOrderDetailsTable> {
+
+    List<GoldenOrderDetailsTable> getBySerial(String serial);
+}

+ 17 - 0
crm-custom/src/main/java/com/crm/custom/service/FinanceWithdrawFeignService.java

@@ -0,0 +1,17 @@
+package com.crm.custom.service;
+
+import com.crm.rely.backend.core.dto.base.ResultWithPagerDto;
+import com.crm.rely.backend.model.dto.finance.withdraw.FinanceWithdrawDto;
+import com.crm.rely.backend.model.entity.finance.withdraw.*;
+import org.springframework.cloud.netflix.feign.FeignClient;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+@FeignClient(name = "GOLDEN-PAY-SERVICE", path = "/withdraw/custom")
+public interface FinanceWithdrawFeignService {
+
+    @PostMapping("/searcher/list")
+    ResultWithPagerDto<FinanceWithdrawDto> searcherList(@RequestBody @Validated FinanceWithdrawSearchListEntity entity) throws Exception;
+
+}

+ 9 - 0
crm-custom/src/main/java/com/crm/custom/service/GoldenOrderService.java

@@ -3,11 +3,20 @@ package com.crm.custom.service;
 import com.crm.rely.backend.core.dto.base.ResultWithPagerDto;
 import com.crm.rely.backend.core.exception.ServiceException;
 import com.crm.rely.backend.model.dto.golden.order.GoldenOrderListDto;
+import com.crm.rely.backend.model.entity.custom.info.CustomInfoEntity;
+import com.crm.rely.backend.model.entity.golden.order.GoldenOrderAddEntity;
 import com.crm.rely.backend.model.entity.golden.order.GoldenOrderSearchEntity;
 
 public interface GoldenOrderService {
 
     ResultWithPagerDto<GoldenOrderListDto> searchPageList(GoldenOrderSearchEntity entity) throws ServiceException;
 
+    void completeOrder(Long id) throws ServiceException;
+
     void cancelOrder(Long id) throws ServiceException;
+
+    void generated(GoldenOrderAddEntity entity, CustomInfoEntity infoEntity) throws ServiceException;
+
 }
+
+

+ 2 - 11
crm-custom/src/main/java/com/crm/custom/service/impl/CustomInfoServiceImpl.java

@@ -1,6 +1,5 @@
 package com.crm.custom.service.impl;
 
-import com.alibaba.fastjson.JSON;
 import com.crm.custom.dao.mapper.CustomFileDao;
 import com.crm.custom.dao.mapper.CustomInfoDao;
 import com.crm.custom.dao.repository.CustomInfoRepository;
@@ -8,7 +7,6 @@ import com.crm.custom.dao.repository.CustomLoginHistoryRepository;
 import com.crm.custom.dao.repository.UserInfoRepository;
 import com.crm.custom.service.*;
 import com.crm.custom.service.impl.base.BaseUploadServiceImpl;
-import com.crm.rely.backend.configuration.DynamicAsync;
 import com.crm.rely.backend.configuration.LocaleMessage;
 import com.crm.rely.backend.core.constant.*;
 import com.crm.rely.backend.core.entity.base.LongEntitys;
@@ -35,7 +33,6 @@ import com.google.common.base.Strings;
 import lombok.extern.log4j.Log4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.jms.annotation.JmsListener;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
@@ -73,9 +70,6 @@ public class CustomInfoServiceImpl extends BaseUploadServiceImpl implements Cust
     @Autowired
     private CustomFileDao customFileDao;
 
-    @Autowired
-    private CustomFileService customFileService;
-
     @Autowired
     private SysConfigService sysConfigService;
     @Autowired
@@ -565,11 +559,8 @@ public class CustomInfoServiceImpl extends BaseUploadServiceImpl implements Cust
 
         sysEmailSendEntity.setUsers(entity.getEmail());
         sysEmailSendEntity.setEmailSendEnum(EmailSendEnum.REGISTER_CODE);
-        if (CountryUtil.isCN(entity.getCountry())) {
-            sysEmailSendEntity.setTemplateName(GlobalSystemEmailCodeConstants.CUSTOM_REGISTER_SEND_EMAIL_CODE_CN);
-        } else {
-            sysEmailSendEntity.setTemplateName(GlobalSystemEmailCodeConstants.CUSTOM_REGISTER_SEND_EMAIL_CODE_EN);
-        }
+        sysEmailSendEntity.setTemplateName(GlobalSystemEmailCodeConstants.CUSTOM_REGISTER_SEND_EMAIL_CODE_CN);
+
         sysEmailSendEntity.setMap(map);
         sysEmailSendEntity.setMap(map);
 

+ 1 - 1
crm-custom/src/main/java/com/crm/custom/service/impl/GoldenGoodsVideoServiceImpl.java

@@ -55,7 +55,7 @@ public class GoldenGoodsVideoServiceImpl extends BaseUploadServiceImpl implement
         }
 
         Map<Long,GoldenGoodsTable> map = new HashMap<>();
-        if (infoEntity != null || infoEntity.getId() != null) {
+        if (infoEntity != null && infoEntity.getId() != null) {
             List<Long> goodsIds = new ArrayList<>();
             goodsIds.add(entity.getGoodsId());
             map =  goldenGoodsService.getCustomOrderGoods(goodsIds, infoEntity.getId());

+ 138 - 3
crm-custom/src/main/java/com/crm/custom/service/impl/GoldenOrderServiceImpl.java

@@ -1,22 +1,34 @@
 package com.crm.custom.service.impl;
 
 import com.crm.custom.dao.mapper.GoldenOrderMapper;
-import com.crm.custom.dao.repository.GoldenOrderRepository;
+import com.crm.custom.dao.repository.*;
 import com.crm.custom.service.GoldenOrderService;
 import com.crm.rely.backend.core.constant.Constants;
+import com.crm.rely.backend.core.constant.EmailSendEnum;
+import com.crm.rely.backend.core.constant.MapConstants;
 import com.crm.rely.backend.core.dto.base.PageDto;
 import com.crm.rely.backend.core.dto.base.ResultWithPagerDto;
+import com.crm.rely.backend.core.entity.system.email.SysEmailSendEntity;
 import com.crm.rely.backend.core.exception.ServiceException;
+import com.crm.rely.backend.model.constant.ConfigConstants;
+import com.crm.rely.backend.model.constant.EmailTemplateConstants;
 import com.crm.rely.backend.model.constant.PayConstants;
 import com.crm.rely.backend.model.dto.golden.order.GoldenOrderDetailsDto;
 import com.crm.rely.backend.model.dto.golden.order.GoldenOrderListDto;
+import com.crm.rely.backend.model.entity.custom.info.CustomInfoEntity;
+import com.crm.rely.backend.model.entity.golden.order.GoldenOrderAddEntity;
 import com.crm.rely.backend.model.entity.golden.order.GoldenOrderSearchEntity;
-import com.crm.rely.backend.model.pojo.table.GoldenOrderTable;
+import com.crm.rely.backend.model.pojo.table.*;
+import com.crm.rely.backend.service.EmailService;
+import com.crm.rely.backend.service.MqSendService;
+import com.crm.rely.backend.util.DateUtil;
+import com.crm.rely.backend.util.GetRandom;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
 import java.util.*;
 
 @Service
@@ -24,9 +36,21 @@ public class GoldenOrderServiceImpl implements GoldenOrderService {
 
     @Autowired
     private GoldenOrderMapper mapper;
-
     @Autowired
     private GoldenOrderRepository repository;
+    @Autowired
+    private CustomInfoRepository customInfoRepository;
+    @Autowired
+    private FinanceDepositRepository financeDepositRepository;
+    @Autowired
+    private GoldenOrderDetailsRepository goldenOrderDetailsRepository;
+    @Autowired
+    private GoldenGoodsRepository goldenGoodsRepository;
+    @Autowired
+    private MqSendService mqSendService;
+    @Autowired
+    private EmailService emailService;
+
 
     @Override
     public ResultWithPagerDto<GoldenOrderListDto> searchPageList(GoldenOrderSearchEntity entity) throws ServiceException {
@@ -69,6 +93,51 @@ public class GoldenOrderServiceImpl implements GoldenOrderService {
         return ResultWithPagerDto.success(pageDto, dtos);
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void completeOrder(Long id) throws ServiceException {
+        GoldenOrderTable table = repository.findFirstById(id);
+        if (table == null) {
+            throw ServiceException.exception(Constants.INFO_NOT_FOUND);
+        }
+        if (table.getStatus() != PayConstants.ORDER_UP_PAY_STATUS) {
+            throw ServiceException.exception("不能确认订单");
+        }
+
+        CustomInfoTable customTable =  customInfoRepository.findFirstById(table.getCustomId());
+        if (customTable == null) {
+            throw ServiceException.exception(Constants.INFO_NOT_FOUND);
+        }
+
+        FinanceDepositTable depositTable = financeDepositRepository.findFirstBySerial(table.getSerial());
+        if (depositTable == null) {
+            throw ServiceException.exception(Constants.INFO_NOT_FOUND);
+        }
+
+        table.setStatus(PayConstants.ORDER_PAY_STATUS);
+        table.setPayTime(new Date());
+        table.setModifyTime(new Date());
+        repository.save(table);
+
+        depositTable.setStatus(PayConstants.MANAGER_COMPLETED_STATUS);
+        depositTable.setModifyTime(new Date());
+        financeDepositRepository.save(depositTable);
+
+        BigDecimal totalSpendingAmount = customTable.getTotalSpendingAmount() == null ? BigDecimal.ZERO : customTable.getTotalSpendingAmount();
+        customTable.setTotalSpendingAmount(totalSpendingAmount.add(table.getAmount()));
+        customInfoRepository.save(customTable);
+
+        List<GoldenOrderDetailsTable> detailsTables =  goldenOrderDetailsRepository.getBySerial(table.getSerial());
+        for (GoldenOrderDetailsTable detailsTable : detailsTables) {
+            sendCustomGoldenOrderEmail(table.getPayName(),detailsTable.getDownload(),customTable.getEmail());
+        }
+
+        if (customTable.getTotalSpendingAmount().compareTo(new BigDecimal(5000)) >= 0) {
+            mqSendService.send(ConfigConstants.CUSTOM_REWARD_RECORD, customTable.getId());
+        }
+
+    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void cancelOrder(Long id) throws ServiceException {
@@ -86,11 +155,77 @@ public class GoldenOrderServiceImpl implements GoldenOrderService {
 
     }
 
+    @Override
+    public void generated(GoldenOrderAddEntity entity, CustomInfoEntity infoEntity) throws ServiceException {
+        GoldenGoodsTable goodsTable = goldenGoodsRepository.getFirstById(entity.getGoodsId());
+        if (goodsTable == null) {
+            throw ServiceException.exception(Constants.INFO_NOT_FOUND);
+        }
+        if (goodsTable.getGoodsPrice().compareTo(BigDecimal.ZERO) > 0) {
+            throw ServiceException.exception("请下单购买!");
+        }
+
+        GoldenOrderDetailsTable details = mapper.getByCustomIdAndGoodsId(infoEntity.getId(),entity.getGoodsId());
+        if (details != null) {
+            throw ServiceException.exception("课程已购买");
+        }
+
+        String orderNo = GetRandom.getOrderNo(PayConstants.DEPOSIT_HEAD);
+        GoldenOrderTable table = new GoldenOrderTable();
+        table.setSerial(orderNo);
+        table.setCId(infoEntity.getCId());
+        table.setCustomId(infoEntity.getId());
+        table.setStatus(PayConstants.ORDER_PAY_STATUS);
+        table.setAmount(BigDecimal.ZERO);
+        table.setCurrency("USD");
+        table.setTransformAmount(BigDecimal.ZERO);
+        table.setTransformCurrency("USD");
+        table.setPayName(infoEntity.getName());
+        table.setPayPhone(infoEntity.getPhone());
+        table.setPayTime(new Date());
+        table.setAddTime(new Date());
+        repository.save(table);
+
+        GoldenOrderDetailsTable detailsTable = new GoldenOrderDetailsTable();
+        BeanUtils.copyProperties(goodsTable, detailsTable);
+        detailsTable.setId(null);
+        detailsTable.setGoodsId(goodsTable.getId());
+        detailsTable.setSerial(orderNo);
+        detailsTable.setCustomId(infoEntity.getId());
+        goldenOrderDetailsRepository.save(detailsTable);
+
+        sendCustomGoldenOrderEmail(infoEntity.getName(), detailsTable.getDownload(), infoEntity.getEmail());
+
+    }
+
     private GoldenOrderListDto transformSearchListDto(GoldenOrderTable table) {
         GoldenOrderListDto dto = new GoldenOrderListDto();
         BeanUtils.copyProperties(table, dto);
         return dto;
     }
 
+    private void sendCustomGoldenOrderEmail(String name, String download, String email) throws ServiceException {
+
+        //构建map 用于后面邮件模版替换
+        Map<String, String> map = new HashMap<>(3);
+
+        map.put(MapConstants.NAME, name);
+
+        map.put(ConfigConstants.DOWNLOAD_URL, download);
+        map.put(MapConstants.DATE_TIME, DateUtil.formatTime(new Date()));
+
+        SysEmailSendEntity sysEmailSendEntity = new SysEmailSendEntity();
+        sysEmailSendEntity.setSubject("Trading Education");
+        sysEmailSendEntity.setEmailSendEnum(EmailSendEnum.CUSTOM_ORDER_SUCCESS);
+        sysEmailSendEntity.setMap(map);
+        sysEmailSendEntity.setTemplateName(EmailTemplateConstants.CUSTOM_ORDER_SUCCESS_CN);
+
+        sysEmailSendEntity.setUsers(email);
+        try {
+            emailService.sendEmail(sysEmailSendEntity);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
 
 }

+ 0 - 2
crm-custom/src/main/resources/application-test.yml

@@ -1,5 +1,3 @@
-server:
-  port: 10000
 spring:
   datasource:
     driver-class-name: com.mysql.jdbc.Driver

+ 44 - 0
crm-custom/src/main/resources/mapper/GoldenOrder.xml

@@ -11,9 +11,27 @@
             <if test="customId!=null">
                 and der.`custom_id` = #{customId}
             </if>
+            <if test="cId!=null">
+                and der.`c_id` = #{cId}
+            </if>
+            <if test="status!=null">
+                and der.`c_id` = #{status}
+            </if>
             <if test="serial!=null and serial!=''">
                 and der.serial = #{serial}
             </if>
+            <if test="channelCode!=null and channelCode!=''">
+                and der.channel_code = #{channelCode}
+            </if>
+            <if test="payName!=null and payName!=''">
+                and der.pay_name like concat('%',#{payName},'%')
+            </if>
+            <if test="startDate != null">
+                and der.add_time <![CDATA[ >= ]]> #{startDate}
+            </if>
+            <if test="endDate != null">
+                and der.add_time <![CDATA[ <= ]]> #{endDate}
+            </if>
         </where>
     </select>
 
@@ -24,9 +42,27 @@
             <if test="customId!=null">
                 and der.`custom_id` = #{customId}
             </if>
+            <if test="cId!=null">
+                and der.`c_id` = #{cId}
+            </if>
+            <if test="status!=null">
+                and der.`c_id` = #{status}
+            </if>
             <if test="serial!=null and serial!=''">
                 and der.serial = #{serial}
             </if>
+            <if test="channelCode!=null and channelCode!=''">
+                and der.channel_code = #{channelCode}
+            </if>
+            <if test="payName!=null and payName!=''">
+                and der.pay_name like concat('%',#{payName},'%')
+            </if>
+            <if test="startDate != null">
+                and der.add_time <![CDATA[ >= ]]> #{startDate}
+            </if>
+            <if test="endDate != null">
+                and der.add_time <![CDATA[ <= ]]> #{endDate}
+            </if>
         </where>
         order by id desc
         <if test="page != null">
@@ -43,4 +79,12 @@
         </foreach>
     </select>
 
+    <select id="getByCustomIdAndGoodsId" resultType="com.crm.rely.backend.model.pojo.table.GoldenOrderDetailsTable">
+        SELECT *
+        FROM golden_order_details der
+        left join golden_order gor on der.serial = gor.serial
+        where gor.`status` in (1,2) and der.custom_id = #{customId}
+        and der.goods_id = #{goodsId} limit 1
+    </select>
+
 </mapper>

+ 1 - 1
crm-manager/pom.xml

@@ -5,7 +5,7 @@
 
     <groupId>com.crm.manager</groupId>
     <artifactId>com-crm-manager</artifactId>
-    <version>1.1.0</version>
+    <version>1.0.0</version>
     <packaging>jar</packaging>
 
     <name>com_crm_manager</name>

+ 6 - 0
crm-manager/src/main/java/com/crm/manager/controller/FinanceWithdrawController.java

@@ -278,6 +278,12 @@ public class FinanceWithdrawController {
         return financeWithdrawFeignService.remitChannel();
     }
 
+    @RequestMapping("/api/info")
+    public BaseResultDto withdrawInfo(@RequestBody FinanceWithdrawInfoEntity entity) throws Exception {
+        entity.setWithdrawInfoType(1);
+        return financeWithdrawApiFeignService.withdrawInfo(entity.getWithdrawInfoUrl(), entity);
+    }
+
     @RequestMapping("/withdrawapi")
     public BaseResultDto withdraw(@RequestBody Map<String, Object> params) throws Exception {
         String contextPath = params.get("withdrawUrl").toString();

+ 40 - 0
crm-manager/src/main/java/com/crm/manager/controller/GoldenOrderController.java

@@ -0,0 +1,40 @@
+package com.crm.manager.controller;
+
+import com.crm.manager.service.golden.GoldenOrderFeignService;
+import com.crm.rely.backend.core.dto.base.BaseResultDto;
+import com.crm.rely.backend.core.dto.base.ResultWithPagerDto;
+import com.crm.rely.backend.core.entity.base.SingleLongEntity;
+import com.crm.rely.backend.model.dto.golden.order.GoldenOrderListDto;
+import com.crm.rely.backend.model.entity.golden.order.GoldenOrderSearchEntity;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/order")
+public class GoldenOrderController {
+
+    @Autowired
+    private GoldenOrderFeignService goldenOrderService;
+
+    @PostMapping("/search/list")
+    public ResultWithPagerDto<GoldenOrderListDto> pageList(@RequestBody GoldenOrderSearchEntity entity) throws Exception {
+        return goldenOrderService.searchPageList(entity);
+    }
+
+    @PostMapping("/complete")
+    public BaseResultDto completeOrder(@RequestBody @Validated SingleLongEntity entity) throws Exception {
+
+        return goldenOrderService.completeOrder(entity);
+    }
+
+    @PostMapping("/cancel")
+    public BaseResultDto cancelOrder(@RequestBody @Validated SingleLongEntity entity) throws Exception {
+
+        return goldenOrderService.cancelOrder(entity);
+    }
+
+}

+ 28 - 0
crm-manager/src/main/java/com/crm/manager/service/golden/GoldenOrderFeignService.java

@@ -0,0 +1,28 @@
+package com.crm.manager.service.golden;
+
+import com.crm.rely.backend.core.dto.base.BaseResultDto;
+import com.crm.rely.backend.core.dto.base.ResultWithPagerDto;
+import com.crm.rely.backend.core.entity.base.SingleLongEntity;
+import com.crm.rely.backend.model.dto.golden.order.GoldenOrderListDto;
+import com.crm.rely.backend.model.entity.golden.order.GoldenOrderSearchEntity;
+import org.springframework.cloud.netflix.feign.FeignClient;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+/**
+ * Created by max on 2020/6/17.
+ */
+@FeignClient(name = "GOLDEN-CUSTOM-SERVICE", path = "/order/manager")
+public interface GoldenOrderFeignService {
+
+    @PostMapping("/search/list")
+    ResultWithPagerDto<GoldenOrderListDto> searchPageList(GoldenOrderSearchEntity entity) throws Exception;
+
+    @PostMapping("/complete")
+    BaseResultDto completeOrder(SingleLongEntity entity) throws Exception;
+
+    @PostMapping("/cancel")
+    BaseResultDto cancelOrder(@RequestBody @Validated SingleLongEntity entity) throws Exception;
+
+}

+ 1 - 0
crm-manager/src/main/resources/application-test.yml

@@ -24,6 +24,7 @@ login:
 web:
   upload-path: ../upload
   export-path: C:\server\cwg_crm\export
+  front-path: D:/server/golden/manager-service/front
 ribbon:
   ReadTimeout: 60000
   ConnectTimeout: 60000

+ 4 - 2
crm-model/src/main/java/com/crm/rely/backend/model/dto/golden/order/GoldenOrderListDto.java

@@ -11,6 +11,8 @@ public class GoldenOrderListDto {
 
     private Long id;
 
+    private Long cId;
+
     /**
      * 流水号
      */
@@ -21,7 +23,7 @@ public class GoldenOrderListDto {
     private String currency;
 
     /**
-     * 际换算后金额
+     * 际换算后金额
      */
     private BigDecimal transformAmount;
 
@@ -31,7 +33,7 @@ public class GoldenOrderListDto {
     private String transformCurrency;
 
     /**
-     * 1:未支付 2已支付 3已拒绝
+     * status 1:未支付 2:已支付 3:支付失败 4:已过期 5:已取消
      */
     private Integer status;
 

+ 11 - 0
crm-model/src/main/java/com/crm/rely/backend/model/entity/golden/order/GoldenOrderAddEntity.java

@@ -0,0 +1,11 @@
+package com.crm.rely.backend.model.entity.golden.order;
+
+import com.crm.rely.backend.core.entity.base.BaseAddEntity;
+import lombok.Data;
+
+@Data
+public class GoldenOrderAddEntity extends BaseAddEntity {
+
+    private Long goodsId;
+
+}

+ 26 - 0
crm-model/src/main/java/com/crm/rely/backend/model/entity/golden/order/GoldenOrderSearchEntity.java

@@ -3,6 +3,8 @@ package com.crm.rely.backend.model.entity.golden.order;
 import com.crm.rely.backend.core.entity.base.BaseSearchPageEntity;
 import lombok.Data;
 
+import java.util.Date;
+
 @Data
 public class GoldenOrderSearchEntity extends BaseSearchPageEntity {
 
@@ -10,4 +12,28 @@ public class GoldenOrderSearchEntity extends BaseSearchPageEntity {
 
     private Long customId;
 
+    private Long cId;
+
+    /**
+     * 1:未支付 2:已支付 3:支付失败 4:已过期 5:已取消
+     */
+    private Integer status;
+
+    /**
+     * 付款人姓名
+     */
+    private String payName;
+
+    /**
+     * 付款人电话
+     */
+    private String payPhone;
+
+    private String channelCode;
+
+    private Date startDate;
+
+    private Date endDate;
+
+
 }

+ 2 - 0
crm-model/src/main/java/com/crm/rely/backend/model/pojo/table/GoldenOrderTable.java

@@ -20,6 +20,8 @@ public class GoldenOrderTable extends BaseTable {
 
     private Long customId;
 
+    private Long cId;
+
     private BigDecimal amount;
 
     private String currency;

+ 11 - 0
crm-pay/src/main/java/com/crm/pay/controller/FinanceWithdrawController.java

@@ -387,6 +387,17 @@ public class FinanceWithdrawController {
         return BaseResultDto.success();
     }
 
+    @PostMapping("/custom/searcher/list")
+    @FeignClientAnnotation
+    public ResultWithPagerDto<FinanceWithdrawDto> customSearcherList(@RequestBody @Validated FinanceWithdrawSearchListEntity entity) throws Exception {
+        if (entity.getChannelCodes() == null || entity.getChannelCodes().size() <= 0) {
+            entity.setChannelCodes(null);
+        }
+        ResultWithPagerDto<FinanceWithdrawDto> resultWithPagerDto = financeWithdrawService.searchList(entity);
+        return resultWithPagerDto;
+    }
+
+
     @PostMapping("/manager/searcher/list")
     @FeignClientAnnotation
     public ResultWithPagerDto<FinanceWithdrawDto> searcherList(@RequestBody @Validated FinanceWithdrawSearchListEntity entity) throws Exception {

+ 2 - 0
crm-pay/src/main/java/com/crm/pay/controller/base/BasePayCloseFunctionController.java

@@ -82,6 +82,8 @@ public abstract class BasePayCloseFunctionController {
         financeDepositAddEntity.setPayType(payType);
         financeDepositAddEntity.setActivityDeposit(activity);
         financeDepositAddEntity.setGoodIds(entity.getGoodIds());
+        financeDepositAddEntity.setPayName(entity.getPayName());
+        financeDepositAddEntity.setPayPhone(entity.getPayPhone());
 
         if (entity != null) {
             if (!Strings.isNullOrEmpty(entity.getPromoCode())) {

+ 10 - 15
crm-pay/src/main/java/com/crm/pay/service/impl/FinanceDepositServiceImpl.java

@@ -329,7 +329,7 @@ public class FinanceDepositServiceImpl implements FinanceDepositService {
 
         GoldenOrderTable order = saveGoldenOrder(balanceSaveEntity, goodsTables, financeDepositTable);
 
-        //mqSendService.send(PayConstants.ORDER_DEPOSIT_EXPIRE, order, channel.getExpire() * 1000);
+        mqSendService.send(PayConstants.ORDER_DEPOSIT_EXPIRE, order, channel.getExpire() * 1000);
 
         return financeDepositTable;
     }
@@ -339,10 +339,11 @@ public class FinanceDepositServiceImpl implements FinanceDepositService {
         GoldenOrderTable order = new GoldenOrderTable();
         order.setSerial(financeDepositTable.getSerial());
         order.setCustomId(financeDepositTable.getCustomId());
+        order.setCId(financeDepositTable.getCId());
         order.setAmount(financeDepositTable.getAmount());
         order.setCurrency(financeDepositTable.getCurrency());
-        order.setTransformAmount(financeDepositTable.getAmount());
-        order.setTransformCurrency(financeDepositTable.getCurrency());
+        order.setTransformAmount(financeDepositTable.getTransformAmount());
+        order.setTransformCurrency(financeDepositTable.getTransformCurrency());
         order.setAddTime(financeDepositTable.getAddTime());
         order.setStatus(PayConstants.ORDER_UP_PAY_STATUS);
         order.setPayName(balanceSaveEntity.getPayName());
@@ -356,6 +357,7 @@ public class FinanceDepositServiceImpl implements FinanceDepositService {
         for (GoldenGoodsTable goldenGoodsTable : goodsTables) {
             GoldenOrderDetailsTable detailsTable = new GoldenOrderDetailsTable();
             BeanUtils.copyProperties(goldenGoodsTable, detailsTable);
+            detailsTable.setId(null);
             detailsTable.setGoodsId(goldenGoodsTable.getId());
             detailsTable.setSerial(financeDepositTable.getSerial());
             detailsTable.setCustomId(financeDepositTable.getCustomId());
@@ -619,7 +621,7 @@ public class FinanceDepositServiceImpl implements FinanceDepositService {
                 if (PayConstants.CALLBACE_SUCCESS_STATUS.equals(financeDepositTable.getCallbackStatus())) {
                     List<GoldenOrderDetailsTable> detailsTables =  goldenOrderDetailsRepository.getBySerial(financeDepositTable.getSerial());
                     for (GoldenOrderDetailsTable detailsTable : detailsTables) {
-                        sendCustomGoldenOrderEmail(financeDepositTable,detailsTable,customTable.getEmail());
+                        sendCustomGoldenOrderEmail(orderTable.getPayName(),detailsTable.getDownload(),customTable.getEmail());
                     }
 
                 }
@@ -810,33 +812,26 @@ public class FinanceDepositServiceImpl implements FinanceDepositService {
         }
     }
 
-    private void sendCustomGoldenOrderEmail(FinanceDepositTable table, GoldenOrderDetailsTable detailsTable,String email) throws ServiceException {
+    private void sendCustomGoldenOrderEmail(String name, String download,String email) throws ServiceException {
 
         //构建map 用于后面邮件模版替换
         Map<String, String> map = new HashMap<>(3);
-        String name = table.getName();
 
         map.put(MapConstants.NAME, name);
 
-        map.put(ConfigConstants.DOWNLOAD_URL, detailsTable.getDownload());
+        map.put(ConfigConstants.DOWNLOAD_URL, download);
         map.put(MapConstants.DATE_TIME, DateUtil.formatTime(new Date()));
 
         SysEmailSendEntity sysEmailSendEntity = new SysEmailSendEntity();
         sysEmailSendEntity.setSubject("Trading Education");
         sysEmailSendEntity.setEmailSendEnum(EmailSendEnum.CUSTOM_ORDER_SUCCESS);
         sysEmailSendEntity.setMap(map);
-        if (CountryUtil.isCN(table.getCountry())) {
-            sysEmailSendEntity.setTemplateName(EmailTemplateConstants.CUSTOM_ORDER_SUCCESS_CN);
-        } else {
-            sysEmailSendEntity.setTemplateName(EmailTemplateConstants.CUSTOM_ORDER_SUCCESS_EN);
-        }
+        sysEmailSendEntity.setTemplateName(EmailTemplateConstants.CUSTOM_ORDER_SUCCESS_CN);
+
 
         sysEmailSendEntity.setUsers(email);
         try {
             emailService.sendEmail(sysEmailSendEntity);
-            WebNoticeRecordAndEmailMqEntity mqEntity = new WebNoticeRecordAndEmailMqEntity(sysEmailSendEntity,
-                    table.getCId(), table.getCustomId());
-            mqSendService.send(Constants.WEB_NOTICE_PUT_RECORD, mqEntity);
         } catch (Exception e) {
             e.printStackTrace();
         }

+ 1 - 1
crm-pay/src/main/java/com/crm/pay/service/impl/FinanceWithdrawServiceImpl.java

@@ -182,7 +182,7 @@ public class FinanceWithdrawServiceImpl implements FinanceWithdrawService {
         financeWithdrawTable.setCountry(customInfoTable.getCountry());
         financeWithdrawRepository.save(financeWithdrawTable);
 
-        customInfoTable.setBalance(customInfoTable.getBalance().divide(entity.getAmount()));
+        customInfoTable.setBalance(customInfoTable.getBalance().subtract(entity.getAmount()));
         customInfoRepository.save(customInfoTable);
 
         return BaseResultDto.success(Constants.SUCCESS, financeWithdrawTable.getSerial());

+ 0 - 2
crm-pay/src/main/resources/application-test.yml

@@ -1,5 +1,3 @@
-server:
-  port: 9004
 spring:
   datasource:
     driver-class-name: com.mysql.jdbc.Driver