Browse Source

Merge branch 'master' of git_lijun/caimei-mall-admin into master

李俊 5 years ago
parent
commit
b880a72fa4
100 changed files with 10066 additions and 5 deletions
  1. 43 1
      pom.xml
  2. 6 0
      src/main/java/com/caimei/CaimeiMallAdminApplication.java
  3. 166 0
      src/main/java/com/caimei/modules/club/controller/CmOperationUserController.java
  4. 229 0
      src/main/java/com/caimei/modules/club/controller/CmUserOrganizeController.java
  5. 21 0
      src/main/java/com/caimei/modules/club/dao/CmOperationUserDao.java
  6. 18 0
      src/main/java/com/caimei/modules/club/dao/CmUserDao.java
  7. 25 0
      src/main/java/com/caimei/modules/club/dao/CmUserOrganizeDao.java
  8. 16 0
      src/main/java/com/caimei/modules/club/dao/NewCmClubDao.java
  9. 47 0
      src/main/java/com/caimei/modules/club/entity/City.java
  10. 204 0
      src/main/java/com/caimei/modules/club/entity/CmOperationUser.java
  11. 118 0
      src/main/java/com/caimei/modules/club/entity/CmProductSn.java
  12. 800 0
      src/main/java/com/caimei/modules/club/entity/CmUser.java
  13. 109 0
      src/main/java/com/caimei/modules/club/entity/CmUserOrganize.java
  14. 894 0
      src/main/java/com/caimei/modules/club/entity/NewCmClub.java
  15. 154 0
      src/main/java/com/caimei/modules/club/entity/Page.java
  16. 38 0
      src/main/java/com/caimei/modules/club/entity/Province.java
  17. 65 0
      src/main/java/com/caimei/modules/club/entity/Town.java
  18. 17 0
      src/main/java/com/caimei/modules/club/service/CmOperationUserService.java
  19. 21 0
      src/main/java/com/caimei/modules/club/service/CmUserOrganizeService.java
  20. 15 0
      src/main/java/com/caimei/modules/club/service/CmUserService.java
  21. 12 0
      src/main/java/com/caimei/modules/club/service/NewCmClubService.java
  22. 71 0
      src/main/java/com/caimei/modules/club/service/impl/CmOperationUserServiceImpl.java
  23. 54 0
      src/main/java/com/caimei/modules/club/service/impl/CmUserOrganizeServiceImpl.java
  24. 35 0
      src/main/java/com/caimei/modules/club/service/impl/CmUserServiceImpl.java
  25. 36 0
      src/main/java/com/caimei/modules/club/service/impl/NewCmClubServiceImpl.java
  26. 49 0
      src/main/java/com/caimei/modules/fastDFS/FastDFSClient.java
  27. 49 0
      src/main/java/com/caimei/modules/order/controller/CmOrderRemarkController.java
  28. 85 0
      src/main/java/com/caimei/modules/order/controller/CmReturnedPurchaseController.java
  29. 234 0
      src/main/java/com/caimei/modules/order/controller/OrganizeOrderController.java
  30. 11 0
      src/main/java/com/caimei/modules/order/dao/BpClauseDao.java
  31. 13 0
      src/main/java/com/caimei/modules/order/dao/CmDiscernReceiptDao.java
  32. 18 0
      src/main/java/com/caimei/modules/order/dao/CmOrderRemarkDao.java
  33. 8 0
      src/main/java/com/caimei/modules/order/dao/CmPayShopRecordDao.java
  34. 12 0
      src/main/java/com/caimei/modules/order/dao/CmProductSnDao.java
  35. 13 0
      src/main/java/com/caimei/modules/order/dao/CmReceiptOrderRelationDao.java
  36. 16 0
      src/main/java/com/caimei/modules/order/dao/CmReturnedPurchaseDao.java
  37. 16 0
      src/main/java/com/caimei/modules/order/dao/CmReturnedPurchaseProductDao.java
  38. 12 0
      src/main/java/com/caimei/modules/order/dao/LogisticsBatchDao.java
  39. 12 0
      src/main/java/com/caimei/modules/order/dao/LogisticsInformationDao.java
  40. 12 0
      src/main/java/com/caimei/modules/order/dao/LogisticsRecordDao.java
  41. 10 0
      src/main/java/com/caimei/modules/order/dao/NewOrderConfigDao.java
  42. 13 0
      src/main/java/com/caimei/modules/order/dao/NewOrderDao.java
  43. 19 0
      src/main/java/com/caimei/modules/order/dao/NewOrderProductDao.java
  44. 15 0
      src/main/java/com/caimei/modules/order/dao/NewShopOrderDao.java
  45. 9 0
      src/main/java/com/caimei/modules/order/dao/OrderInvoiceDao.java
  46. 9 0
      src/main/java/com/caimei/modules/order/dao/OrderUserInfoDao.java
  47. 8 0
      src/main/java/com/caimei/modules/order/dao/ProductDao.java
  48. 63 0
      src/main/java/com/caimei/modules/order/entity/BpClause.java
  49. 80 0
      src/main/java/com/caimei/modules/order/entity/CmOrderRemark.java
  50. 86 0
      src/main/java/com/caimei/modules/order/entity/CmReceiptOrderRelation.java
  51. 430 0
      src/main/java/com/caimei/modules/order/entity/CmReturnedPurchase.java
  52. 281 0
      src/main/java/com/caimei/modules/order/entity/CmReturnedPurchaseProduct.java
  53. 98 0
      src/main/java/com/caimei/modules/order/entity/LogisticsBatch.java
  54. 30 0
      src/main/java/com/caimei/modules/order/entity/LogisticsDetailVo.java
  55. 39 0
      src/main/java/com/caimei/modules/order/entity/LogisticsInfoVo.java
  56. 139 0
      src/main/java/com/caimei/modules/order/entity/LogisticsInformation.java
  57. 93 0
      src/main/java/com/caimei/modules/order/entity/LogisticsRecord.java
  58. 766 0
      src/main/java/com/caimei/modules/order/entity/NewOrder.java
  59. 33 0
      src/main/java/com/caimei/modules/order/entity/NewOrderConfig.java
  60. 780 0
      src/main/java/com/caimei/modules/order/entity/NewOrderProduct.java
  61. 843 0
      src/main/java/com/caimei/modules/order/entity/NewShopOrder.java
  62. 127 0
      src/main/java/com/caimei/modules/order/entity/OrderInvoice.java
  63. 152 0
      src/main/java/com/caimei/modules/order/entity/OrderUserInfo.java
  64. 43 0
      src/main/java/com/caimei/modules/order/entity/ProductType.java
  65. 106 0
      src/main/java/com/caimei/modules/order/entity/ShopOrderReturned.java
  66. 9 0
      src/main/java/com/caimei/modules/order/service/BpClauseService.java
  67. 5 0
      src/main/java/com/caimei/modules/order/service/CmDiscernReceiptService.java
  68. 11 0
      src/main/java/com/caimei/modules/order/service/CmOrderRemarkService.java
  69. 11 0
      src/main/java/com/caimei/modules/order/service/CmReceiptOrderRelationService.java
  70. 13 0
      src/main/java/com/caimei/modules/order/service/CmReturnedPurchaseService.java
  71. 7 0
      src/main/java/com/caimei/modules/order/service/NewOrderConfigService.java
  72. 10 0
      src/main/java/com/caimei/modules/order/service/NewOrderService.java
  73. 12 0
      src/main/java/com/caimei/modules/order/service/NewShopOrderService.java
  74. 7 0
      src/main/java/com/caimei/modules/order/service/OrderUserInfoService.java
  75. 20 0
      src/main/java/com/caimei/modules/order/service/impl/BpClauseServiceImpl.java
  76. 18 0
      src/main/java/com/caimei/modules/order/service/impl/CmDiscernReceiptServiceImpl.java
  77. 25 0
      src/main/java/com/caimei/modules/order/service/impl/CmOrderRemarkServiceImpl.java
  78. 30 0
      src/main/java/com/caimei/modules/order/service/impl/CmReceiptOrderRelationServiceImpl.java
  79. 125 0
      src/main/java/com/caimei/modules/order/service/impl/CmReturnedPurchaseServiceImpl.java
  80. 19 0
      src/main/java/com/caimei/modules/order/service/impl/NewOrderConfigServiceImpl.java
  81. 192 0
      src/main/java/com/caimei/modules/order/service/impl/NewOrderServiceImpl.java
  82. 85 0
      src/main/java/com/caimei/modules/order/service/impl/NewShopOrderServiceImpl.java
  83. 18 0
      src/main/java/com/caimei/modules/order/service/impl/OrderUserInfoServiceImpl.java
  84. 235 0
      src/main/java/com/caimei/modules/products/controller/CmMallOrganizeProductsController.java
  85. 170 0
      src/main/java/com/caimei/modules/products/controller/CmMallProductsClassifyController.java
  86. 31 0
      src/main/java/com/caimei/modules/products/dao/CmMallOrganizeProductsDao.java
  87. 27 0
      src/main/java/com/caimei/modules/products/dao/CmMallProductLadderPriceDao.java
  88. 27 0
      src/main/java/com/caimei/modules/products/dao/CmMallProductsClassifyDao.java
  89. 263 0
      src/main/java/com/caimei/modules/products/entity/CmMallOrganizeProducts.java
  90. 97 0
      src/main/java/com/caimei/modules/products/entity/CmMallPageModules.java
  91. 62 0
      src/main/java/com/caimei/modules/products/entity/CmMallProductLadderPrice.java
  92. 123 0
      src/main/java/com/caimei/modules/products/entity/CmMallProductsClassify.java
  93. 30 0
      src/main/java/com/caimei/modules/products/service/CmMallOrganizeProductsService.java
  94. 21 0
      src/main/java/com/caimei/modules/products/service/CmMallProductsClassifyService.java
  95. 143 0
      src/main/java/com/caimei/modules/products/service/impl/CmMallOrganizeProductsServiceImpl.java
  96. 71 0
      src/main/java/com/caimei/modules/products/service/impl/CmMallProductsClassifyServiceImpl.java
  97. 3 3
      src/main/java/com/caimei/modules/shiro/auth/AuthFilter.java
  98. 2 1
      src/main/java/com/caimei/modules/shiro/auth/AuthRealm.java
  99. 34 0
      src/main/java/com/caimei/modules/shiro/auth/ShiroConfig.java
  100. 64 0
      src/main/java/com/caimei/modules/shiro/controller/HomePageController.java

+ 43 - 1
pom.xml

@@ -38,6 +38,11 @@
             <artifactId>mybatis-spring-boot-starter</artifactId>
             <version>1.3.1</version>
         </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <optional>true</optional>
+        </dependency>
 
         <!-- mysql的依赖 -->
         <dependency>
@@ -103,6 +108,43 @@
             <version>2.3</version>
         </dependency>
 
+        <!--  jsoup 对 HTML 文档进行解析和操作 -->
+        <dependency>
+            <groupId>org.jsoup</groupId>
+            <artifactId>jsoup</artifactId>
+            <version>1.9.2</version>
+        </dependency>
+
+        <!--短信-->
+        <dependency>
+            <groupId>caimei</groupId>
+            <artifactId>smsClient</artifactId>
+            <version>1.0</version>
+        </dependency>
+
+        <!--dfs-->
+        <dependency>
+            <groupId>com.github.tobato</groupId>
+            <artifactId>fastdfs-client</artifactId>
+            <version>1.26.1-RELEASE</version>
+        </dependency>
+
+        <!--junit-->
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.12</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-test</artifactId>
+            <version>4.3.7.RELEASE</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-test</artifactId>
+            <version>1.5.2.RELEASE</version>
+        </dependency>
     </dependencies>
 
     <profiles>
@@ -163,4 +205,4 @@
             </plugin>
         </plugins>
     </build>
-</project>
+</project>

+ 6 - 0
src/main/java/com/caimei/CaimeiMallAdminApplication.java

@@ -1,9 +1,15 @@
 package com.caimei;
 
+import com.github.tobato.fastdfs.FdfsClientConfig;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.EnableMBeanExport;
+import org.springframework.context.annotation.Import;
+import org.springframework.jmx.support.RegistrationPolicy;
 
 @SpringBootApplication
+@Import(FdfsClientConfig.class)
+@EnableMBeanExport(registration = RegistrationPolicy.IGNORE_EXISTING)
 public class CaimeiMallAdminApplication {
 
     public static void main(String[] args) {

+ 166 - 0
src/main/java/com/caimei/modules/club/controller/CmOperationUserController.java

@@ -0,0 +1,166 @@
+package com.caimei.modules.club.controller;
+
+import com.caimei.modules.club.entity.CmOperationUser;
+import com.caimei.modules.club.entity.NewCmClub;
+import com.caimei.modules.club.entity.Page;
+import com.caimei.modules.club.service.CmOperationUserService;
+import com.caimei.modules.club.service.NewCmClubService;
+import com.caimei.utils.JsonModel;
+import com.caimei.utils.RandomCodeGenerator;
+import com.caimei.utils.SMSUtils;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.util.StringUtil;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.thymeleaf.util.StringUtils;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Random;
+
+/**
+ * 商城运营人员Controller
+ *
+ * @author lijun
+ * @version 2019-11-22
+ */
+@Controller
+@RequestMapping(value = "/user/cmOperationUser")
+public class CmOperationUserController {
+    @Autowired
+    private CmOperationUserService cmOperationUserService;
+    @Autowired
+    private NewCmClubService newCmClubService;
+
+    /**
+     * 查看运营人员
+     */
+    @ResponseBody
+    @RequestMapping("/list")
+    public JsonModel list(CmOperationUser cmOperationUser, Page page) {
+        PageHelper.startPage(page.getIndex(), page.getPageSize());
+        List<CmOperationUser> operationUserList = cmOperationUserService.findList(cmOperationUser);
+        Page<CmOperationUser> userPage = new Page<>(operationUserList);
+        return JsonModel.newInstance().success(userPage);
+    }
+
+    /**
+     * 添加运营人员
+     *
+     * @param cmOperationUser
+     * @return
+     */
+    @ResponseBody
+    @RequestMapping(value = "save", method = RequestMethod.POST)
+    public JsonModel save(@RequestBody CmOperationUser cmOperationUser) {
+        JsonModel jsonModel = JsonModel.newInstance();
+        //判断该运营人手机号是否已存在
+        List<CmOperationUser> listBuyBindMobile1 = cmOperationUserService.findListBuyBindMobile(cmOperationUser);
+        if (CollectionUtils.isNotEmpty(listBuyBindMobile1) && listBuyBindMobile1.size() > 0) {
+            return jsonModel.error("该手机号码已被使用");
+        }
+        Date date = new Date();
+        if (cmOperationUser.getConfigFlag().equals("2")) {//保存生成邀请码
+            //生成随机码6位
+            Integer flag = getInvitationCode();
+            cmOperationUser.setInvitationCode(String.valueOf(flag));
+            cmOperationUser.setInvitationCodeTime(date);
+            cmOperationUser.setStatus("1");
+            //发送短信
+            String clubID = cmOperationUser.getClubID();
+            NewCmClub newCmClub = newCmClubService.findClubById(Integer.parseInt(clubID));
+            String clubName = "";
+            if (null != newCmClub) {
+                clubName = newCmClub.getName();
+            }
+            String mobile = cmOperationUser.getMobile();
+            if (StringUtil.isNotEmpty(mobile)) {
+                SMSUtils.sendSms(mobile, "欢迎加入" + clubName + ",您的邀请码为:" + flag + ",您可在微信搜索“星范采购商城”小程序,输入邀请码进行登录。");
+            }
+        }
+        if (cmOperationUser.getId() == null) {//新增
+            cmOperationUser.setAccount(cmOperationUser.getMobile() + RandomCodeGenerator.generateAccount(2));
+            cmOperationUser.setStatus("1");
+        }
+        cmOperationUser.setUpdateTime(date);
+        cmOperationUser.setDelFlag("0");
+        cmOperationUser.setAddTime(date);
+        cmOperationUserService.save(cmOperationUser);
+        return jsonModel.success();
+    }
+
+    /**
+     * 验证获取不重复的邀请码
+     *
+     * @return
+     */
+    public Integer getInvitationCode() {
+        int flag = new Random().nextInt(999999);
+        if (flag < 100000) {
+            flag += 100000;
+        }
+        //判断生成随机码是否和数据库有重复
+        CmOperationUser opUser = new CmOperationUser();
+        opUser.setInvitationCode(String.valueOf(flag));
+        List<CmOperationUser> listByInvitationCode = cmOperationUserService.getListByInvitationCode(opUser);
+        if (CollectionUtils.isNotEmpty(listByInvitationCode) && listByInvitationCode.size() > 0) {//存在邀请码重新获取
+            getInvitationCode();
+        }
+        return flag;
+    }
+
+    /**
+     * 更新邀请码
+     *
+     * @param cmOperationUser
+     * @return
+     */
+    @ResponseBody
+    @RequestMapping(value = "updateInvitationCode")
+    public JsonModel updateInvitationCode(CmOperationUser cmOperationUser) {
+        if (!StringUtils.equals("2", cmOperationUser.getStatus())) {//如果已绑定则不更新
+            //生成随机码6位
+            int flag = getInvitationCode();
+            cmOperationUser.setInvitationCode(String.valueOf(flag));
+            cmOperationUser.setInvitationCodeTime(new Date());
+            cmOperationUser.setStatus("1");
+            //发送短信
+            String clubID = cmOperationUser.getClubID();
+            NewCmClub newCmClub = newCmClubService.findClubById(Integer.parseInt(clubID));
+            String clubName = "";
+            if (null != newCmClub) {
+                clubName = newCmClub.getName();
+            }
+            String mobile = cmOperationUser.getMobile();
+            if (StringUtil.isNotEmpty(mobile)) {
+                SMSUtils.sendSms(mobile, "欢迎加入" + clubName + ",您的邀请码为:" + flag + ",您可在微信搜索“星范采购商城”小程序,输入邀请码进行登录。");
+            }
+            cmOperationUserService.save(cmOperationUser);
+        }
+        return JsonModel.newInstance().success();
+    }
+
+    /**
+     * 解绑
+     *
+     * @param cmOperationUser
+     * @return
+     */
+    @ResponseBody
+    @RequestMapping(value = "untiedOperationUser")
+    public JsonModel untiedOperationUser(CmOperationUser cmOperationUser) {
+        cmOperationUser.setOpenid("");
+        cmOperationUser.setNickName("");
+        cmOperationUser.setBindTime(null);
+        cmOperationUser.setUpdateTime(new Date());
+        cmOperationUser.setStatus("1");
+        cmOperationUser.setDelFlag("1");
+        cmOperationUserService.untiedOperationUser(cmOperationUser);
+        return JsonModel.newInstance().success();
+    }
+}

+ 229 - 0
src/main/java/com/caimei/modules/club/controller/CmUserOrganizeController.java

@@ -0,0 +1,229 @@
+package com.caimei.modules.club.controller;
+
+import com.caimei.modules.club.entity.*;
+import com.caimei.modules.club.service.CmUserOrganizeService;
+import com.caimei.modules.club.service.CmUserService;
+import com.caimei.modules.club.service.NewCmClubService;
+import com.caimei.utils.*;
+import com.github.pagehelper.PageHelper;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 会所管理
+ */
+@Controller
+@RequestMapping(value = "/user/cmUserOrganize")
+public class CmUserOrganizeController {
+    @Autowired
+    private CmUserOrganizeService cmUserOrganizeService;
+    @Autowired
+    private CmUserService cmUserService;
+    @Autowired
+    private NewCmClubService newCmClubService;
+
+    /**
+     * 会所列表
+     */
+    @ResponseBody
+    @RequestMapping(value = "/clubList")
+    public JsonModel toCmOrganizeClubList(CmUser cmUser, Page page) {
+        PageHelper.startPage(page.getIndex(), page.getPageSize());
+        List<CmUser> cmUserList = cmUserService.findListBuyUserInfo(cmUser);
+        Page<CmUser> cmUserPage = new Page<>(cmUserList);
+        return JsonModel.newInstance().success(cmUserPage);
+    }
+
+    /**
+     * 上线会所(添加,编辑)
+     *
+     * @return
+     */
+    @ResponseBody
+    @RequestMapping(value = "/toAddClubUser")
+    public JsonModel toAddClubUser(NewCmClub newCmClub) {
+        if (null != newCmClub.getClubID()) {
+            newCmClub = newCmClubService.findClubById(newCmClub.getClubID());
+        }
+        Integer provinceID = newCmClub.getProvinceID();
+        Integer townID = newCmClub.getTownID();
+        Integer cityID = newCmClub.getCityID();
+        //控制编辑异常时候的会显地址下拉框
+        if (null != provinceID && provinceID > 0) {
+            Province province = cmUserOrganizeService.loadProvinceById(provinceID);
+            newCmClub.setProvince(province.getName());
+        }
+        if (null != cityID && cityID > 0) {
+            City city = cmUserOrganizeService.loadCityById(cityID);
+            newCmClub.setCity(city.getName());
+        }
+        if (null != townID && townID > 0) {
+            Town town = cmUserOrganizeService.loadTownByID(townID);
+            newCmClub.setTown(town.getName());
+        }
+        return JsonModel.newInstance().success(newCmClub);
+    }
+
+    /**
+     * 保存上线会所信息(添加,编辑)
+     *
+     * @param cmUserOrganize
+     * @return
+     */
+    @ResponseBody
+    @RequestMapping(value = "saveAddClubUser")
+    public JsonModel saveAddClubUser(CmUserOrganize cmUserOrganize, NewCmClub newCmClub, CmUser cmUser) throws Exception {
+        JsonModel jsonModel = JsonModel.newInstance();
+        String contractMobile = newCmClub.getContractMobile();
+        Integer userID = newCmClub.getUserID();
+        Integer clubID = newCmClub.getClubID();
+        cmUser.setUserOrganizeID(cmUserOrganize.getId());
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String currentDate = sdf.format(new Date());
+        //判断该会所手机号是否已存在
+        cmUser.setBindMobile(contractMobile);
+        List<CmUser> listBuyBindMobile = cmUserService.findListBuyBindMobile(cmUser);
+        if (CollectionUtils.isNotEmpty(listBuyBindMobile) && listBuyBindMobile.size() > 0) {
+            return jsonModel.error("该手机号码已被使用");
+        }
+        //添加用户信息(新增或修改通用)
+        cmUser.setName(newCmClub.getName());
+        cmUser.setUserName(newCmClub.getName());
+        cmUser.setRealName(newCmClub.getName());
+        cmUser.setClubStatus(String.valueOf(newCmClub.getStatus()));
+        //添加用户新增信息
+        if (null == userID) {//新增
+            cmUser = initUser(cmUser, newCmClub);
+            cmUserService.insert(cmUser);//插入新的用户数据
+        }
+        //添加会所表信息
+        newCmClub.setSname(newCmClub.getName());
+        if (null == clubID) {
+            newCmClub.setUserID(cmUser.getUserID());
+            newCmClub.setDefaultServiceProviderID(AppKeys.DEFAULT_SPID);
+            newCmClub.setSpID(AppKeys.DEFAULT_SPID);
+            newCmClub.setMainServiceProviderID(AppKeys.DEFAULT_SPID);
+            newCmClub.setScanFlag("2");
+            newCmClub.setFlag("0");
+            newCmClub.setAddTime(currentDate);
+            newCmClub.setLinkMan1(newCmClub.getLinkMan());
+            newCmClub.setContractMobile1(newCmClub.getContractMobile());
+            newCmClub.setPayFlag1(AppKeys.FLAG_NO);
+            newCmClub.setLevel(0d);
+            newCmClub.setSubClubCount(0);
+            newCmClub.setFavoriteTimes(0);
+            newCmClub.setClubTypeID(1);
+            newCmClub.setDefaultServiceProviderUpdTime(DateTimeUtil.getCurrentDateTime());
+            newCmClubService.insert(newCmClub);
+
+            //更新用户绑定关系
+            cmUser.setClubID(String.valueOf(newCmClub.getClubID()));
+            String nick = cmUser.getUserID() + "_" + RandomCodeGenerator.generateCodeString(4).toLowerCase();
+            cmUser.setNick(nick);
+            cmUser.setCompanyUserID(cmUser.getUserID());
+
+            //更新会所绑定关系
+            newCmClub.setUserID(cmUser.getUserID());
+        }
+        cmUserService.update(cmUser);//更新用户表数据(编辑数据,或新增数据更新)
+        newCmClubService.update(newCmClub);//更新会所表数据(编辑数据,或新增数据更新)
+        return jsonModel.success("保存成功");
+    }
+
+
+    /**
+     * 初始化用户数据
+     */
+    public CmUser initUser(CmUser cmUser, NewCmClub newCmClub) {
+        String curTime = DateUtils.getDateTime();
+        cmUser.setRegisterUserTypeID("3");//设置为会所
+        cmUser.setUserIdentity(2);
+        cmUser.setServiceProviderStatus("90");//设置默认协销状态
+        cmUser.setServiceProviderID("1342");
+        cmUser.setAuditTime(curTime);
+        cmUser.setAuditStatus("1");//审核通过
+        cmUser.setAuditNote("后台添加用户系统默认审核通过");
+        cmUser.setRegisterTime(curTime);
+        cmUser.setLoginTime(curTime);
+        cmUser.setAccount(newCmClub.getContractMobile() + RandomCodeGenerator.generateAccount(2));
+        cmUser.setPassword(MD5Util.md5("caimei123"));
+        cmUser.setBindMobile(newCmClub.getContractMobile());
+        cmUser.setUserName(newCmClub.getName());
+        cmUser.setEmailCheckFlag("0");
+        cmUser.setMobileCheckFlag("0");
+        cmUser.setUserMoney(0d);
+        cmUser.setAbleUserMoney(0d);
+        cmUser.setPoint("0");
+        cmUser.setShopERPFlag("0");
+        cmUser.setUserBeans("0");
+        cmUser.setValidFlag("1");
+        cmUser.setAgreeFlag("1");
+        cmUser.setLoginFailTime("0");
+        cmUser.setUserLevelID("1");
+        cmUser.setScanFlag("2");
+        cmUser.setUserPermission(2);
+        return cmUser;
+    }
+
+    /**
+     * 上下线会所
+     *
+     * @param cmUser
+     * @return
+     */
+    @ResponseBody
+    @RequestMapping(value = "switchLine")
+    public JsonModel switchLine(CmUser cmUser) {
+        if (cmUser.getClubStatus().equals("91")) {
+            cmUser.setClubStatus("90");
+        } else {
+            cmUser.setClubStatus("91");
+        }
+        cmUserService.update(cmUser);//更新用户表数据
+        NewCmClub newCmClub = new NewCmClub();
+        newCmClub.setClubID(Integer.parseInt(cmUser.getClubID()));
+        newCmClub.setUserID(cmUser.getUserID());
+        newCmClub.setStatus(90);
+        newCmClubService.update(newCmClub);//更新会所表数据
+        return JsonModel.newInstance().success();
+    }
+
+    /**
+     * 省
+     */
+    @ResponseBody
+    @RequestMapping("/province")
+    public JsonModel getProvince() {
+        List<Province> provinceList = cmUserOrganizeService.getProvince();
+        return JsonModel.newInstance().success(provinceList);
+    }
+
+    /**
+     * 市
+     */
+    @ResponseBody
+    @RequestMapping("/city")
+    public JsonModel getCity(Long provinceid) {
+        List<City> cityList = cmUserOrganizeService.getCity(provinceid);
+        return JsonModel.newInstance().success(cityList);
+    }
+
+    /**
+     * 区
+     */
+    @ResponseBody
+    @RequestMapping("/town")
+    public JsonModel getTown(Integer cityid) {
+        List<Town> townList = cmUserOrganizeService.getTown(cityid);
+        return JsonModel.newInstance().success(townList);
+    }
+
+}

+ 21 - 0
src/main/java/com/caimei/modules/club/dao/CmOperationUserDao.java

@@ -0,0 +1,21 @@
+package com.caimei.modules.club.dao;
+
+import com.caimei.modules.club.entity.CmOperationUser;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+@Mapper
+public interface CmOperationUserDao {
+    List<CmOperationUser> findList(CmOperationUser cmOperationUser);
+
+    List<CmOperationUser> findListBuyBindMobile(CmOperationUser cmOperationUser);
+
+    List<CmOperationUser> getListByInvitationCode(CmOperationUser opUser);
+
+    void insert(CmOperationUser cmOperationUser);
+
+    void update(CmOperationUser cmOperationUser);
+
+    void untiedOperationUser(CmOperationUser cmOperationUser);
+}

+ 18 - 0
src/main/java/com/caimei/modules/club/dao/CmUserDao.java

@@ -0,0 +1,18 @@
+package com.caimei.modules.club.dao;
+
+import com.caimei.modules.club.entity.CmUser;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+@Mapper
+public interface CmUserDao {
+
+    List<CmUser> findListBuyUserInfo(CmUser cmUser);
+
+    List<CmUser> findListBuyBindMobile(CmUser cmUser);
+
+    void insert(CmUser cmUser);
+
+    void update(CmUser cmUser);
+}

+ 25 - 0
src/main/java/com/caimei/modules/club/dao/CmUserOrganizeDao.java

@@ -0,0 +1,25 @@
+package com.caimei.modules.club.dao;
+
+import com.caimei.modules.club.entity.*;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+
+@Mapper
+public interface CmUserOrganizeDao {
+
+    List<CmUserOrganize> findList(CmUserOrganize cmUserOrganize);
+
+    Province loadProvinceById(Integer provinceID);
+
+    City loadCityById(Integer cityID);
+
+    Town loadTownByID(Integer townID);
+
+    List<Province> findAllProvince();
+
+    List<City> findAllCity(Long provinceid);
+
+    List<Town> findAllTown(Integer cityid);
+}

+ 16 - 0
src/main/java/com/caimei/modules/club/dao/NewCmClubDao.java

@@ -0,0 +1,16 @@
+package com.caimei.modules.club.dao;
+
+import com.caimei.modules.club.entity.NewCmClub;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+@Mapper
+public interface NewCmClubDao {
+
+    List<NewCmClub> findClubById(Integer clubID);
+
+    void insert(NewCmClub newCmClub);
+
+    void update(NewCmClub newCmClub);
+}

+ 47 - 0
src/main/java/com/caimei/modules/club/entity/City.java

@@ -0,0 +1,47 @@
+package com.caimei.modules.club.entity;
+
+public class City implements java.io.Serializable {
+
+	private static final long serialVersionUID = 1L;
+
+	private Integer cityID;
+	private Integer provinceId;
+	private String name;
+	private String validFlag;
+
+	public static long getSerialVersionUID() {
+		return serialVersionUID;
+	}
+
+	public Integer getCityID() {
+		return cityID;
+	}
+
+	public void setCityID(Integer cityID) {
+		this.cityID = cityID;
+	}
+
+	public Integer getProvinceId() {
+		return provinceId;
+	}
+
+	public void setProvinceId(Integer provinceId) {
+		this.provinceId = provinceId;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getValidFlag() {
+		return validFlag;
+	}
+
+	public void setValidFlag(String validFlag) {
+		this.validFlag = validFlag;
+	}
+}

+ 204 - 0
src/main/java/com/caimei/modules/club/entity/CmOperationUser.java

@@ -0,0 +1,204 @@
+package com.caimei.modules.club.entity;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 商城运营人员Entity
+ *
+ * @author lijun
+ * @version 2019-11-22
+ */
+public class CmOperationUser implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+    private Integer id;
+    private String userOrganizeID;        // 用户组织ID,具体对应cm_mall_organize表ID
+    private String userID;        // 用户ID:隶属于哪个用户的运营人员
+    private String clubID;        // 会所ID:隶属于哪个会所的运营人员
+    private String account;        // 运营人账号名【产品预留字段暂时不启用】
+    private String mobile;        // 手机号码
+    private String linkName;        // 联系人
+    private String invitationCode;        // 邀请码
+    private String status;        // 1未绑定,2已绑定
+    private String nickName;        // 微信昵称
+    private String openid;        // 小程序openid
+    private Date invitationCodeTime;        // 邀请码生成时间(此时间起48小时有效)
+    private Date bindTime;        // 绑定时间
+    private Date updateTime;        // 更新时间
+    private Date addTime;        // 添加时间
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private Date beginAddTime;        // 开始 添加时间
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private Date endAddTime;        // 结束 添加时间
+    private String effectiveFlag;//邀请码是否有效 1有效,2已使用,3已失效
+    private String configFlag;//确认标志
+    private String delFlag; //0 有效 其它无效
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getUserOrganizeID() {
+        return userOrganizeID;
+    }
+
+    public void setUserOrganizeID(String userOrganizeID) {
+        this.userOrganizeID = userOrganizeID;
+    }
+
+    public String getUserID() {
+        return userID;
+    }
+
+    public void setUserID(String userID) {
+        this.userID = userID;
+    }
+
+    public String getClubID() {
+        return clubID;
+    }
+
+    public void setClubID(String clubID) {
+        this.clubID = clubID;
+    }
+
+    public String getAccount() {
+        return account;
+    }
+
+    public void setAccount(String account) {
+        this.account = account;
+    }
+
+    public String getMobile() {
+        return mobile;
+    }
+
+    public void setMobile(String mobile) {
+        this.mobile = mobile;
+    }
+
+    public String getLinkName() {
+        return linkName;
+    }
+
+    public void setLinkName(String linkName) {
+        this.linkName = linkName;
+    }
+
+    public String getInvitationCode() {
+        return invitationCode;
+    }
+
+    public void setInvitationCode(String invitationCode) {
+        this.invitationCode = invitationCode;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public String getNickName() {
+        return nickName;
+    }
+
+    public void setNickName(String nickName) {
+        this.nickName = nickName;
+    }
+
+    public String getOpenid() {
+        return openid;
+    }
+
+    public void setOpenid(String openid) {
+        this.openid = openid;
+    }
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    public Date getInvitationCodeTime() {
+        return invitationCodeTime;
+    }
+
+    public void setInvitationCodeTime(Date invitationCodeTime) {
+        this.invitationCodeTime = invitationCodeTime;
+    }
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    public Date getBindTime() {
+        return bindTime;
+    }
+
+    public void setBindTime(Date bindTime) {
+        this.bindTime = bindTime;
+    }
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    public Date getAddTime() {
+        return addTime;
+    }
+
+    public void setAddTime(Date addTime) {
+        this.addTime = addTime;
+    }
+
+    public Date getBeginAddTime() {
+        return beginAddTime;
+    }
+
+    public void setBeginAddTime(Date beginAddTime) {
+        this.beginAddTime = beginAddTime;
+    }
+
+    public Date getEndAddTime() {
+        return endAddTime;
+    }
+
+    public void setEndAddTime(Date endAddTime) {
+        this.endAddTime = endAddTime;
+    }
+
+    public String getEffectiveFlag() {
+        return effectiveFlag;
+    }
+
+    public void setEffectiveFlag(String effectiveFlag) {
+        this.effectiveFlag = effectiveFlag;
+    }
+
+    public String getConfigFlag() {
+        return configFlag;
+    }
+
+    public void setConfigFlag(String configFlag) {
+        this.configFlag = configFlag;
+    }
+
+    public String getDelFlag() {
+        return delFlag;
+    }
+
+    public void setDelFlag(String delFlag) {
+        this.delFlag = delFlag;
+    }
+}

+ 118 - 0
src/main/java/com/caimei/modules/club/entity/CmProductSn.java

@@ -0,0 +1,118 @@
+package com.caimei.modules.club.entity;
+
+import java.io.Serializable;
+
+/**
+ * sn码Entity
+ * @author ye.qin
+ * @version 2018-11-28
+ */
+public class CmProductSn implements Serializable {
+	
+	private static final long serialVersionUID = 1L;
+	private Integer snID;
+	private String snCode;		// sn码
+	private String orderNo;		// 主订单编号
+	private Integer orderID;		// 主订单ID
+	private String shopOrderNo;		// 子订单编号
+	private Integer shopOrderID;		// 订单Id
+	private Integer productID;		// 商品Id
+	private Integer orderProductID;		// 商品订单ID
+	private String source;			// 来源
+	private String createTime;		// 创建时间
+	private String updateTime;		// 修改时间
+
+
+	public static long getSerialVersionUID() {
+		return serialVersionUID;
+	}
+
+
+	public Integer getSnID() {
+		return snID;
+	}
+
+	public void setSnID(Integer snID) {
+		this.snID = snID;
+	}
+
+	public String getSnCode() {
+		return snCode;
+	}
+
+	public void setSnCode(String snCode) {
+		this.snCode = snCode;
+	}
+
+	public String getOrderNo() {
+		return orderNo;
+	}
+
+	public void setOrderNo(String orderNo) {
+		this.orderNo = orderNo;
+	}
+
+	public Integer getOrderID() {
+		return orderID;
+	}
+
+	public void setOrderID(Integer orderID) {
+		this.orderID = orderID;
+	}
+
+	public String getShopOrderNo() {
+		return shopOrderNo;
+	}
+
+	public void setShopOrderNo(String shopOrderNo) {
+		this.shopOrderNo = shopOrderNo;
+	}
+
+	public Integer getShopOrderID() {
+		return shopOrderID;
+	}
+
+	public void setShopOrderID(Integer shopOrderID) {
+		this.shopOrderID = shopOrderID;
+	}
+
+	public Integer getOrderProductID() {
+		return orderProductID;
+	}
+
+	public void setOrderProductID(Integer orderProductID) {
+		this.orderProductID = orderProductID;
+	}
+
+	public String getCreateTime() {
+		return createTime;
+	}
+
+	public void setCreateTime(String createTime) {
+		this.createTime = createTime;
+	}
+
+	public String getUpdateTime() {
+		return updateTime;
+	}
+
+	public void setUpdateTime(String updateTime) {
+		this.updateTime = updateTime;
+	}
+
+	public String getSource() {
+		return source;
+	}
+
+	public void setSource(String source) {
+		this.source = source;
+	}
+
+	public Integer getProductID() {
+		return productID;
+	}
+
+	public void setProductID(Integer productID) {
+		this.productID = productID;
+	}
+}

+ 800 - 0
src/main/java/com/caimei/modules/club/entity/CmUser.java

@@ -0,0 +1,800 @@
+package com.caimei.modules.club.entity;
+
+import org.hibernate.validator.constraints.Length;
+
+import java.beans.Transient;
+import java.io.Serializable;
+
+/**
+ * 用户Entity
+ *
+ * @author ZCP
+ * @version 2017-10-10
+ */
+public class CmUser implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+    private Integer userID;        // userID
+    private Integer userOrganizeID;//用户组织ID
+    private String mobile;        // 手机号码
+    private Integer userPermission;        // 用户权限
+    private String email;        // 邮箱
+    private String userName;        // 用户名
+    private String image;        // image
+    private String password;        // 密码
+    private String userLevelID;        // 用户会员等级,见表c_userlevel或枚举UserLevel
+    private String name;        // 组织名称
+    private String nick;        // 昵称
+    private String sex;        // 性别
+    private String registerUserTypeID;        // 用户类型,见表c_usertype或枚举UserType
+    private String manufacturerFlag;        // 已废弃 是否是供应商,1是 空或0否
+    private String manufacturerStatus;        // 供应商状态,见表c_shopstatus或枚举ShopStatus
+    private String shopID;        // 供应商Id
+    private String serviceProviderFlag;        // 已废弃  是否创客,1是 空或0否
+    private String clubFlag;        //已废弃  是否会所,1是 空或0否
+    private String masterFlag;        //已废弃  masterFlag
+    private String normalFlag;        //已废弃  normalFlag
+    private String auditStatus;        // auditStatus
+    private String auditTime;        // auditTime
+    private String auditNote;        // auditNote
+    private String registerTime;        // 注册时间
+    private String registerIP;        // 注册ip
+    private String loginTime;        // 登录时间
+    private String loginFailTime;        // 登录失败次数
+    private String loginIP;        // 登录ip
+    private String validFlag;        // 用户状态,1正常,0冻结
+    private String emailCheckFlag;        // emailCheckFlag
+    private String mobileCheckFlag;        // mobileCheckFlag
+    private String clubStatus;        // 会所状态,见表c_clubstatus或枚举ClubStatus
+    private String clubID;        // 会所Id
+    private String agreeFlag;        // agreeFlag
+    private String activationCode;        // activationCode
+    private String activationDate;        // activationDate
+    private String serviceProviderStatus;        // 创客状态
+    private String serviceProviderID;        // 创客Id
+    private String masterStatus;        // masterStatus
+    private String masterID;        // masterID
+    private Double userMoney;        // 账户余额
+    private Double ableUserMoney;        //账户可用余额
+    private String point;        // point
+    private String shopERPFlag;        // shopERPFlag
+    private String fromUserID;        // 邀请人Id
+    private String fromUserName;        // 邀请人名称
+    private String logoffTime;        // logoffTime
+    private String appKey;        // appKey
+    private String appSecret;        // appSecret
+    private String sampleFlag;        // sampleFlag
+    private String scanFlag;        // 扫描标志(4 CRM拉上来的会所)
+    private String sysroleid;        // sysroleid
+    private String gender;        // gender
+    private String age;        // 年龄
+    private String salerbuyer;        // salerbuyer
+    private String position;        // position
+    private String skill;        // skill
+    private String workage;        // workage
+    private String wechat;        // 微信号
+    private String qq;        // QQ号
+    private String smsFlag;        // 短信是否发送成功
+    private String userBeans;        // 采美豆数量
+    private String privateShopFlag;        // 平台商标志位  0非平台商 1平台商
+    private String privateClubFlag;        // 平台会所标志位  0非平台会所 1平台会所
+    private String isMeiDaoAuthorized;        // isMeiDaoAuthorized
+    private String guideFlag;        // 引导层弹出  0需要弹出  1不需要弹出
+    private String nickName;        // 微信昵称
+    private String startTime;     //注册时间开始 查询条件
+    private String endTime;        //注册时间结束  查询条件
+
+
+    /**
+     * 用户模块重构
+     */
+    private String account;//账号名: 企业账号登录使用
+    private Integer userIdentity;//用户身份
+    private String realName;//真实姓名
+    private Integer companyUserID;//企业用户id
+    private String openID;//微信openID
+    private String bindMobile;//企业绑定手机号
+    private String tipStatus;//弹窗提示状态
+    private String identityDisplay; //前台身份展示
+    private String linkMan;//联系人
+
+    //会所用户信息
+    private String town; // 区
+    private String city; // 市
+    private String province; //省
+    private String address;        // 详细地址
+
+    public Integer getUserID() {
+        return userID;
+    }
+
+    public void setUserID(Integer userID) {
+        this.userID = userID;
+    }
+
+    public String getMobile() {
+        return mobile;
+    }
+
+    public void setMobile(String mobile) {
+        this.mobile = mobile;
+    }
+
+    public Integer getUserPermission() {
+        return userPermission;
+    }
+
+    public void setUserPermission(Integer userPermission) {
+        this.userPermission = userPermission;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getImage() {
+        return image;
+    }
+
+    public void setImage(String image) {
+        this.image = image;
+    }
+
+    public String getPassword() {
+        return password;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
+
+    public String getUserLevelID() {
+        return userLevelID;
+    }
+
+    public void setUserLevelID(String userLevelID) {
+        this.userLevelID = userLevelID;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getNick() {
+        return nick;
+    }
+
+    public void setNick(String nick) {
+        this.nick = nick;
+    }
+
+    public String getSex() {
+        return sex;
+    }
+
+    public void setSex(String sex) {
+        this.sex = sex;
+    }
+
+    public String getRegisterUserTypeID() {
+        return registerUserTypeID;
+    }
+
+    public void setRegisterUserTypeID(String registerUserTypeID) {
+        this.registerUserTypeID = registerUserTypeID;
+    }
+
+    @Length(min = 0, max = 1, message = "是否是供应商,1是 空或0否长度必须介于 0 和 1 之间")
+    public String getManufacturerFlag() {
+        return manufacturerFlag;
+    }
+
+    public void setManufacturerFlag(String manufacturerFlag) {
+        this.manufacturerFlag = manufacturerFlag;
+    }
+
+    @Length(min = 0, max = 11, message = "供应商状态,见表c_shopstatus或枚举ShopStatus长度必须介于 0 和 11 之间")
+    public String getManufacturerStatus() {
+        return manufacturerStatus;
+    }
+
+    public void setManufacturerStatus(String manufacturerStatus) {
+        this.manufacturerStatus = manufacturerStatus;
+    }
+
+    @Length(min = 0, max = 11, message = "供应商Id长度必须介于 0 和 11 之间")
+    public String getShopID() {
+        return shopID;
+    }
+
+    public void setShopID(String shopID) {
+        this.shopID = shopID;
+    }
+
+    @Length(min = 0, max = 1, message = "是否创客,1是 空或0否长度必须介于 0 和 1 之间")
+    public String getServiceProviderFlag() {
+        return serviceProviderFlag;
+    }
+
+    public void setServiceProviderFlag(String serviceProviderFlag) {
+        this.serviceProviderFlag = serviceProviderFlag;
+    }
+
+    @Length(min = 0, max = 1, message = "是否会所,1是 空或0否长度必须介于 0 和 1 之间")
+    public String getClubFlag() {
+        return clubFlag;
+    }
+
+    public void setClubFlag(String clubFlag) {
+        this.clubFlag = clubFlag;
+    }
+
+    @Length(min = 0, max = 1, message = "masterFlag长度必须介于 0 和 1 之间")
+    public String getMasterFlag() {
+        return masterFlag;
+    }
+
+    public void setMasterFlag(String masterFlag) {
+        this.masterFlag = masterFlag;
+    }
+
+    @Length(min = 0, max = 1, message = "normalFlag长度必须介于 0 和 1 之间")
+    public String getNormalFlag() {
+        return normalFlag;
+    }
+
+    public void setNormalFlag(String normalFlag) {
+        this.normalFlag = normalFlag;
+    }
+
+    @Length(min = 0, max = 1, message = "auditStatus长度必须介于 0 和 1 之间")
+    public String getAuditStatus() {
+        return auditStatus;
+    }
+
+    public void setAuditStatus(String auditStatus) {
+        this.auditStatus = auditStatus;
+    }
+
+    @Length(min = 0, max = 19, message = "auditTime长度必须介于 0 和 19 之间")
+    public String getAuditTime() {
+        return auditTime;
+    }
+
+    public void setAuditTime(String auditTime) {
+        this.auditTime = auditTime;
+    }
+
+    @Length(min = 0, max = 100, message = "auditNote长度必须介于 0 和 100 之间")
+    public String getAuditNote() {
+        return auditNote;
+    }
+
+    public void setAuditNote(String auditNote) {
+        this.auditNote = auditNote;
+    }
+
+    public String getRegisterTime() {
+        return registerTime;
+    }
+
+    public void setRegisterTime(String registerTime) {
+        this.registerTime = registerTime;
+    }
+
+    public String getRegisterIP() {
+        return registerIP;
+    }
+
+    public void setRegisterIP(String registerIP) {
+        this.registerIP = registerIP;
+    }
+
+    public String getLoginTime() {
+        return loginTime;
+    }
+
+    public void setLoginTime(String loginTime) {
+        this.loginTime = loginTime;
+    }
+
+    public String getLoginFailTime() {
+        return loginFailTime;
+    }
+
+    public void setLoginFailTime(String loginFailTime) {
+        this.loginFailTime = loginFailTime;
+    }
+
+    public String getLoginIP() {
+        return loginIP;
+    }
+
+    public void setLoginIP(String loginIP) {
+        this.loginIP = loginIP;
+    }
+
+    public String getValidFlag() {
+        return validFlag;
+    }
+
+    public void setValidFlag(String validFlag) {
+        this.validFlag = validFlag;
+    }
+
+    public String getEmailCheckFlag() {
+        return emailCheckFlag;
+    }
+
+    public void setEmailCheckFlag(String emailCheckFlag) {
+        this.emailCheckFlag = emailCheckFlag;
+    }
+
+    public String getMobileCheckFlag() {
+        return mobileCheckFlag;
+    }
+
+    public void setMobileCheckFlag(String mobileCheckFlag) {
+        this.mobileCheckFlag = mobileCheckFlag;
+    }
+
+    public String getClubStatus() {
+        return clubStatus;
+    }
+
+    public void setClubStatus(String clubStatus) {
+        this.clubStatus = clubStatus;
+    }
+
+    public String getClubID() {
+        return clubID;
+    }
+
+    public void setClubID(String clubID) {
+        this.clubID = clubID;
+    }
+
+    public String getAgreeFlag() {
+        return agreeFlag;
+    }
+
+    public void setAgreeFlag(String agreeFlag) {
+        this.agreeFlag = agreeFlag;
+    }
+
+    public String getActivationCode() {
+        return activationCode;
+    }
+
+    public void setActivationCode(String activationCode) {
+        this.activationCode = activationCode;
+    }
+
+    public String getActivationDate() {
+        return activationDate;
+    }
+
+    public void setActivationDate(String activationDate) {
+        this.activationDate = activationDate;
+    }
+
+    @Length(min = 0, max = 11, message = "创客状态长度必须介于 0 和 11 之间")
+    public String getServiceProviderStatus() {
+        return serviceProviderStatus;
+    }
+
+    public void setServiceProviderStatus(String serviceProviderStatus) {
+        this.serviceProviderStatus = serviceProviderStatus;
+    }
+
+    @Length(min = 0, max = 11, message = "创客Id长度必须介于 0 和 11 之间")
+    public String getServiceProviderID() {
+        return serviceProviderID;
+    }
+
+    public void setServiceProviderID(String serviceProviderID) {
+        this.serviceProviderID = serviceProviderID;
+    }
+
+    @Length(min = 0, max = 11, message = "masterStatus长度必须介于 0 和 11 之间")
+    public String getMasterStatus() {
+        return masterStatus;
+    }
+
+    public void setMasterStatus(String masterStatus) {
+        this.masterStatus = masterStatus;
+    }
+
+    @Length(min = 0, max = 11, message = "masterID长度必须介于 0 和 11 之间")
+    public String getMasterID() {
+        return masterID;
+    }
+
+    public void setMasterID(String masterID) {
+        this.masterID = masterID;
+    }
+
+    public Double getUserMoney() {
+        return userMoney;
+    }
+
+    public void setUserMoney(Double userMoney) {
+        this.userMoney = userMoney;
+    }
+
+    public Double getAbleUserMoney() {
+        return ableUserMoney;
+    }
+
+    public void setAbleUserMoney(Double ableUserMoney) {
+        this.ableUserMoney = ableUserMoney;
+    }
+
+    @Length(min = 0, max = 11, message = "point长度必须介于 0 和 11 之间")
+    public String getPoint() {
+        return point;
+    }
+
+    public void setPoint(String point) {
+        this.point = point;
+    }
+
+    @Length(min = 0, max = 1, message = "shopERPFlag长度必须介于 0 和 1 之间")
+    public String getShopERPFlag() {
+        return shopERPFlag;
+    }
+
+    public void setShopERPFlag(String shopERPFlag) {
+        this.shopERPFlag = shopERPFlag;
+    }
+
+    @Length(min = 0, max = 11, message = "邀请人Id长度必须介于 0 和 11 之间")
+    public String getFromUserID() {
+        return fromUserID;
+    }
+
+    public void setFromUserID(String fromUserID) {
+        this.fromUserID = fromUserID;
+    }
+
+    public String getFromUserName() {
+        return fromUserName;
+    }
+
+    public void setFromUserName(String fromUserName) {
+        this.fromUserName = fromUserName;
+    }
+
+    public String getLogoffTime() {
+        return logoffTime;
+    }
+
+    public void setLogoffTime(String logoffTime) {
+        this.logoffTime = logoffTime;
+    }
+
+    @Length(min = 0, max = 20, message = "appKey长度必须介于 0 和 20 之间")
+    public String getAppKey() {
+        return appKey;
+    }
+
+    public void setAppKey(String appKey) {
+        this.appKey = appKey;
+    }
+
+    @Length(min = 0, max = 25, message = "appSecret长度必须介于 0 和 25 之间")
+    public String getAppSecret() {
+        return appSecret;
+    }
+
+    public void setAppSecret(String appSecret) {
+        this.appSecret = appSecret;
+    }
+
+    @Length(min = 0, max = 1, message = "sampleFlag长度必须介于 0 和 1 之间")
+    public String getSampleFlag() {
+        return sampleFlag;
+    }
+
+    public void setSampleFlag(String sampleFlag) {
+        this.sampleFlag = sampleFlag;
+    }
+
+    @Length(min = 0, max = 11, message = "扫描标志(4 CRM拉上来的会所)长度必须介于 0 和 11 之间")
+    public String getScanFlag() {
+        return scanFlag;
+    }
+
+    public void setScanFlag(String scanFlag) {
+        this.scanFlag = scanFlag;
+    }
+
+    @Length(min = 0, max = 11, message = "sysroleid长度必须介于 0 和 11 之间")
+    public String getSysroleid() {
+        return sysroleid;
+    }
+
+    public void setSysroleid(String sysroleid) {
+        this.sysroleid = sysroleid;
+    }
+
+    @Length(min = 0, max = 2, message = "gender长度必须介于 0 和 2 之间")
+    public String getGender() {
+        return gender;
+    }
+
+    public void setGender(String gender) {
+        this.gender = gender;
+    }
+
+    @Length(min = 0, max = 11, message = "年龄长度必须介于 0 和 11 之间")
+    public String getAge() {
+        return age;
+    }
+
+    public void setAge(String age) {
+        this.age = age;
+    }
+
+    @Length(min = 0, max = 11, message = "salerbuyer长度必须介于 0 和 11 之间")
+    public String getSalerbuyer() {
+        return salerbuyer;
+    }
+
+    public void setSalerbuyer(String salerbuyer) {
+        this.salerbuyer = salerbuyer;
+    }
+
+    @Length(min = 0, max = 128, message = "position长度必须介于 0 和 128 之间")
+    public String getPosition() {
+        return position;
+    }
+
+    public void setPosition(String position) {
+        this.position = position;
+    }
+
+    @Length(min = 0, max = 128, message = "skill长度必须介于 0 和 128 之间")
+    public String getSkill() {
+        return skill;
+    }
+
+    public void setSkill(String skill) {
+        this.skill = skill;
+    }
+
+    public String getWorkage() {
+        return workage;
+    }
+
+    public void setWorkage(String workage) {
+        this.workage = workage;
+    }
+
+    @Length(min = 0, max = 64, message = "微信号长度必须介于 0 和 64 之间")
+    public String getWechat() {
+        return wechat;
+    }
+
+    public void setWechat(String wechat) {
+        this.wechat = wechat;
+    }
+
+    @Length(min = 0, max = 32, message = "QQ号长度必须介于 0 和 32 之间")
+    public String getQq() {
+        return qq;
+    }
+
+    public void setQq(String qq) {
+        this.qq = qq;
+    }
+
+    @Length(min = 0, max = 1, message = "短信是否发送成功长度必须介于 0 和 1 之间")
+    public String getSmsFlag() {
+        return smsFlag;
+    }
+
+    public void setSmsFlag(String smsFlag) {
+        this.smsFlag = smsFlag;
+    }
+
+    @Length(min = 0, max = 11, message = "采美豆数量长度必须介于 0 和 11 之间")
+    public String getUserBeans() {
+        return userBeans;
+    }
+
+    public void setUserBeans(String userBeans) {
+        this.userBeans = userBeans;
+    }
+
+    @Length(min = 0, max = 11, message = "平台商标志位  0非平台商 1平台商长度必须介于 0 和 11 之间")
+    public String getPrivateShopFlag() {
+        return privateShopFlag;
+    }
+
+    public void setPrivateShopFlag(String privateShopFlag) {
+        this.privateShopFlag = privateShopFlag;
+    }
+
+    @Length(min = 0, max = 11, message = "平台会所标志位  0非平台会所 1平台会所长度必须介于 0 和 11 之间")
+    public String getPrivateClubFlag() {
+        return privateClubFlag;
+    }
+
+    public void setPrivateClubFlag(String privateClubFlag) {
+        this.privateClubFlag = privateClubFlag;
+    }
+
+    @Length(min = 0, max = 11, message = "isMeiDaoAuthorized长度必须介于 0 和 11 之间")
+    public String getIsMeiDaoAuthorized() {
+        return isMeiDaoAuthorized;
+    }
+
+    public void setIsMeiDaoAuthorized(String isMeiDaoAuthorized) {
+        this.isMeiDaoAuthorized = isMeiDaoAuthorized;
+    }
+
+    @Length(min = 0, max = 1, message = "引导层弹出  0需要弹出  1不需要弹出长度必须介于 0 和 1 之间")
+    public String getGuideFlag() {
+        return guideFlag;
+    }
+
+    public void setGuideFlag(String guideFlag) {
+        this.guideFlag = guideFlag;
+    }
+
+    public String getNickName() {
+        return nickName;
+    }
+
+    public void setNickName(String nickName) {
+        this.nickName = nickName;
+    }
+
+    public String getAccount() {
+        return account;
+    }
+
+    public void setAccount(String account) {
+        this.account = account;
+    }
+
+    public Integer getUserIdentity() {
+        return userIdentity;
+    }
+
+    public void setUserIdentity(Integer userIdentity) {
+        this.userIdentity = userIdentity;
+    }
+
+    public String getRealName() {
+        return realName;
+    }
+
+    public void setRealName(String realName) {
+        this.realName = realName;
+    }
+
+    public Integer getCompanyUserID() {
+        return companyUserID;
+    }
+
+    public void setCompanyUserID(Integer companyUserID) {
+        this.companyUserID = companyUserID;
+    }
+
+    public String getOpenID() {
+        return openID;
+    }
+
+    public void setOpenID(String openID) {
+        this.openID = openID;
+    }
+
+    public String getBindMobile() {
+        return bindMobile;
+    }
+
+    public void setBindMobile(String bindMobile) {
+        this.bindMobile = bindMobile;
+    }
+
+    public String getTipStatus() {
+        return tipStatus;
+    }
+
+    public void setTipStatus(String tipStatus) {
+        this.tipStatus = tipStatus;
+    }
+
+    @Transient
+    public String getIdentityDisplay() {
+        return identityDisplay;
+    }
+
+    public void setIdentityDisplay(String identityDisplay) {
+        this.identityDisplay = identityDisplay;
+    }
+
+    @Transient
+    public String getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(String startTime) {
+        this.startTime = startTime;
+    }
+
+    @Transient
+    public String getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(String endTime) {
+        this.endTime = endTime;
+    }
+
+    public Integer getUserOrganizeID() {
+        return userOrganizeID;
+    }
+
+    public void setUserOrganizeID(Integer userOrganizeID) {
+        this.userOrganizeID = userOrganizeID;
+    }
+
+    public String getLinkMan() {
+        return linkMan;
+    }
+
+    public void setLinkMan(String linkMan) {
+        this.linkMan = linkMan;
+    }
+
+    public String getTown() {
+        return town;
+    }
+
+    public void setTown(String town) {
+        this.town = town;
+    }
+
+    public String getCity() {
+        return city;
+    }
+
+    public void setCity(String city) {
+        this.city = city;
+    }
+
+    public String getProvince() {
+        return province;
+    }
+
+    public void setProvince(String province) {
+        this.province = province;
+    }
+
+    public String getAddress() {
+        return address;
+    }
+
+    public void setAddress(String address) {
+        this.address = address;
+    }
+}

+ 109 - 0
src/main/java/com/caimei/modules/club/entity/CmUserOrganize.java

@@ -0,0 +1,109 @@
+package com.caimei.modules.club.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 采美商城组织Entity
+ *
+ * @author lijun
+ * @version 2019-11-19
+ */
+public class CmUserOrganize implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+    private Integer id;
+    private String organizeName;        // 组织名称
+    private String organizeLinkName;        // 组织联系人
+    private String mobile;        // 手机号码
+    private Date updateTime;        // 更新时间
+    private Date addTime;        // 添加时间
+    private String contactNumber;//联系我们,手机或者座机号码
+    private String introduction;//关于我们:组织介绍信息
+    private String afterSale;//售后无忧
+    private String shoppingNotes;//购物须知
+
+    public static long getSerialVersionUID() {
+        return serialVersionUID;
+    }
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getOrganizeName() {
+        return organizeName;
+    }
+
+    public void setOrganizeName(String organizeName) {
+        this.organizeName = organizeName;
+    }
+
+    public String getOrganizeLinkName() {
+        return organizeLinkName;
+    }
+
+    public void setOrganizeLinkName(String organizeLinkName) {
+        this.organizeLinkName = organizeLinkName;
+    }
+
+    public String getMobile() {
+        return mobile;
+    }
+
+    public void setMobile(String mobile) {
+        this.mobile = mobile;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public Date getAddTime() {
+        return addTime;
+    }
+
+    public void setAddTime(Date addTime) {
+        this.addTime = addTime;
+    }
+
+    public String getContactNumber() {
+        return contactNumber;
+    }
+
+    public void setContactNumber(String contactNumber) {
+        this.contactNumber = contactNumber;
+    }
+
+    public String getIntroduction() {
+        return introduction;
+    }
+
+    public void setIntroduction(String introduction) {
+        this.introduction = introduction;
+    }
+
+    public String getAfterSale() {
+        return afterSale;
+    }
+
+    public void setAfterSale(String afterSale) {
+        this.afterSale = afterSale;
+    }
+
+    public String getShoppingNotes() {
+        return shoppingNotes;
+    }
+
+    public void setShoppingNotes(String shoppingNotes) {
+        this.shoppingNotes = shoppingNotes;
+    }
+}

+ 894 - 0
src/main/java/com/caimei/modules/club/entity/NewCmClub.java

@@ -0,0 +1,894 @@
+package com.caimei.modules.club.entity;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.hibernate.validator.constraints.Length;
+
+import javax.validation.constraints.NotNull;
+import java.beans.Transient;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 用户模块重构--会所管理Entity
+ *
+ * @author zcp
+ * @version 2018-05-21
+ */
+public class NewCmClub implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+    private Integer id;
+    private Integer clubID;        // 会所ID
+    private Integer userID;        // 用户ID
+    private Integer userOrganizeID;//用户组织ID
+    private Integer clubTypeID;        // 【已废弃】会所类型
+    private String name;        // 会所名称
+    private String sname;        // 简称
+    private String nameEn;        // 会所英文名称
+    private String site;        // 网址
+    private String logo;        // logo
+    private Double level;        // 【已废弃】未知
+    private Double score;        // 【已废弃】未知
+    private Integer subClubCount;        // 【已废弃】子会所数量
+    private String legalPerson;        // 法人
+    private Integer provinceID;        // 省
+    private Integer cityID;        // 市
+    private Integer townID;        // 地址ID
+    private String agreement;        // 是否同意协议
+    private String flag;        // 拉会所上线的用户的cmBindId,以逗号结尾
+    private Integer inviterBindID;        // 邀请者cmBindId
+    private String inviterName;        // 邀请者名称
+    private Integer spID;        // 协销Id
+    private Integer mainServiceProviderID;        // 协销经理Id
+    private Date scanTime;        // 扫描时间
+    private Date checkTime;        // 上线时间
+    private String address;        // 详细地址
+    private Double registeredCapital;        // 注册资金
+    private Integer mainClubID;        // 集团会所ID
+    private Double turnover;        // 营业额
+    private String linkMan;        // 联系人
+    private String contractPhone;        // 联系电话
+    private String contractMobile;        // 联系手机
+    private String fax;        // 传真
+    private String zipCode;        // 邮编
+    private String linkMan1;        // 联系人
+    private String duty1;        // 职务
+    private String contractPhone1;        // 联系电话1
+    private String contractMobile1;        // 手机号1
+    private String contractQQ1;        // 联系QQ
+    private String wechat1;        // 微信号
+    private String contractEmail1;        // 联系邮箱
+    private String linkMan2;        // 联系人
+    private String duty2;        // 职务
+    private String contractPhone2;        // 联系电话
+    private String contractMobile2;        // 联系手机
+    private String contractQQ2;        // 联系QQ
+    private String wechat2;        // 微信号
+    private String contractEmail2;        // 联系邮箱
+    private String scope;        // 经营范围
+    private String info;        // 公司简介
+    private Double lng;        // 纬度
+    private Double lat;        // 经度
+    private String addTime;        // 注册时间
+    private Integer favoriteTimes;        // 收藏量
+    private String payFlag1;        // 支付
+    private String auditTime;        // 审核时间
+    private String auditNote;        // 审核备注
+    private Integer status;        // 状态
+    private String clubInvitationStatus;        // 集团会所邀请状态
+    private String recAddress;        // 收货地址
+    private String businessLicenseImage;        // 营业执照
+    private Integer sortIndex;        // 排序值
+    private Integer recTownID;        // 收货地址县级ID
+    private Integer defaultServiceProviderID;        // 默认的创客
+    private String defaultServiceProviderUpdTime;        // 创客更新时间
+    private String firstServiceProviderFlag;        // 第一次服务标志
+    private String scale;        // 规模
+    private Integer empnum;        // 员工数
+    private String mainpro;        // 主打项目
+    private String remark;        // 备注
+    private String scanFlag;        // 扫描状态 0待扫描 1 已扫描 2已上线
+    private String headpic;        // 门头照
+    private Date lastModify;        // 最后更新时间
+    private Integer firstClubType; // 一级分类为医美=1和生美=2
+    private String secondClubType; // 医美的二级分类为诊所=1、门诊=2、医院=3。  生美没有二级分类
+    private String department; // 若为医美分类下的门诊和医院则需要填写科室。
+    private String medicalPracticeLicenseImg; // 医美分类必须上传医疗执业许可证
+    private String socialCreditCode;//统一社会编码
+
+    /**
+     * 非持久化字段
+     */
+    private String spName; //创客名称
+    private String account;//企业会所用户账号
+    private String mobile;
+    private String fromUserName;
+    private Integer userLevelID;
+    private Date registerTime;
+    private String smsFlag;        // 短信是否发送成功
+    private String userScanFlag;        // 扫描标志(4 CRM拉上来的会所)
+    private String town; // 区
+    private String city; // 市
+    private String province; //省
+    private String startTime;     //注册时间开始 查询条件
+    private String endTime;        //注册时间结束  查询条件
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    @NotNull(message = "会所ID不能为空")
+    public Integer getClubID() {
+        return clubID;
+    }
+
+    public void setClubID(Integer clubID) {
+        this.clubID = clubID;
+    }
+
+    public Integer getUserID() {
+        return userID;
+    }
+
+    public void setUserID(Integer userID) {
+        this.userID = userID;
+    }
+
+    @NotNull(message = "【已废弃】会所类型不能为空")
+    public Integer getClubTypeID() {
+        return clubTypeID;
+    }
+
+    public void setClubTypeID(Integer clubTypeID) {
+        this.clubTypeID = clubTypeID;
+    }
+
+    @Length(min = 0, max = 50, message = "会所名称长度必须介于 0 和 50 之间")
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    @Length(min = 0, max = 20, message = "简称长度必须介于 0 和 20 之间")
+    public String getSname() {
+        return sname;
+    }
+
+    public void setSname(String sname) {
+        this.sname = sname;
+    }
+
+    @Length(min = 0, max = 100, message = "会所英文名称长度必须介于 0 和 100 之间")
+    public String getNameEn() {
+        return nameEn;
+    }
+
+    public void setNameEn(String nameEn) {
+        this.nameEn = nameEn;
+    }
+
+    @Length(min = 0, max = 200, message = "网址长度必须介于 0 和 200 之间")
+    public String getSite() {
+        return site;
+    }
+
+    public void setSite(String site) {
+        this.site = site;
+    }
+
+    @Length(min = 0, max = 200, message = "logo长度必须介于 0 和 200 之间")
+    public String getLogo() {
+        return logo;
+    }
+
+    public void setLogo(String logo) {
+        this.logo = logo;
+    }
+
+    public Double getLevel() {
+        return level;
+    }
+
+    public void setLevel(Double level) {
+        this.level = level;
+    }
+
+    public Double getScore() {
+        return score;
+    }
+
+    public void setScore(Double score) {
+        this.score = score;
+    }
+
+    public Integer getSubClubCount() {
+        return subClubCount;
+    }
+
+    public void setSubClubCount(Integer subClubCount) {
+        this.subClubCount = subClubCount;
+    }
+
+    @Length(min = 0, max = 20, message = "法人长度必须介于 0 和 20 之间")
+    public String getLegalPerson() {
+        return legalPerson;
+    }
+
+    public void setLegalPerson(String legalPerson) {
+        this.legalPerson = legalPerson;
+    }
+
+    public Integer getProvinceID() {
+        return provinceID;
+    }
+
+    public void setProvinceID(Integer provinceID) {
+        this.provinceID = provinceID;
+    }
+
+    public Integer getCityID() {
+        return cityID;
+    }
+
+    public void setCityID(Integer cityID) {
+        this.cityID = cityID;
+    }
+
+    public Integer getTownID() {
+        return townID;
+    }
+
+    public void setTownID(Integer townID) {
+        this.townID = townID;
+    }
+
+    @Length(min = 0, max = 1, message = "是否同意协议长度必须介于 0 和 1 之间")
+    public String getAgreement() {
+        return agreement;
+    }
+
+    public void setAgreement(String agreement) {
+        this.agreement = agreement;
+    }
+
+    @Length(min = 0, max = 100, message = "拉会所上线的用户的cmBindId,以逗号结尾长度必须介于 0 和 100 之间")
+    public String getFlag() {
+        return flag;
+    }
+
+    public void setFlag(String flag) {
+        this.flag = flag;
+    }
+
+    public Integer getInviterBindID() {
+        return inviterBindID;
+    }
+
+    public void setInviterBindID(Integer inviterBindID) {
+        this.inviterBindID = inviterBindID;
+    }
+
+    @Length(min = 0, max = 255, message = "邀请者名称长度必须介于 0 和 255 之间")
+    public String getInviterName() {
+        return inviterName;
+    }
+
+    public void setInviterName(String inviterName) {
+        this.inviterName = inviterName;
+    }
+
+    public Integer getSpID() {
+        return spID;
+    }
+
+    public void setSpID(Integer spID) {
+        this.spID = spID;
+    }
+
+    public Integer getMainServiceProviderID() {
+        return mainServiceProviderID;
+    }
+
+    public void setMainServiceProviderID(Integer mainServiceProviderID) {
+        this.mainServiceProviderID = mainServiceProviderID;
+    }
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    public Date getScanTime() {
+        return scanTime;
+    }
+
+    public void setScanTime(Date scanTime) {
+        this.scanTime = scanTime;
+    }
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    public Date getCheckTime() {
+        return checkTime;
+    }
+
+    public void setCheckTime(Date checkTime) {
+        this.checkTime = checkTime;
+    }
+
+    @Length(min = 0, max = 100, message = "详细地址长度必须介于 0 和 100 之间")
+    public String getAddress() {
+        return address;
+    }
+
+    public void setAddress(String address) {
+        this.address = address;
+    }
+
+    public Double getRegisteredCapital() {
+        return registeredCapital;
+    }
+
+    public void setRegisteredCapital(Double registeredCapital) {
+        this.registeredCapital = registeredCapital;
+    }
+
+    public Integer getMainClubID() {
+        return mainClubID;
+    }
+
+    public void setMainClubID(Integer mainClubID) {
+        this.mainClubID = mainClubID;
+    }
+
+    public Double getTurnover() {
+        return turnover;
+    }
+
+    public void setTurnover(Double turnover) {
+        this.turnover = turnover;
+    }
+
+    @Length(min = 0, max = 50, message = "联系人长度必须介于 0 和 50 之间")
+    public String getLinkMan() {
+        return linkMan;
+    }
+
+    public void setLinkMan(String linkMan) {
+        this.linkMan = linkMan;
+    }
+
+    @Length(min = 0, max = 50, message = "联系电话长度必须介于 0 和 50 之间")
+    public String getContractPhone() {
+        return contractPhone;
+    }
+
+    public void setContractPhone(String contractPhone) {
+        this.contractPhone = contractPhone;
+    }
+
+    @Length(min = 0, max = 20, message = "联系手机长度必须介于 0 和 20 之间")
+    public String getContractMobile() {
+        return contractMobile;
+    }
+
+    public void setContractMobile(String contractMobile) {
+        this.contractMobile = contractMobile;
+    }
+
+    @Length(min = 0, max = 50, message = "传真长度必须介于 0 和 50 之间")
+    public String getFax() {
+        return fax;
+    }
+
+    public void setFax(String fax) {
+        this.fax = fax;
+    }
+
+    @Length(min = 0, max = 10, message = "邮编长度必须介于 0 和 10 之间")
+    public String getZipCode() {
+        return zipCode;
+    }
+
+    public void setZipCode(String zipCode) {
+        this.zipCode = zipCode;
+    }
+
+    @Length(min = 0, max = 50, message = "联系人长度必须介于 0 和 50 之间")
+    public String getLinkMan1() {
+        return linkMan1;
+    }
+
+    public void setLinkMan1(String linkMan1) {
+        this.linkMan1 = linkMan1;
+    }
+
+    @Length(min = 0, max = 50, message = "职务长度必须介于 0 和 50 之间")
+    public String getDuty1() {
+        return duty1;
+    }
+
+    public void setDuty1(String duty1) {
+        this.duty1 = duty1;
+    }
+
+    @Length(min = 0, max = 50, message = "联系电话1长度必须介于 0 和 50 之间")
+    public String getContractPhone1() {
+        return contractPhone1;
+    }
+
+    public void setContractPhone1(String contractPhone1) {
+        this.contractPhone1 = contractPhone1;
+    }
+
+    @Length(min = 0, max = 20, message = "手机号1长度必须介于 0 和 20 之间")
+    public String getContractMobile1() {
+        return contractMobile1;
+    }
+
+    public void setContractMobile1(String contractMobile1) {
+        this.contractMobile1 = contractMobile1;
+    }
+
+    @Length(min = 0, max = 20, message = "联系QQ长度必须介于 0 和 20 之间")
+    public String getContractQQ1() {
+        return contractQQ1;
+    }
+
+    public void setContractQQ1(String contractQQ1) {
+        this.contractQQ1 = contractQQ1;
+    }
+
+    @Length(min = 0, max = 50, message = "微信号长度必须介于 0 和 50 之间")
+    public String getWechat1() {
+        return wechat1;
+    }
+
+    public void setWechat1(String wechat1) {
+        this.wechat1 = wechat1;
+    }
+
+    @Length(min = 0, max = 50, message = "联系邮箱长度必须介于 0 和 50 之间")
+    public String getContractEmail1() {
+        return contractEmail1;
+    }
+
+    public void setContractEmail1(String contractEmail1) {
+        this.contractEmail1 = contractEmail1;
+    }
+
+    @Length(min = 0, max = 50, message = "联系人长度必须介于 0 和 50 之间")
+    public String getLinkMan2() {
+        return linkMan2;
+    }
+
+    public void setLinkMan2(String linkMan2) {
+        this.linkMan2 = linkMan2;
+    }
+
+    @Length(min = 0, max = 50, message = "职务长度必须介于 0 和 50 之间")
+    public String getDuty2() {
+        return duty2;
+    }
+
+    public void setDuty2(String duty2) {
+        this.duty2 = duty2;
+    }
+
+    @Length(min = 0, max = 50, message = "联系电话长度必须介于 0 和 50 之间")
+    public String getContractPhone2() {
+        return contractPhone2;
+    }
+
+    public void setContractPhone2(String contractPhone2) {
+        this.contractPhone2 = contractPhone2;
+    }
+
+    @Length(min = 0, max = 20, message = "联系手机长度必须介于 0 和 20 之间")
+    public String getContractMobile2() {
+        return contractMobile2;
+    }
+
+    public void setContractMobile2(String contractMobile2) {
+        this.contractMobile2 = contractMobile2;
+    }
+
+    @Length(min = 0, max = 20, message = "联系QQ长度必须介于 0 和 20 之间")
+    public String getContractQQ2() {
+        return contractQQ2;
+    }
+
+    public void setContractQQ2(String contractQQ2) {
+        this.contractQQ2 = contractQQ2;
+    }
+
+    @Length(min = 0, max = 50, message = "微信号长度必须介于 0 和 50 之间")
+    public String getWechat2() {
+        return wechat2;
+    }
+
+    public void setWechat2(String wechat2) {
+        this.wechat2 = wechat2;
+    }
+
+    @Length(min = 0, max = 50, message = "联系邮箱长度必须介于 0 和 50 之间")
+    public String getContractEmail2() {
+        return contractEmail2;
+    }
+
+    public void setContractEmail2(String contractEmail2) {
+        this.contractEmail2 = contractEmail2;
+    }
+
+    @Length(min = 0, max = 100, message = "经营范围长度必须介于 0 和 100 之间")
+    public String getScope() {
+        return scope;
+    }
+
+    public void setScope(String scope) {
+        this.scope = scope;
+    }
+
+    @Length(min = 0, max = 500, message = "公司简介长度必须介于 0 和 500 之间")
+    public String getInfo() {
+        return info;
+    }
+
+    public void setInfo(String info) {
+        this.info = info;
+    }
+
+    public Double getLng() {
+        return lng;
+    }
+
+    public void setLng(Double lng) {
+        this.lng = lng;
+    }
+
+    public Double getLat() {
+        return lat;
+    }
+
+    public void setLat(Double lat) {
+        this.lat = lat;
+    }
+
+    public String getAddTime() {
+        return addTime;
+    }
+
+    public void setAddTime(String addTime) {
+        this.addTime = addTime;
+    }
+
+    public Integer getFavoriteTimes() {
+        return favoriteTimes;
+    }
+
+    public void setFavoriteTimes(Integer favoriteTimes) {
+        this.favoriteTimes = favoriteTimes;
+    }
+
+    @Length(min = 0, max = 1, message = "支付长度必须介于 0 和 1 之间")
+    public String getPayFlag1() {
+        return payFlag1;
+    }
+
+    public void setPayFlag1(String payFlag1) {
+        this.payFlag1 = payFlag1;
+    }
+
+    @Length(min = 0, max = 19, message = "审核时间长度必须介于 0 和 19 之间")
+    public String getAuditTime() {
+        return auditTime;
+    }
+
+    public void setAuditTime(String auditTime) {
+        this.auditTime = auditTime;
+    }
+
+    @Length(min = 0, max = 100, message = "审核备注长度必须介于 0 和 100 之间")
+    public String getAuditNote() {
+        return auditNote;
+    }
+
+    public void setAuditNote(String auditNote) {
+        this.auditNote = auditNote;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
+    @Length(min = 0, max = 1, message = "集团会所邀请状态长度必须介于 0 和 1 之间")
+    public String getClubInvitationStatus() {
+        return clubInvitationStatus;
+    }
+
+    public void setClubInvitationStatus(String clubInvitationStatus) {
+        this.clubInvitationStatus = clubInvitationStatus;
+    }
+
+    @Length(min = 0, max = 100, message = "收货地址长度必须介于 0 和 100 之间")
+    public String getRecAddress() {
+        return recAddress;
+    }
+
+    public void setRecAddress(String recAddress) {
+        this.recAddress = recAddress;
+    }
+
+    @Length(min = 0, max = 200, message = "营业执照长度必须介于 0 和 200 之间")
+    public String getBusinessLicenseImage() {
+        return businessLicenseImage;
+    }
+
+    public void setBusinessLicenseImage(String businessLicenseImage) {
+        this.businessLicenseImage = businessLicenseImage;
+    }
+
+    public Integer getSortIndex() {
+        return sortIndex;
+    }
+
+    public void setSortIndex(Integer sortIndex) {
+        this.sortIndex = sortIndex;
+    }
+
+    public Integer getRecTownID() {
+        return recTownID;
+    }
+
+    public void setRecTownID(Integer recTownID) {
+        this.recTownID = recTownID;
+    }
+
+    public Integer getDefaultServiceProviderID() {
+        return defaultServiceProviderID;
+    }
+
+    public void setDefaultServiceProviderID(Integer defaultServiceProviderID) {
+        this.defaultServiceProviderID = defaultServiceProviderID;
+    }
+
+    @Length(min = 0, max = 19, message = "创客更新时间长度必须介于 0 和 19 之间")
+    public String getDefaultServiceProviderUpdTime() {
+        return defaultServiceProviderUpdTime;
+    }
+
+    public void setDefaultServiceProviderUpdTime(String defaultServiceProviderUpdTime) {
+        this.defaultServiceProviderUpdTime = defaultServiceProviderUpdTime;
+    }
+
+    @Length(min = 0, max = 1, message = "第一次服务标志长度必须介于 0 和 1 之间")
+    public String getFirstServiceProviderFlag() {
+        return firstServiceProviderFlag;
+    }
+
+    public void setFirstServiceProviderFlag(String firstServiceProviderFlag) {
+        this.firstServiceProviderFlag = firstServiceProviderFlag;
+    }
+
+    @Length(min = 0, max = 20, message = "规模长度必须介于 0 和 20 之间")
+    public String getScale() {
+        return scale;
+    }
+
+    public void setScale(String scale) {
+        this.scale = scale;
+    }
+
+    public Integer getEmpnum() {
+        return empnum;
+    }
+
+    public void setEmpnum(Integer empnum) {
+        this.empnum = empnum;
+    }
+
+    @Length(min = 0, max = 200, message = "主打项目长度必须介于 0 和 200 之间")
+    public String getMainpro() {
+        return mainpro;
+    }
+
+    public void setMainpro(String mainpro) {
+        this.mainpro = mainpro;
+    }
+
+    @Length(min = 0, max = 500, message = "备注长度必须介于 0 和 500 之间")
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    @Length(min = 1, max = 2, message = "扫描状态 0待扫描 1 已扫描 2已上线长度必须介于 1 和 2 之间")
+    public String getScanFlag() {
+        return scanFlag;
+    }
+
+    public void setScanFlag(String scanFlag) {
+        this.scanFlag = scanFlag;
+    }
+
+    @Length(min = 0, max = 200, message = "门头照长度必须介于 0 和 200 之间")
+    public String getHeadpic() {
+        return headpic;
+    }
+
+    public void setHeadpic(String headpic) {
+        this.headpic = headpic;
+    }
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    public Date getLastModify() {
+        return lastModify;
+    }
+
+    public void setLastModify(Date lastModify) {
+        this.lastModify = lastModify;
+    }
+
+    public String getSpName() {
+        return spName;
+    }
+
+    public void setSpName(String spName) {
+        this.spName = spName;
+    }
+
+    public String getAccount() {
+        return account;
+    }
+
+    public void setAccount(String account) {
+        this.account = account;
+    }
+
+    public String getMobile() {
+        return mobile;
+    }
+
+    public void setMobile(String mobile) {
+        this.mobile = mobile;
+    }
+
+    public String getFromUserName() {
+        return fromUserName;
+    }
+
+    public void setFromUserName(String fromUserName) {
+        this.fromUserName = fromUserName;
+    }
+
+    public Integer getUserLevelID() {
+        return userLevelID;
+    }
+
+    public void setUserLevelID(Integer userLevelID) {
+        this.userLevelID = userLevelID;
+    }
+
+    public Date getRegisterTime() {
+        return registerTime;
+    }
+
+    public void setRegisterTime(Date registerTime) {
+        this.registerTime = registerTime;
+    }
+
+    public String getSmsFlag() {
+        return smsFlag;
+    }
+
+    public void setSmsFlag(String smsFlag) {
+        this.smsFlag = smsFlag;
+    }
+
+    public String getUserScanFlag() {
+        return userScanFlag;
+    }
+
+    public void setUserScanFlag(String userScanFlag) {
+        this.userScanFlag = userScanFlag;
+    }
+
+    public String getTown() {
+        return town;
+    }
+
+    public void setTown(String town) {
+        this.town = town;
+    }
+
+    public String getCity() {
+        return city;
+    }
+
+    public void setCity(String city) {
+        this.city = city;
+    }
+
+    public String getProvince() {
+        return province;
+    }
+
+    public void setProvince(String province) {
+        this.province = province;
+    }
+
+    @Transient
+    public String getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(String startTime) {
+        this.startTime = startTime;
+    }
+
+    @Transient
+    public String getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(String endTime) {
+        this.endTime = endTime;
+    }
+
+    public Integer getFirstClubType() {
+        return firstClubType;
+    }
+
+    public void setFirstClubType(Integer firstClubType) {
+        this.firstClubType = firstClubType;
+    }
+
+    public String getSecondClubType() {
+        return secondClubType;
+    }
+
+    public void setSecondClubType(String secondClubType) {
+        this.secondClubType = secondClubType;
+    }
+
+    public String getDepartment() {
+        return department;
+    }
+
+    public void setDepartment(String department) {
+        this.department = department;
+    }
+
+    public String getMedicalPracticeLicenseImg() {
+        return medicalPracticeLicenseImg;
+    }
+
+    public void setMedicalPracticeLicenseImg(String medicalPracticeLicenseImg) {
+        this.medicalPracticeLicenseImg = medicalPracticeLicenseImg;
+    }
+
+    public String getSocialCreditCode() {
+        return socialCreditCode;
+    }
+
+    public void setSocialCreditCode(String socialCreditCode) {
+        this.socialCreditCode = socialCreditCode;
+    }
+
+    public Integer getUserOrganizeID() {
+        return userOrganizeID;
+    }
+
+    public void setUserOrganizeID(Integer userOrganizeID) {
+        this.userOrganizeID = userOrganizeID;
+    }
+}

+ 154 - 0
src/main/java/com/caimei/modules/club/entity/Page.java

@@ -0,0 +1,154 @@
+package com.caimei.modules.club.entity;
+
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.List;
+
+public class Page<T> implements Serializable {
+    private static final long serialVersionUID = 1L;
+    private int index;//当前页码
+    private int pageSize;//每页大小
+    private int totalRecord;//总记录数
+    private int totalPage;//总页数?
+    private boolean hasNextPage;//是否有后一页
+    private boolean hasPreviousPage;//是否有前一页
+    List<T> results;//查询结果
+
+    public Page(List<T> list) {
+        if (list instanceof com.github.pagehelper.Page) {
+            com.github.pagehelper.Page<T> page = (com.github.pagehelper.Page<T>) list;
+            this.index = page.getPageNum();
+            this.pageSize = page.getPageSize();
+            this.totalRecord = (int) page.getTotal();
+            this.totalPage = page.getPages();
+            setHasPreviousAndNext();
+            this.results = page;
+        } else if (list instanceof Collection) {
+            this.index = 1;
+            this.pageSize = list.size();
+            this.totalRecord = list.size();
+            this.totalPage = 1;
+            this.results = list;
+        }
+    }
+
+    public Page(int index, int pageSize, int totalRecord, List<T> results) {
+        super();
+        this.index = index;
+        this.pageSize = pageSize;
+        this.totalRecord = totalRecord;
+        this.totalPage = totalRecord % pageSize == 0 ? totalRecord / pageSize : totalRecord / pageSize + 1;
+        this.results = results;
+        if (this.index < 2) {
+            hasPreviousPage = false;
+        } else {
+            hasPreviousPage = true;
+        }
+        if (this.index < totalPage) {
+            hasNextPage = true;
+        } else {
+            hasNextPage = false;
+        }
+    }
+
+    public Page(int index, int maxSize, int totalRecord, int totalPage,
+                List<T> results) {
+        super();
+        this.index = index;
+        this.pageSize = maxSize;
+        this.totalRecord = totalRecord;
+        this.totalPage = totalPage;
+        this.results = results;
+        if (this.index < 2) {
+            hasPreviousPage = false;
+        } else {
+            hasPreviousPage = true;
+        }
+        if (this.index < totalPage) {
+            hasNextPage = true;
+        } else {
+            hasNextPage = false;
+        }
+    }
+
+    public void setHasPreviousAndNext() {
+        if (this.index < 2) {
+            hasPreviousPage = false;
+        } else {
+            hasPreviousPage = true;
+        }
+        if (this.index < totalPage) {
+            hasNextPage = true;
+        } else {
+            hasNextPage = false;
+        }
+    }
+
+    public Page() {
+        super();
+    }
+
+    public int getIndex() {
+        return index;
+    }
+
+    public void setIndex(int index) {
+        this.index = index;
+    }
+
+    public int getPageSize() {
+        return pageSize;
+    }
+
+    public void setPageSize(int maxSize) {
+        this.pageSize = maxSize;
+    }
+
+    public int getTotalRecord() {
+        return totalRecord;
+    }
+
+    public void setTotalRecord(int totalRecord) {
+        this.totalRecord = totalRecord;
+    }
+
+    public int getTotalPage() {
+        return totalPage;
+    }
+
+    public void setTotalPage(int totalPage) {
+        this.totalPage = totalPage;
+    }
+
+    public List<T> getResults() {
+        return results;
+    }
+
+    public void setResults(List<T> results) {
+        this.results = results;
+    }
+
+
+    public boolean isHasNextPage() {
+        return hasNextPage;
+    }
+
+    public void setHasNextPage(boolean hasNextPage) {
+        this.hasNextPage = hasNextPage;
+    }
+
+    public boolean isHasPreviousPage() {
+        return hasPreviousPage;
+    }
+
+    public void setHasPreviousPage(boolean hasPreviousPage) {
+        this.hasPreviousPage = hasPreviousPage;
+    }
+
+    public int countTotalPage() {
+        int total = totalRecord % pageSize == 0 ? totalRecord / pageSize : totalRecord / pageSize + 1;
+        this.setTotalPage(total);
+        return total;
+    }
+
+}

+ 38 - 0
src/main/java/com/caimei/modules/club/entity/Province.java

@@ -0,0 +1,38 @@
+package com.caimei.modules.club.entity;
+
+public class Province implements java.io.Serializable {
+
+	private static final long serialVersionUID = 1L;
+
+	private Integer provinceID;
+	private String name;
+	private String validFlag;
+
+	public static long getSerialVersionUID() {
+		return serialVersionUID;
+	}
+
+	public Integer getProvinceID() {
+		return provinceID;
+	}
+
+	public void setProvinceID(Integer provinceID) {
+		this.provinceID = provinceID;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getValidFlag() {
+		return validFlag;
+	}
+
+	public void setValidFlag(String validFlag) {
+		this.validFlag = validFlag;
+	}
+}

+ 65 - 0
src/main/java/com/caimei/modules/club/entity/Town.java

@@ -0,0 +1,65 @@
+package com.caimei.modules.club.entity;
+
+public class Town implements java.io.Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private Integer townID;
+    private Integer cityId;
+    private String name;
+    private String zip;
+    private String telZip;
+    private String validFlag;
+
+    public static long getSerialVersionUID() {
+        return serialVersionUID;
+    }
+
+    public Integer getTownID() {
+        return townID;
+    }
+
+    public void setTownID(Integer townID) {
+        this.townID = townID;
+    }
+
+    public Integer getCityId() {
+        return cityId;
+    }
+
+    public void setCityId(Integer cityId) {
+        this.cityId = cityId;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getZip() {
+        return zip;
+    }
+
+    public void setZip(String zip) {
+        this.zip = zip;
+    }
+
+    public String getTelZip() {
+        return telZip;
+    }
+
+    public void setTelZip(String telZip) {
+        this.telZip = telZip;
+    }
+
+    public String getValidFlag() {
+        return validFlag;
+    }
+
+    public void setValidFlag(String validFlag) {
+        this.validFlag = validFlag;
+    }
+}

+ 17 - 0
src/main/java/com/caimei/modules/club/service/CmOperationUserService.java

@@ -0,0 +1,17 @@
+package com.caimei.modules.club.service;
+
+import com.caimei.modules.club.entity.CmOperationUser;
+
+import java.util.List;
+
+public interface CmOperationUserService {
+    List<CmOperationUser> findList(CmOperationUser cmOperationUser);
+
+    List<CmOperationUser> findListBuyBindMobile(CmOperationUser cmOperationUser);
+
+    List<CmOperationUser> getListByInvitationCode(CmOperationUser opUser);
+
+    void save(CmOperationUser cmOperationUser);
+
+    void untiedOperationUser(CmOperationUser cmOperationUser);
+}

+ 21 - 0
src/main/java/com/caimei/modules/club/service/CmUserOrganizeService.java

@@ -0,0 +1,21 @@
+package com.caimei.modules.club.service;
+
+import com.caimei.modules.club.entity.*;
+
+import java.util.List;
+
+public interface CmUserOrganizeService {
+    List<CmUserOrganize> findList(CmUserOrganize cmUserOrganize);
+
+    Province loadProvinceById(Integer provinceID);
+
+    City loadCityById(Integer cityID);
+
+    Town loadTownByID(Integer townID);
+
+    List<Province> getProvince();
+
+    List<City> getCity(Long provinceid);
+
+    List<Town> getTown(Integer cityid);
+}

+ 15 - 0
src/main/java/com/caimei/modules/club/service/CmUserService.java

@@ -0,0 +1,15 @@
+package com.caimei.modules.club.service;
+
+import com.caimei.modules.club.entity.CmUser;
+
+import java.util.List;
+
+public interface CmUserService {
+    List<CmUser> findListBuyUserInfo(CmUser cmUser);
+
+    List<CmUser> findListBuyBindMobile(CmUser cmUser);
+
+    void insert(CmUser cmUser);
+
+    void update(CmUser cmUser);
+}

+ 12 - 0
src/main/java/com/caimei/modules/club/service/NewCmClubService.java

@@ -0,0 +1,12 @@
+package com.caimei.modules.club.service;
+
+import com.caimei.modules.club.entity.NewCmClub;
+
+public interface NewCmClubService {
+
+    NewCmClub findClubById(Integer clubID);
+
+    void insert(NewCmClub newCmClub);
+
+    void update(NewCmClub newCmClub);
+}

+ 71 - 0
src/main/java/com/caimei/modules/club/service/impl/CmOperationUserServiceImpl.java

@@ -0,0 +1,71 @@
+package com.caimei.modules.club.service.impl;
+
+import com.caimei.modules.club.dao.CmOperationUserDao;
+import com.caimei.modules.club.entity.CmOperationUser;
+import com.caimei.modules.club.service.CmOperationUserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.thymeleaf.util.StringUtils;
+
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.List;
+
+@Service
+public class CmOperationUserServiceImpl implements CmOperationUserService {
+    @Autowired
+    private CmOperationUserDao cmOperationUserDao;
+
+    @Override
+    public List<CmOperationUser> findList(CmOperationUser cmOperationUser) {
+        List<CmOperationUser> operationUserList = cmOperationUserDao.findList(cmOperationUser);
+        if (null != operationUserList) {
+            for (CmOperationUser user : operationUserList) {//判断邀请码是否有效
+                String status = user.getStatus();//1未绑定,2已绑定
+                if (StringUtils.equals("2", status)) {
+                    user.setEffectiveFlag("2");//邀请码是否有效 1有效,2已使用,3已失效
+                } else {
+                    Date invitationCodeTime = user.getInvitationCodeTime();
+                    if (null != invitationCodeTime) {
+                        Calendar calendar = new GregorianCalendar();
+                        calendar.setTime(invitationCodeTime);
+                        calendar.add(Calendar.DATE, 7);// num为增加的天数,可以改变的
+                        invitationCodeTime = calendar.getTime();
+                        boolean before = invitationCodeTime.before(new Date());
+                        if (before) {//如果验证码时间加上168小时小于当前时间则已过期
+                            user.setEffectiveFlag("3");
+                        } else {
+                            user.setEffectiveFlag("1");
+                        }
+                    }
+                }
+            }
+        }
+        return operationUserList;
+    }
+
+    @Override
+    public List<CmOperationUser> findListBuyBindMobile(CmOperationUser cmOperationUser) {
+        return cmOperationUserDao.findListBuyBindMobile(cmOperationUser);
+    }
+
+    @Override
+    public List<CmOperationUser> getListByInvitationCode(CmOperationUser opUser) {
+        return cmOperationUserDao.getListByInvitationCode(opUser);
+    }
+
+    @Override
+    public void save(CmOperationUser cmOperationUser) {
+        if (cmOperationUser.getId() == null) {
+            cmOperationUserDao.insert(cmOperationUser);
+        } else {
+            cmOperationUserDao.update(cmOperationUser);
+        }
+    }
+
+    @Override
+    public void untiedOperationUser(CmOperationUser cmOperationUser) {
+        cmOperationUserDao.untiedOperationUser(cmOperationUser);
+    }
+}

+ 54 - 0
src/main/java/com/caimei/modules/club/service/impl/CmUserOrganizeServiceImpl.java

@@ -0,0 +1,54 @@
+package com.caimei.modules.club.service.impl;
+
+import com.caimei.modules.club.dao.CmUserOrganizeDao;
+import com.caimei.modules.club.entity.City;
+import com.caimei.modules.club.entity.CmUserOrganize;
+import com.caimei.modules.club.entity.Province;
+import com.caimei.modules.club.entity.Town;
+import com.caimei.modules.club.service.CmUserOrganizeService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class CmUserOrganizeServiceImpl implements CmUserOrganizeService {
+    @Autowired
+    private CmUserOrganizeDao cmUserOrganizeDao;
+
+    @Override
+    public List<CmUserOrganize> findList(CmUserOrganize cmUserOrganize) {
+        List<CmUserOrganize> userOrganizeList = cmUserOrganizeDao.findList(cmUserOrganize);
+        return userOrganizeList;
+    }
+
+    @Override
+    public Province loadProvinceById(Integer provinceID) {
+        return cmUserOrganizeDao.loadProvinceById(provinceID);
+    }
+
+    @Override
+    public City loadCityById(Integer cityID) {
+        return cmUserOrganizeDao.loadCityById(cityID);
+    }
+
+    @Override
+    public Town loadTownByID(Integer townID) {
+        return cmUserOrganizeDao.loadTownByID(townID);
+    }
+
+    @Override
+    public List<Province> getProvince() {
+        return cmUserOrganizeDao.findAllProvince();
+    }
+
+    @Override
+    public List<City> getCity(Long provinceid) {
+        return cmUserOrganizeDao.findAllCity(provinceid);
+    }
+
+    @Override
+    public List<Town> getTown(Integer cityid) {
+        return cmUserOrganizeDao.findAllTown(cityid);
+    }
+}

+ 35 - 0
src/main/java/com/caimei/modules/club/service/impl/CmUserServiceImpl.java

@@ -0,0 +1,35 @@
+package com.caimei.modules.club.service.impl;
+
+import com.caimei.modules.club.dao.CmUserDao;
+import com.caimei.modules.club.entity.CmUser;
+import com.caimei.modules.club.service.CmUserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class CmUserServiceImpl implements CmUserService {
+    @Autowired
+    private CmUserDao cmUserDao;
+
+    @Override
+    public List<CmUser> findListBuyUserInfo(CmUser cmUser) {
+        return cmUserDao.findListBuyUserInfo(cmUser);
+    }
+
+    @Override
+    public List<CmUser> findListBuyBindMobile(CmUser cmUser) {
+        return cmUserDao.findListBuyBindMobile(cmUser);
+    }
+
+    @Override
+    public void insert(CmUser cmUser) {
+        cmUserDao.insert(cmUser);
+    }
+
+    @Override
+    public void update(CmUser cmUser) {
+        cmUserDao.update(cmUser);
+    }
+}

+ 36 - 0
src/main/java/com/caimei/modules/club/service/impl/NewCmClubServiceImpl.java

@@ -0,0 +1,36 @@
+package com.caimei.modules.club.service.impl;
+
+import com.caimei.modules.club.dao.NewCmClubDao;
+import com.caimei.modules.club.entity.NewCmClub;
+import com.caimei.modules.club.service.NewCmClubService;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class NewCmClubServiceImpl implements NewCmClubService {
+    @Autowired
+    private NewCmClubDao newCmClubDao;
+
+    @Override
+    public NewCmClub findClubById(Integer clubID) {
+        List<NewCmClub> newCmClubs = newCmClubDao.findClubById(clubID);
+        if (CollectionUtils.isNotEmpty(newCmClubs) && newCmClubs.size() > 0) {
+            return newCmClubs.get(0);
+        } else {
+            return null;
+        }
+    }
+
+    @Override
+    public void insert(NewCmClub newCmClub) {
+        newCmClubDao.insert(newCmClub);
+    }
+
+    @Override
+    public void update(NewCmClub newCmClub) {
+        newCmClubDao.update(newCmClub);
+    }
+}

+ 49 - 0
src/main/java/com/caimei/modules/fastDFS/FastDFSClient.java

@@ -0,0 +1,49 @@
+package com.caimei.modules.fastDFS;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+import com.github.tobato.fastdfs.domain.StorePath;
+import com.github.tobato.fastdfs.proto.storage.DownloadByteArray;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.FilenameUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import com.github.tobato.fastdfs.service.FastFileStorageClient;
+
+@Component
+public class FastDFSClient {
+    @Autowired
+    private FastFileStorageClient storageClient;
+
+
+    // 文件上传
+    public String uploadFile(String path) throws FileNotFoundException{
+        File file = new File(path);
+        InputStream input = new FileInputStream(file);
+        long size = FileUtils.sizeOf(file);
+        String name = file.getName();
+        String fileName = name.substring(name.lastIndexOf("/")+1);
+        StorePath storePath = storageClient.uploadFile(input,size, FilenameUtils.getExtension(fileName),null);
+        return storePath.getFullPath();
+    }
+
+    // 文件下载
+    public boolean downloadFile(String path,String downloadFilePath) throws IOException{
+        File file = new File(downloadFilePath);
+        FileOutputStream outputStream = null;
+        // fastdfs 文件读取
+        String filepath = path.substring(path.lastIndexOf("group1/")+7);
+        DownloadByteArray callback = new DownloadByteArray();
+        byte[] content = storageClient.downloadFile("group1", filepath,callback);
+        // 数据写入指定文件夹中
+        outputStream = new FileOutputStream(file);
+        outputStream.write(content);
+        return true;
+    }
+
+}

+ 49 - 0
src/main/java/com/caimei/modules/order/controller/CmOrderRemarkController.java

@@ -0,0 +1,49 @@
+package com.caimei.modules.order.controller;
+
+
+import com.caimei.modules.order.entity.CmOrderRemark;
+import com.caimei.modules.order.service.CmOrderRemarkService;
+import com.caimei.utils.JsonModel;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.util.List;
+
+/**
+ * 订单备注Controller
+ */
+@Controller
+@RequestMapping(value = "/order/cmOrderRemark")
+public class CmOrderRemarkController {
+
+    @Autowired
+    private CmOrderRemarkService cmOrderRemarkService;
+
+    @ModelAttribute
+    public CmOrderRemark get(@RequestParam(required = false) String id) {
+        CmOrderRemark entity = null;
+        if (StringUtils.isNotBlank(id)) {
+            entity = cmOrderRemarkService.get(id);
+        }
+        if (entity == null) {
+            entity = new CmOrderRemark();
+        }
+        return entity;
+    }
+
+    //订单备注
+    @ResponseBody
+    @RequestMapping(value = "remarksView")
+    public JsonModel remarksView(Integer orderID) {
+        //通过商品ID获取对应备注信息
+        CmOrderRemark remark = new CmOrderRemark();
+        remark.setOrderID(orderID);
+        List<CmOrderRemark> remarksList = cmOrderRemarkService.findList(remark);
+        return JsonModel.newInstance().success(remarksList);
+    }
+}

+ 85 - 0
src/main/java/com/caimei/modules/order/controller/CmReturnedPurchaseController.java

@@ -0,0 +1,85 @@
+package com.caimei.modules.order.controller;
+
+import com.caimei.modules.club.entity.Page;
+import com.caimei.modules.order.entity.BpClause;
+import com.caimei.modules.order.entity.CmReturnedPurchase;
+import com.caimei.modules.order.entity.NewOrder;
+import com.caimei.modules.order.service.BpClauseService;
+import com.caimei.modules.order.service.CmReturnedPurchaseService;
+import com.caimei.modules.order.service.NewOrderService;
+import com.caimei.utils.JsonModel;
+import com.github.pagehelper.PageHelper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 退货退款Controller
+ */
+@Controller
+@RequestMapping(value = "/order/cmReturnedPurchase")
+public class CmReturnedPurchaseController {
+    @Autowired
+    private CmReturnedPurchaseService cmReturnedPurchaseService;
+    @Autowired
+    private NewOrderService newOrderService;
+    @Autowired
+    private BpClauseService bpClauseService;
+
+
+    /**
+     * 用户退款列表
+     *
+     * @param cmReturnedPurchase
+     * @param page
+     * @return
+     */
+    @ResponseBody
+    @RequestMapping(value = "list")
+    public JsonModel list(CmReturnedPurchase cmReturnedPurchase, Page page) {
+        PageHelper.startPage(page.getIndex(), page.getPageSize());
+        List<CmReturnedPurchase> returnedPurchaseList = cmReturnedPurchaseService.findList(cmReturnedPurchase);
+        Page<CmReturnedPurchase> purchasePage = new Page<>(returnedPurchaseList);
+        return JsonModel.newInstance().success(purchasePage);
+    }
+
+    /**
+     * 退款详情
+     */
+    @ResponseBody
+    @RequestMapping(value = "toRecturnRecord")
+    public JsonModel toRecturnRecord(CmReturnedPurchase cmReturnedPurchase) {
+        Map<String, Object> map = new HashMap();
+        try {
+            NewOrder newOrder = newOrderService.get(cmReturnedPurchase.getOrderID().toString());
+            List<CmReturnedPurchase> dataList = cmReturnedPurchaseService.getReturnedPurchaseList(cmReturnedPurchase);
+            BpClause bpClause = new BpClause();
+            bpClause.setEnabledStatus("1");
+            List<BpClause> bpClauses = bpClauseService.findList(bpClause);
+            Double returnedPurchaseFee = 0D;    //退款(退货)总金额
+            Double refundFee = 0D;  //退款总额(给买家)
+            for (CmReturnedPurchase bean : dataList) {
+                if (!bean.getStatus().equals("3")) {
+                    returnedPurchaseFee += bean.getReturnedPurchaseFee();
+                    refundFee += bean.getRefundFee();
+                }
+            }
+            map.put("bpClauses", bpClauses);
+            map.put("cmReturnedPurchaseList", dataList);
+            map.put("order", newOrder);
+            map.put("returnedPurchaseFee", returnedPurchaseFee);
+            map.put("refundFee", refundFee);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return JsonModel.newInstance().success(map);
+    }
+}

+ 234 - 0
src/main/java/com/caimei/modules/order/controller/OrganizeOrderController.java

@@ -0,0 +1,234 @@
+package com.caimei.modules.order.controller;
+
+import com.caimei.modules.club.entity.Page;
+import com.caimei.modules.order.entity.*;
+import com.caimei.modules.order.service.*;
+import com.caimei.utils.JsonModel;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+/**
+ * 组织订单
+ */
+@Controller
+@RequestMapping(value = "/order/organize")
+public class OrganizeOrderController {
+    @Autowired
+    private NewOrderService newOrderService;
+    @Autowired
+    private BpClauseService bpClauseService;
+    @Autowired
+    private CmReturnedPurchaseService cmReturnedPurchaseService;
+    @Autowired
+    private CmReceiptOrderRelationService cmReceiptOrderRelationService;
+    @Autowired
+    private NewOrderConfigService newOrderConfigService;
+    @Autowired
+    private CmDiscernReceiptService cmDiscernReceiptService;
+    @Autowired
+    private NewShopOrderService newShopOrderService;
+
+    @ModelAttribute
+    public NewOrder getOrder(@RequestParam(required = false) String id) {
+        NewOrder entity = null;
+        if (StringUtils.isNotBlank(id)) {
+            entity = newOrderService.get(id);
+        }
+        if (entity == null) {
+            entity = new NewOrder();
+        }
+        return entity;
+    }
+
+    /**
+     * 订单列表
+     */
+    @ResponseBody
+    @RequestMapping("orderList")
+    public JsonModel orderList(NewOrder order, Page page) {
+        if (null != order.getStartTime() && !"".equals(order.getStartTime()) && !order.getStartTime().endsWith("00:00:00")) {
+            order.setStartTime(order.getStartTime() + " 00:00:00");
+        }
+        if (null != order.getEndTime() && !"".equals(order.getEndTime()) && !order.getEndTime().endsWith("23:59:59")) {
+            order.setEndTime(order.getEndTime() + " 23:59:59");
+        }
+        if (null != order.getStartRefundTime() && !"".equals(order.getStartRefundTime()) && !order.getStartRefundTime().endsWith("00:00:00")) {
+            order.setStartRefundTime(order.getStartRefundTime() + " 00:00:00");
+        }
+        if (null != order.getEndRefundTime() && !"".equals(order.getEndRefundTime()) && !order.getEndRefundTime().endsWith("23:59:59")) {
+            order.setEndRefundTime(order.getEndRefundTime() + " 23:59:59");
+        }
+        if (null != order.getBuyer()) {
+            order.setBuyer(order.getBuyer().trim());
+        }
+        if (null != order.getReceiver()) {
+            order.setReceiver(order.getReceiver().trim());
+        }
+        //查询内部处理了已收,未付统计(包含运费)
+        Page<NewOrder> orderPage = newOrderService.findList(order, page);
+        return JsonModel.newInstance().success(orderPage);
+    }
+
+    /**
+     * 订单详情
+     */
+    @ResponseBody
+    @RequestMapping("detail")
+    public JsonModel detail(NewOrder order) {
+        Map<String, Object> map = new HashMap();
+        BpClause bpClause = new BpClause();
+        bpClause.setEnabledStatus("1");
+        List<BpClause> bpClauses = bpClauseService.findList(bpClause);
+        map.put("bpClauses", bpClauses);
+        //获取订单是否可以申请付款
+        List<Integer> oId = new ArrayList<>();
+        oId.add(order.getOrderID());
+        List<Integer> orderIdsInApplyReturn = cmReturnedPurchaseService.findOrderIDsInApplyReturnFlag(oId);
+        if (CollectionUtils.isNotEmpty(orderIdsInApplyReturn) && orderIdsInApplyReturn.size() > 0) {
+            order.setApplyReturnedPurchaseFlag("0");
+        } else {
+            order.setApplyReturnedPurchaseFlag("1");
+        }
+        //判断是否有在收款审核的订单
+        List<Integer> ids = cmReceiptOrderRelationService.toAudit(order.getOrderID());
+        if (ids != null && ids.size() > 0) {
+            order.setToAudit("1");
+        }
+        //一个子订单只有一个商品时,不可拆分
+        int count = 0;
+        for (NewShopOrder newShopOrder : order.getNewShopOrders()) {
+            if (newShopOrder.getShopID() != 998) {
+                count++;
+            }
+        }
+        if (order.getProductCount() == null) {
+            order.setProductCount(1);
+        }
+        if (order.getProductCount() <= count) {
+            order.setSplitFlag("0");
+        }
+        map.put("order", order);
+        if ("0".equals(order.getStatus())) {
+            try {
+                NewOrderConfig confirmOverTime = newOrderConfigService.getValueByKey("confirmOverTime");
+                Double value = confirmOverTime.getValue(); //待确认超过 value 小时自动取消订单
+                GregorianCalendar gc = new GregorianCalendar();
+                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                Date orderTime = sdf.parse(order.getOrderTime());
+                gc.setTime(orderTime);
+                gc.add(Calendar.HOUR, value.intValue());
+                Date time = gc.getTime();
+                String ot = sdf.format(time);
+                if (time.after(new Date())) map.put("time", ot);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+        CmReturnedPurchase cmReturnedPurchase = new CmReturnedPurchase();
+        cmReturnedPurchase.setStatus("2");
+        cmReturnedPurchase.setOrderID(order.getOrderID());
+        List<CmReturnedPurchase> dataList = cmReturnedPurchaseService.getReturnedPurchaseList(cmReturnedPurchase);
+        Double returnedPurchaseFee = 0D;    //退款(退货)总金额
+        Double refundFee = 0D;  //退款总额(给买家)
+        for (CmReturnedPurchase bean : dataList) {
+            if (!bean.getStatus().equals("3")) {
+                returnedPurchaseFee += bean.getReturnedPurchaseFee();
+                refundFee += bean.getRefundFee();
+            }
+        }
+        Double returnValue = 0d;   //退货价值
+        if (order.getDiscountFee() >= returnedPurchaseFee) {
+            returnValue = 0d;   //如果经理折扣大于退款(退货)总金额之和  那么先抵扣经理折扣  退款价值为0
+        } else {
+            returnValue = returnedPurchaseFee - order.getDiscountFee(); //抵用完经理折扣后才是真实价值
+        }
+        //订单已收金额
+        Double receiptAmount = cmDiscernReceiptService.findOrderReceipt(order.getOrderID());
+        map.put("returnValue", returnValue);
+        map.put("receiptAmount", receiptAmount == null ? 0 : receiptAmount);
+        map.put("returnedPurchaseFee", returnedPurchaseFee);
+        return JsonModel.newInstance().success(map);
+    }
+
+    /**
+     * 发货记录
+     */
+    @ResponseBody
+    @RequestMapping("logisticsDetails")
+    public JsonModel logisticsDetails(Integer orderID, String logisticsBatchID) {
+        List<LogisticsInfoVo> logisticsInfoVos = new ArrayList<>();
+        logisticsInfoVos = newShopOrderService.logisticsDetails(orderID, logisticsBatchID);
+        return JsonModel.newInstance().success(logisticsInfoVos);
+    }
+
+    /**
+     * 收退款记录
+     */
+    @ResponseBody
+    @RequestMapping(value = "toRefundRecord")
+    public JsonModel toRefundRecord(CmReturnedPurchase cmReturnedPurchase, String from) {
+        JsonModel jsonModel = JsonModel.newInstance();
+        Map<String, Object> map = new HashMap();
+        try {
+            NewOrder newOrder = newOrderService.get(cmReturnedPurchase.getOrderID().toString());
+            List<CmReceiptOrderRelation> listRelation = cmReceiptOrderRelationService.findByOrderID(newOrder.getOrderID());
+            List<CmReturnedPurchase> dataList = cmReturnedPurchaseService.getReturnedPurchaseList(cmReturnedPurchase);
+            Double refundFee = 0D;  //退款总额
+            for (CmReturnedPurchase bean : dataList) {
+                if (!bean.getStatus().equals("3")) {
+                    refundFee += bean.getRefundFee();
+                }
+            }
+            map.put("cmReturnedPurchaseList", dataList);
+            map.put("order", newOrder);
+            map.put("receipt", listRelation);
+            map.put("refundFee", refundFee);
+            map.put("from", from);
+            map.put("orderID", cmReturnedPurchase.getOrderID().toString());
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return jsonModel.success(map);
+    }
+
+    /**
+     * 退款退货记录
+     */
+    @ResponseBody
+    @RequestMapping(value = "toRecturnRecordByOrderID")
+    public JsonModel toRecturnRecordByOrderID(CmReturnedPurchase cmReturnedPurchase) {
+        Map<String, Object> map = new HashMap();
+        try {
+            NewOrder newOrder = newOrderService.get(cmReturnedPurchase.getOrderID().toString());
+            List<CmReturnedPurchase> dataList = cmReturnedPurchaseService.getReturnedPurchaseList(cmReturnedPurchase);
+            Double returnedPurchaseFee = 0D;    //退款(退货)总金额
+            Double refundFee = 0D;  //退款总额(给买家)
+            for (CmReturnedPurchase bean : dataList) {
+                if (!bean.getStatus().equals("3")) {
+                    returnedPurchaseFee += bean.getReturnedPurchaseFee();
+                    refundFee += bean.getRefundFee();
+                }
+            }
+            BpClause bpClause = new BpClause();
+            bpClause.setEnabledStatus("1");
+            List<BpClause> bpClauses = bpClauseService.findList(bpClause);
+            map.put("bpClauses", bpClauses);
+            map.put("cmReturnedPurchaseList", dataList);
+            map.put("order", newOrder);
+            map.put("returnedPurchaseFee", returnedPurchaseFee);
+            map.put("refundFee", refundFee);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return JsonModel.newInstance().success(map);
+    }
+}

+ 11 - 0
src/main/java/com/caimei/modules/order/dao/BpClauseDao.java

@@ -0,0 +1,11 @@
+package com.caimei.modules.order.dao;
+
+import com.caimei.modules.order.entity.BpClause;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+@Mapper
+public interface BpClauseDao {
+    List<BpClause> findList(BpClause bpClause);
+}

+ 13 - 0
src/main/java/com/caimei/modules/order/dao/CmDiscernReceiptDao.java

@@ -0,0 +1,13 @@
+package com.caimei.modules.order.dao;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface CmDiscernReceiptDao {
+    List<Integer> findRebateOrderID(@Param("orderIds") List<Integer> collect);
+
+    Double findOrderReceipt(Integer orderID);
+}

+ 18 - 0
src/main/java/com/caimei/modules/order/dao/CmOrderRemarkDao.java

@@ -0,0 +1,18 @@
+package com.caimei.modules.order.dao;
+
+import com.caimei.modules.order.entity.CmOrderRemark;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+@Mapper
+public interface CmOrderRemarkDao{
+
+    CmOrderRemark get(String id);
+
+    List<CmOrderRemark> findList(CmOrderRemark remark);
+
+    void insert(CmOrderRemark remark);
+
+    void update(CmOrderRemark remark);
+}

+ 8 - 0
src/main/java/com/caimei/modules/order/dao/CmPayShopRecordDao.java

@@ -0,0 +1,8 @@
+package com.caimei.modules.order.dao;
+
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface CmPayShopRecordDao {
+    Double sumByShopOrderID(Integer shopOrderID);
+}

+ 12 - 0
src/main/java/com/caimei/modules/order/dao/CmProductSnDao.java

@@ -0,0 +1,12 @@
+package com.caimei.modules.order.dao;
+
+import com.caimei.modules.club.entity.CmProductSn;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface CmProductSnDao {
+    List<CmProductSn> getListSignByOrderProduct(@Param("orderProductID") Integer orderProductID, @Param("shopOrderID") Integer shopOrderID);
+}

+ 13 - 0
src/main/java/com/caimei/modules/order/dao/CmReceiptOrderRelationDao.java

@@ -0,0 +1,13 @@
+package com.caimei.modules.order.dao;
+
+import com.caimei.modules.order.entity.CmReceiptOrderRelation;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+@Mapper
+public interface CmReceiptOrderRelationDao {
+    List<Integer> toAudit(Integer orderID);
+
+    List<CmReceiptOrderRelation> findByOrderID(Integer orderID);
+}

+ 16 - 0
src/main/java/com/caimei/modules/order/dao/CmReturnedPurchaseDao.java

@@ -0,0 +1,16 @@
+package com.caimei.modules.order.dao;
+
+import com.caimei.modules.order.entity.CmReturnedPurchase;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface CmReturnedPurchaseDao {
+    List<Integer> findOrderIDInReturnPurchase(@Param("orderIds") List<Integer> oId);
+
+    List<Integer> findOrderIDsInApplyReturnFlag(@Param("orderIds") List<Integer> oId);
+
+    List<CmReturnedPurchase> findList(CmReturnedPurchase cmReturnedPurchase);
+}

+ 16 - 0
src/main/java/com/caimei/modules/order/dao/CmReturnedPurchaseProductDao.java

@@ -0,0 +1,16 @@
+package com.caimei.modules.order.dao;
+
+import com.caimei.modules.order.entity.CmReturnedPurchaseProduct;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface CmReturnedPurchaseProductDao {
+    List<CmReturnedPurchaseProduct> findList(CmReturnedPurchaseProduct cmReturnedPurchaseProduct);
+
+    List<CmReturnedPurchaseProduct> getCmReturnedPurchaseProductList(CmReturnedPurchaseProduct purchaseProduct);
+
+    List<CmReturnedPurchaseProduct> findListByReturnTime(@Param("orderID")Integer orderID, @Param("shopOrderID")Integer shopOrderID, @Param("orderProductID")Integer orderProductID, @Param("returnTime")String returnTime);
+}

+ 12 - 0
src/main/java/com/caimei/modules/order/dao/LogisticsBatchDao.java

@@ -0,0 +1,12 @@
+package com.caimei.modules.order.dao;
+
+import com.caimei.modules.order.entity.LogisticsBatch;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface LogisticsBatchDao {
+    List<LogisticsBatch> findBatch(@Param("orderID")Integer orderID, @Param("logisticsBatchID")String logisticsBatchID);
+}

+ 12 - 0
src/main/java/com/caimei/modules/order/dao/LogisticsInformationDao.java

@@ -0,0 +1,12 @@
+package com.caimei.modules.order.dao;
+
+import com.caimei.modules.order.entity.LogisticsInformation;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface LogisticsInformationDao {
+    List<LogisticsInformation> findByLogisticsBatchID(@Param("logisticsBatchID") Integer logisticsBatchID);
+}

+ 12 - 0
src/main/java/com/caimei/modules/order/dao/LogisticsRecordDao.java

@@ -0,0 +1,12 @@
+package com.caimei.modules.order.dao;
+
+import com.caimei.modules.order.entity.LogisticsRecord;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface LogisticsRecordDao {
+    List<LogisticsRecord> findByLogisticsBatchID(@Param("logisticsBatchID") Integer logisticsBatchID);
+}

+ 10 - 0
src/main/java/com/caimei/modules/order/dao/NewOrderConfigDao.java

@@ -0,0 +1,10 @@
+package com.caimei.modules.order.dao;
+
+import com.caimei.modules.order.entity.NewOrderConfig;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+@Mapper
+public interface NewOrderConfigDao {
+    NewOrderConfig getValueByKey(@Param("key") String key);
+}

+ 13 - 0
src/main/java/com/caimei/modules/order/dao/NewOrderDao.java

@@ -0,0 +1,13 @@
+package com.caimei.modules.order.dao;
+
+import com.caimei.modules.order.entity.NewOrder;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+@Mapper
+public interface NewOrderDao {
+    List<NewOrder> findList(NewOrder newOrder);
+
+    NewOrder get(String id);
+}

+ 19 - 0
src/main/java/com/caimei/modules/order/dao/NewOrderProductDao.java

@@ -0,0 +1,19 @@
+package com.caimei.modules.order.dao;
+
+import com.caimei.modules.order.entity.NewOrderProduct;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+@Mapper
+public interface NewOrderProductDao {
+    NewOrderProduct get(Integer orderProductID);
+
+    List<NewOrderProduct> findListByShopOrderID(Integer shopOrderID);
+
+    Integer getReturningNum(Integer orderProductID);
+
+    Integer getReturnedNum(Integer orderProductID);
+
+    Integer getReceivedNum(Integer orderProductID);
+}

+ 15 - 0
src/main/java/com/caimei/modules/order/dao/NewShopOrderDao.java

@@ -0,0 +1,15 @@
+package com.caimei.modules.order.dao;
+
+import com.caimei.modules.order.entity.NewShopOrder;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+@Mapper
+public interface NewShopOrderDao {
+    NewShopOrder get(Integer shopOrderID);
+
+    NewShopOrder findByShopOrderID(Integer shopOrderID);
+
+    List<NewShopOrder> findListByOrderID(Integer orderID);
+}

+ 9 - 0
src/main/java/com/caimei/modules/order/dao/OrderInvoiceDao.java

@@ -0,0 +1,9 @@
+package com.caimei.modules.order.dao;
+
+import com.caimei.modules.order.entity.OrderInvoice;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface OrderInvoiceDao {
+    OrderInvoice getWithorderId(String orderId);
+}

+ 9 - 0
src/main/java/com/caimei/modules/order/dao/OrderUserInfoDao.java

@@ -0,0 +1,9 @@
+package com.caimei.modules.order.dao;
+
+import com.caimei.modules.order.entity.OrderUserInfo;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface OrderUserInfoDao {
+    OrderUserInfo findByOrderID(Integer orderID);
+}

+ 8 - 0
src/main/java/com/caimei/modules/order/dao/ProductDao.java

@@ -0,0 +1,8 @@
+package com.caimei.modules.order.dao;
+
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface ProductDao {
+    String findProductBigTypeByProductID(Integer productID);
+}

+ 63 - 0
src/main/java/com/caimei/modules/order/entity/BpClause.java

@@ -0,0 +1,63 @@
+package com.caimei.modules.order.entity;
+
+import java.io.Serializable;
+
+/**
+ * 条款信息Entity
+ *
+ * @author LG
+ * @version 2017-08-24
+ */
+public class BpClause implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+    private Integer id;
+    private String name;        // 名称
+    private String content;        // 内容
+    private String clauseType; //条款类型,0不需要分期中显示 1需要分期中显示,2分期不分期中都显示
+    private String enabledStatus;        // 启用/禁用状态
+
+    public static long getSerialVersionUID() {
+        return serialVersionUID;
+    }
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    public String getClauseType() {
+        return clauseType;
+    }
+
+    public void setClauseType(String clauseType) {
+        this.clauseType = clauseType;
+    }
+
+    public String getEnabledStatus() {
+        return enabledStatus;
+    }
+
+    public void setEnabledStatus(String enabledStatus) {
+        this.enabledStatus = enabledStatus;
+    }
+}

+ 80 - 0
src/main/java/com/caimei/modules/order/entity/CmOrderRemark.java

@@ -0,0 +1,80 @@
+package com.caimei.modules.order.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class CmOrderRemark implements Serializable {
+
+    private Integer id;
+    private Integer orderID; // 主订单ID
+    private Integer shopOrderID;  // 子订单ID
+    private String no;
+    private String remarks;    // 备注
+    private Integer createBy;    // 创建者
+    private Date createDate;    // 创建日期
+    private String sysUserName;    //创建账户
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getOrderID() {
+        return orderID;
+    }
+
+    public void setOrderID(Integer orderID) {
+        this.orderID = orderID;
+    }
+
+    public Integer getShopOrderID() {
+        return shopOrderID;
+    }
+
+    public void setShopOrderID(Integer shopOrderID) {
+        this.shopOrderID = shopOrderID;
+    }
+
+    public String getNo() {
+        return no;
+    }
+
+    public void setNo(String no) {
+        this.no = no;
+    }
+
+    public String getRemarks() {
+        return remarks;
+    }
+
+    public void setRemarks(String remarks) {
+        this.remarks = remarks;
+    }
+
+    public Integer getCreateBy() {
+        return createBy;
+    }
+
+    public void setCreateBy(Integer createBy) {
+        this.createBy = createBy;
+    }
+
+    public Date getCreateDate() {
+        return createDate;
+    }
+
+    public void setCreateDate(Date createDate) {
+        this.createDate = createDate;
+    }
+
+    public String getSysUserName() {
+        return sysUserName;
+    }
+
+    public void setSysUserName(String sysUserName) {
+        this.sysUserName = sysUserName;
+    }
+}

+ 86 - 0
src/main/java/com/caimei/modules/order/entity/CmReceiptOrderRelation.java

@@ -0,0 +1,86 @@
+package com.caimei.modules.order.entity;
+
+import java.io.Serializable;
+
+/**
+ * 收款项和订单关系Entity
+ *
+ * @author lwt
+ * @version 2019-06-20
+ */
+public class CmReceiptOrderRelation implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+    private Integer id;
+    private String relationType;        // 关系类型:1返佣订单(返佣款)、2非返佣订单(订单款或者非订单款)
+    private String receiptID;        // 识别款项Id(对应cm_discern_receipt表)
+    private String associateAmount;        // 关联金额:1普通收款(线下):收款具体对该应母订单的收金额、2线上支付:付款金额就等于该金额、3返佣收款:默认为0
+    private String orderID;        // 订单Id(relationType值为1是为子订单ID,为2时为主订单ID)
+    private String payType;    //收款类型
+    private String receiptDate;    //收款时间
+    private String confirmType;        //确认订单类型
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getRelationType() {
+        return relationType;
+    }
+
+    public void setRelationType(String relationType) {
+        this.relationType = relationType;
+    }
+
+    public String getReceiptID() {
+        return receiptID;
+    }
+
+    public void setReceiptID(String receiptID) {
+        this.receiptID = receiptID;
+    }
+
+    public String getAssociateAmount() {
+        return associateAmount;
+    }
+
+    public void setAssociateAmount(String associateAmount) {
+        this.associateAmount = associateAmount;
+    }
+
+    public String getOrderID() {
+        return orderID;
+    }
+
+    public void setOrderID(String orderID) {
+        this.orderID = orderID;
+    }
+
+    public String getPayType() {
+        return payType;
+    }
+
+    public void setPayType(String payType) {
+        this.payType = payType;
+    }
+
+    public String getReceiptDate() {
+        return receiptDate;
+    }
+
+    public void setReceiptDate(String receiptDate) {
+        this.receiptDate = receiptDate;
+    }
+
+    public String getConfirmType() {
+        return confirmType;
+    }
+
+    public void setConfirmType(String confirmType) {
+        this.confirmType = confirmType;
+    }
+}

+ 430 - 0
src/main/java/com/caimei/modules/order/entity/CmReturnedPurchase.java

@@ -0,0 +1,430 @@
+package com.caimei.modules.order.entity;
+
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 退货退款Entity
+ *
+ * @author ye.qin
+ * @version 2019-05-24
+ */
+public class CmReturnedPurchase implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+    private Integer id;
+    private String returnedNo;        // 退款退货编号
+    private Integer orderID;        // 主订单ID
+    private Integer organizeID;    //组织id
+    private String orderNo;         //主订单号
+    private String userName;        //买家名
+    //	private Integer shopOrderID;		// 子订单Id
+    private Integer userID;        // 用户ID(买家)
+    private String status;        // 状态:1待审核、2审核通过、3审核不通过
+    private String returnedWay;        // 退款方式 1有支付有退款(退款方式可多选具体参考以上金额)、4未支付无退款(未支付发起退款)
+    private String payType;//付款方式 付款方式 1建设银行7297, 2中信银行0897, 3中信银行7172, 4广发银行0115, 5广发银行5461
+    private String returnedBankInfo;        // 退款银行信息(银行名称、户名、开户行、银行账号)【V6.1.1版本已废弃拆分显示】
+    private String operatingOrderStatus;    //发起该操作时订单状态快照:0待确认,11待收待发,12待收部发,13待收全发,21部收待发,22部收部发,23部收全发,31已收待发,32已收部发,33已收全发,4交易完成,5订单完成,6已关闭,7交易全退
+    private Double returnedPurchaseFee;        // 退款(退货)总金额
+    private Double refundFee;        // 退款总额(给买家)
+    private String image1;        // 凭证图片1
+    private String image2;        // 凭证图片2
+    private String image3;        // 凭证图片3
+    private String image4;        // 凭证图片4
+    private String image5;        // 凭证图片5
+
+    private String reviewImage1;        // 凭证图片1
+    private String reviewImage2;        // 凭证图片2
+    private String reviewImage3;        // 凭证图片3
+    private String reviewImage4;        // 凭证图片4
+    private String reviewImage5;        // 凭证图片5
+
+    private String reviewRemarks;   //审核备注
+    private String returnTime;        // 申请退款时间
+    private String confirmReturnTime;        // 确认退款时间(审核退款时间)
+    private String remarks;	// 退款备注
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private Date beginReturnTime;
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private Date endReturnTime;
+
+    private Date beginConfirmReturnTime;
+    private Date endConfirmReturnTime;
+
+    //private List<List<CmReturnedPurchaseProduct>> cmReturnedPurchaseProductList;    //退款退货商品列表(用于前端接收)
+    private List<ShopOrderReturned> shopOrderReturnedList;    //退款退货商品列表
+    //private List<CmReturnedPurchaseProduct> productList;    //退款退货商品列表
+
+    private String bankAccountName;//银行账户名
+    private String bankAccountNo;//开户银行账户
+    private String openBank;//开户银行
+    private String bankAccountType;//账户类型:1公账,2私账
+    private Double refundBalanceFee;//退账户余额
+    private Double refundOnlineFee;//退线上退回
+    private Double refundOfflineFee;//退线下转账
+    private Integer applicationUserID;//申请人ID
+    private Integer reviewUserID;//审核人ID
+    //	private String reviewTime;		// 申请审核时间
+    private String applicationUserName;//申请人
+    private String reviewUserName;//审核人
+
+    public String getRemarks() {
+        return remarks;
+    }
+
+    public void setRemarks(String remarks) {
+        this.remarks = remarks;
+    }
+
+    public static long getSerialVersionUID() {
+        return serialVersionUID;
+    }
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getReturnedNo() {
+        return returnedNo;
+    }
+
+    public void setReturnedNo(String returnedNo) {
+        this.returnedNo = returnedNo;
+    }
+
+    public Integer getOrderID() {
+        return orderID;
+    }
+
+    public void setOrderID(Integer orderID) {
+        this.orderID = orderID;
+    }
+
+    public Integer getOrganizeID() {
+        return organizeID;
+    }
+
+    public void setOrganizeID(Integer organizeID) {
+        this.organizeID = organizeID;
+    }
+
+    public String getOrderNo() {
+        return orderNo;
+    }
+
+    public void setOrderNo(String orderNo) {
+        this.orderNo = orderNo;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public Integer getUserID() {
+        return userID;
+    }
+
+    public void setUserID(Integer userID) {
+        this.userID = userID;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public String getReturnedWay() {
+        return returnedWay;
+    }
+
+    public void setReturnedWay(String returnedWay) {
+        this.returnedWay = returnedWay;
+    }
+
+    public String getPayType() {
+        return payType;
+    }
+
+    public void setPayType(String payType) {
+        this.payType = payType;
+    }
+
+    public String getReturnedBankInfo() {
+        return returnedBankInfo;
+    }
+
+    public void setReturnedBankInfo(String returnedBankInfo) {
+        this.returnedBankInfo = returnedBankInfo;
+    }
+
+    public String getOperatingOrderStatus() {
+        return operatingOrderStatus;
+    }
+
+    public void setOperatingOrderStatus(String operatingOrderStatus) {
+        this.operatingOrderStatus = operatingOrderStatus;
+    }
+
+    public Double getReturnedPurchaseFee() {
+        return returnedPurchaseFee;
+    }
+
+    public void setReturnedPurchaseFee(Double returnedPurchaseFee) {
+        this.returnedPurchaseFee = returnedPurchaseFee;
+    }
+
+    public Double getRefundFee() {
+        return refundFee;
+    }
+
+    public void setRefundFee(Double refundFee) {
+        this.refundFee = refundFee;
+    }
+
+    public String getImage1() {
+        return image1;
+    }
+
+    public void setImage1(String image1) {
+        this.image1 = image1;
+    }
+
+    public String getImage2() {
+        return image2;
+    }
+
+    public void setImage2(String image2) {
+        this.image2 = image2;
+    }
+
+    public String getImage3() {
+        return image3;
+    }
+
+    public void setImage3(String image3) {
+        this.image3 = image3;
+    }
+
+    public String getImage4() {
+        return image4;
+    }
+
+    public void setImage4(String image4) {
+        this.image4 = image4;
+    }
+
+    public String getImage5() {
+        return image5;
+    }
+
+    public void setImage5(String image5) {
+        this.image5 = image5;
+    }
+
+    public String getReviewImage1() {
+        return reviewImage1;
+    }
+
+    public void setReviewImage1(String reviewImage1) {
+        this.reviewImage1 = reviewImage1;
+    }
+
+    public String getReviewImage2() {
+        return reviewImage2;
+    }
+
+    public void setReviewImage2(String reviewImage2) {
+        this.reviewImage2 = reviewImage2;
+    }
+
+    public String getReviewImage3() {
+        return reviewImage3;
+    }
+
+    public void setReviewImage3(String reviewImage3) {
+        this.reviewImage3 = reviewImage3;
+    }
+
+    public String getReviewImage4() {
+        return reviewImage4;
+    }
+
+    public void setReviewImage4(String reviewImage4) {
+        this.reviewImage4 = reviewImage4;
+    }
+
+    public String getReviewImage5() {
+        return reviewImage5;
+    }
+
+    public void setReviewImage5(String reviewImage5) {
+        this.reviewImage5 = reviewImage5;
+    }
+
+    public String getReviewRemarks() {
+        return reviewRemarks;
+    }
+
+    public void setReviewRemarks(String reviewRemarks) {
+        this.reviewRemarks = reviewRemarks;
+    }
+
+    public String getReturnTime() {
+        return returnTime;
+    }
+
+    public void setReturnTime(String returnTime) {
+        this.returnTime = returnTime;
+    }
+
+    public String getConfirmReturnTime() {
+        return confirmReturnTime;
+    }
+
+    public void setConfirmReturnTime(String confirmReturnTime) {
+        this.confirmReturnTime = confirmReturnTime;
+    }
+
+    public Date getBeginReturnTime() {
+        return beginReturnTime;
+    }
+
+    public void setBeginReturnTime(Date beginReturnTime) {
+        this.beginReturnTime = beginReturnTime;
+    }
+
+    public Date getEndReturnTime() {
+        return endReturnTime;
+    }
+
+    public void setEndReturnTime(Date endReturnTime) {
+        this.endReturnTime = endReturnTime;
+    }
+
+    public Date getBeginConfirmReturnTime() {
+        return beginConfirmReturnTime;
+    }
+
+    public void setBeginConfirmReturnTime(Date beginConfirmReturnTime) {
+        this.beginConfirmReturnTime = beginConfirmReturnTime;
+    }
+
+    public Date getEndConfirmReturnTime() {
+        return endConfirmReturnTime;
+    }
+
+    public void setEndConfirmReturnTime(Date endConfirmReturnTime) {
+        this.endConfirmReturnTime = endConfirmReturnTime;
+    }
+
+    public List<ShopOrderReturned> getShopOrderReturnedList() {
+        return shopOrderReturnedList;
+    }
+
+    public void setShopOrderReturnedList(List<ShopOrderReturned> shopOrderReturnedList) {
+        this.shopOrderReturnedList = shopOrderReturnedList;
+    }
+
+    public String getBankAccountName() {
+        return bankAccountName;
+    }
+
+    public void setBankAccountName(String bankAccountName) {
+        this.bankAccountName = bankAccountName;
+    }
+
+    public String getBankAccountNo() {
+        return bankAccountNo;
+    }
+
+    public void setBankAccountNo(String bankAccountNo) {
+        this.bankAccountNo = bankAccountNo;
+    }
+
+    public String getOpenBank() {
+        return openBank;
+    }
+
+    public void setOpenBank(String openBank) {
+        this.openBank = openBank;
+    }
+
+    public String getBankAccountType() {
+        return bankAccountType;
+    }
+
+    public void setBankAccountType(String bankAccountType) {
+        this.bankAccountType = bankAccountType;
+    }
+
+    public Double getRefundBalanceFee() {
+        return refundBalanceFee;
+    }
+
+    public void setRefundBalanceFee(Double refundBalanceFee) {
+        this.refundBalanceFee = refundBalanceFee;
+    }
+
+    public Double getRefundOnlineFee() {
+        return refundOnlineFee;
+    }
+
+    public void setRefundOnlineFee(Double refundOnlineFee) {
+        this.refundOnlineFee = refundOnlineFee;
+    }
+
+    public Double getRefundOfflineFee() {
+        return refundOfflineFee;
+    }
+
+    public void setRefundOfflineFee(Double refundOfflineFee) {
+        this.refundOfflineFee = refundOfflineFee;
+    }
+
+    public Integer getApplicationUserID() {
+        return applicationUserID;
+    }
+
+    public void setApplicationUserID(Integer applicationUserID) {
+        this.applicationUserID = applicationUserID;
+    }
+
+    public Integer getReviewUserID() {
+        return reviewUserID;
+    }
+
+    public void setReviewUserID(Integer reviewUserID) {
+        this.reviewUserID = reviewUserID;
+    }
+
+    public String getApplicationUserName() {
+        return applicationUserName;
+    }
+
+    public void setApplicationUserName(String applicationUserName) {
+        this.applicationUserName = applicationUserName;
+    }
+
+    public String getReviewUserName() {
+        return reviewUserName;
+    }
+
+    public void setReviewUserName(String reviewUserName) {
+        this.reviewUserName = reviewUserName;
+    }
+}

+ 281 - 0
src/main/java/com/caimei/modules/order/entity/CmReturnedPurchaseProduct.java

@@ -0,0 +1,281 @@
+package com.caimei.modules.order.entity;
+
+
+import java.io.Serializable;
+
+/**
+ * 退货退款商品Entity
+ * @author ye.qin
+ * @version 2019-05-24
+ */
+public class CmReturnedPurchaseProduct implements Serializable {
+	
+	private static final long serialVersionUID = 1L;
+	private Integer id;
+	private Integer returnedID;		// 退货退款Id(退款退货表的ID)
+	private Integer shopOrderID;		// 子订单Id
+	private Integer productID;		// 商品Id
+	private Integer orderProductID;		// 订单商品Id
+	private Integer shopID;		// 供应商Id
+	private Integer applicationReturnedNum;		// 申请退货数量
+	private Integer applicationCancelNum;		// 申请取消数量
+	private Integer actualReturnedNum;		// 实际退货数量
+	private Integer actualCancelNum;		// 实际取消数量
+	private String returnedReceiver;		// 退款接收方:1采美、2供应商、3采美及供应商
+
+	private String status;	//退货状态	状态:1退货退款中、2已完成、3已取消
+
+	private Integer num;
+	private Integer presentNum;
+	private Double price;
+	private Double discount;
+	private Double discountPrice;
+	private Double taxRate;
+	private Double addedValueTax;
+	private String mainImage;
+	private String name;
+	private String shopName;
+	private Double totalFee;
+	private Double totalAddedValueTax;
+	private String unit;
+	private Boolean firstReturn;	//该订单商品是否是首次退货退款
+	private Integer notOutStore;//商品未出库数量
+	private Integer returnedPurchaseProductNum;//商品退货完成数量
+	private Integer cancelProductNum;   //取消数量
+
+	public Integer getId() {
+		return id;
+	}
+
+	public void setId(Integer id) {
+		this.id = id;
+	}
+
+	public Integer getReturnedID() {
+		return returnedID;
+	}
+
+	public void setReturnedID(Integer returnedID) {
+		this.returnedID = returnedID;
+	}
+	
+	public Integer getProductID() {
+		return productID;
+	}
+
+	public void setProductID(Integer productID) {
+		this.productID = productID;
+	}
+	
+	public Integer getOrderProductID() {
+		return orderProductID;
+	}
+
+	public void setOrderProductID(Integer orderProductID) {
+		this.orderProductID = orderProductID;
+	}
+	
+	public Integer getShopID() {
+		return shopID;
+	}
+
+	public void setShopID(Integer shopID) {
+		this.shopID = shopID;
+	}
+	
+	public Integer getApplicationReturnedNum() {
+		return applicationReturnedNum;
+	}
+
+	public void setApplicationReturnedNum(Integer applicationReturnedNum) {
+		this.applicationReturnedNum = applicationReturnedNum;
+	}
+	
+	public Integer getApplicationCancelNum() {
+		return applicationCancelNum;
+	}
+
+	public void setApplicationCancelNum(Integer applicationCancelNum) {
+		this.applicationCancelNum = applicationCancelNum;
+	}
+	
+	public Integer getActualReturnedNum() {
+		return actualReturnedNum;
+	}
+
+	public void setActualReturnedNum(Integer actualReturnedNum) {
+		this.actualReturnedNum = actualReturnedNum;
+	}
+	
+	public Integer getActualCancelNum() {
+		return actualCancelNum;
+	}
+
+	public void setActualCancelNum(Integer actualCancelNum) {
+		this.actualCancelNum = actualCancelNum;
+	}
+
+	public Integer getShopOrderID() {
+		return shopOrderID;
+	}
+
+	public void setShopOrderID(Integer shopOrderID) {
+		this.shopOrderID = shopOrderID;
+	}
+
+	public String getStatus() {
+		return status;
+	}
+
+	public void setStatus(String status) {
+		this.status = status;
+	}
+
+	public String getReturnedReceiver() {
+		return returnedReceiver;
+	}
+
+	public void setReturnedReceiver(String returnedReceiver) {
+		this.returnedReceiver = returnedReceiver;
+	}
+
+	public static long getSerialVersionUID() {
+		return serialVersionUID;
+	}
+
+	public Double getPrice() {
+		return price;
+	}
+
+	public void setPrice(Double price) {
+		this.price = price;
+	}
+
+	public Double getDiscount() {
+		return discount;
+	}
+
+	public void setDiscount(Double discount) {
+		this.discount = discount;
+	}
+
+	public Double getDiscountPrice() {
+		return discountPrice;
+	}
+
+	public void setDiscountPrice(Double discountPrice) {
+		this.discountPrice = discountPrice;
+	}
+
+	public Double getTaxRate() {
+		return taxRate;
+	}
+
+	public void setTaxRate(Double taxRate) {
+		this.taxRate = taxRate;
+	}
+
+	public Double getAddedValueTax() {
+		return addedValueTax;
+	}
+
+	public void setAddedValueTax(Double addedValueTax) {
+		this.addedValueTax = addedValueTax;
+	}
+
+	public String getMainImage() {
+		return mainImage;
+	}
+
+	public void setMainImage(String mainImage) {
+		this.mainImage = mainImage;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getShopName() {
+		return shopName;
+	}
+
+	public void setShopName(String shopName) {
+		this.shopName = shopName;
+	}
+
+	public Integer getNum() {
+		return num;
+	}
+
+	public void setNum(Integer num) {
+		this.num = num;
+	}
+
+	public Double getTotalFee() {
+		return totalFee;
+	}
+
+	public void setTotalFee(Double totalFee) {
+		this.totalFee = totalFee;
+	}
+
+	public Double getTotalAddedValueTax() {
+		return totalAddedValueTax;
+	}
+
+	public void setTotalAddedValueTax(Double totalAddedValueTax) {
+		this.totalAddedValueTax = totalAddedValueTax;
+	}
+
+	public String getUnit() {
+		return unit;
+	}
+
+	public void setUnit(String unit) {
+		this.unit = unit;
+	}
+
+	public Integer getPresentNum() {
+		return presentNum;
+	}
+
+	public void setPresentNum(Integer presentNum) {
+		this.presentNum = presentNum;
+	}
+
+	public Boolean getFirstReturn() {
+		return firstReturn;
+	}
+
+	public void setFirstReturn(Boolean firstReturn) {
+		this.firstReturn = firstReturn;
+	}
+
+	public Integer getNotOutStore() {
+		return notOutStore;
+	}
+
+	public void setNotOutStore(Integer notOutStore) {
+		this.notOutStore = notOutStore;
+	}
+
+	public Integer getReturnedPurchaseProductNum() {
+		return returnedPurchaseProductNum;
+	}
+
+	public void setReturnedPurchaseProductNum(Integer returnedPurchaseProductNum) {
+		this.returnedPurchaseProductNum = returnedPurchaseProductNum;
+	}
+
+	public Integer getCancelProductNum() {
+		return cancelProductNum;
+	}
+
+	public void setCancelProductNum(Integer cancelProductNum) {
+		this.cancelProductNum = cancelProductNum;
+	}
+}

+ 98 - 0
src/main/java/com/caimei/modules/order/entity/LogisticsBatch.java

@@ -0,0 +1,98 @@
+package com.caimei.modules.order.entity;
+
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * @author lwt
+ * @date 2018-08-13
+ * @description 发货批次
+ */
+public class LogisticsBatch {
+    private Integer id;
+    private Integer shopOrderID;//子订单ID
+    private Integer orderID;//主订单ID
+    private Integer outStoreTimes;//第几批发货
+    private String mailer;//邮寄者  0 采美   1 供应商
+    private Integer shopID;//供应商ID
+    private Date updateDate;//最后更新时间
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date deliveryTime;//发货时间
+    private Date receiptTime;//收货时间
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getShopOrderID() {
+        return shopOrderID;
+    }
+
+    public void setShopOrderID(Integer shopOrderID) {
+        this.shopOrderID = shopOrderID;
+    }
+
+    public Integer getOrderID() {
+        return orderID;
+    }
+
+    public void setOrderID(Integer orderID) {
+        this.orderID = orderID;
+    }
+
+    public Integer getOutStoreTimes() {
+        return outStoreTimes;
+    }
+
+    public void setOutStoreTimes(Integer outStoreTimes) {
+        this.outStoreTimes = outStoreTimes;
+    }
+
+    public String getMailer() {
+        return mailer;
+    }
+
+    public void setMailer(String mailer) {
+        this.mailer = mailer;
+    }
+
+    public Integer getShopID() {
+        return shopID;
+    }
+
+    public void setShopID(Integer shopID) {
+        this.shopID = shopID;
+    }
+
+    public Date getUpdateDate() {
+        return updateDate;
+    }
+
+    public void setUpdateDate(Date updateDate) {
+        this.updateDate = updateDate;
+    }
+
+    public Date getDeliveryTime() {
+        return deliveryTime;
+    }
+
+    public void setDeliveryTime(Date deliveryTime) {
+        this.deliveryTime = deliveryTime;
+    }
+
+    public Date getReceiptTime() {
+        return receiptTime;
+    }
+
+    public void setReceiptTime(Date receiptTime) {
+        this.receiptTime = receiptTime;
+    }
+}

+ 30 - 0
src/main/java/com/caimei/modules/order/entity/LogisticsDetailVo.java

@@ -0,0 +1,30 @@
+package com.caimei.modules.order.entity;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+/**
+ * 单条物流信息展示
+ */
+public class LogisticsDetailVo {
+
+    private String time;
+    private String desc;
+
+
+    public String getTime() {
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(Long.valueOf(time + "000")));
+    }
+
+    public void setTime(String time) {
+        this.time = time;
+    }
+
+    public String getDesc() {
+        return desc;
+    }
+
+    public void setDesc(String desc) {
+        this.desc = desc;
+    }
+}

+ 39 - 0
src/main/java/com/caimei/modules/order/entity/LogisticsInfoVo.java

@@ -0,0 +1,39 @@
+package com.caimei.modules.order.entity;
+
+import java.util.List;
+
+/**
+ * 物流展示的VO
+ */
+public class LogisticsInfoVo {
+
+    private LogisticsBatch logisticsBatch;  // 物流批次
+
+    private List<LogisticsRecord> logisticsRecordList;  //一批物流 对多个货物
+
+    private List<LogisticsInformation> logisticsInformationList;  // 一批物流对多个快递记录
+
+    public LogisticsBatch getLogisticsBatch() {
+        return logisticsBatch;
+    }
+
+    public void setLogisticsBatch(LogisticsBatch logisticsBatch) {
+        this.logisticsBatch = logisticsBatch;
+    }
+
+    public List<LogisticsRecord> getLogisticsRecordList() {
+        return logisticsRecordList;
+    }
+
+    public void setLogisticsRecordList(List<LogisticsRecord> logisticsRecordList) {
+        this.logisticsRecordList = logisticsRecordList;
+    }
+
+    public List<LogisticsInformation> getLogisticsInformationList() {
+        return logisticsInformationList;
+    }
+
+    public void setLogisticsInformationList(List<LogisticsInformation> logisticsInformationList) {
+        this.logisticsInformationList = logisticsInformationList;
+    }
+}

+ 139 - 0
src/main/java/com/caimei/modules/order/entity/LogisticsInformation.java

@@ -0,0 +1,139 @@
+package com.caimei.modules.order.entity;
+
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author lwt
+ * @date 2018-08-13
+ * @description 物流信息表
+ */
+public class LogisticsInformation {
+    private Integer logisticsBatchID; // 发货批次表ID
+    private String type; // 类型:1 采美365  2 呵呵商城 3 大宗采购'
+    private Integer shopOrderID;
+    private Integer orderID;
+    private String orderProductID;
+    private String nu; //快递单号
+    private String state; //快递单当前的状态(0:在途,即货物处于运输过程中;1:揽件,货物已由快递公司揽收并且产生了第一条跟踪信息;2:疑难,货物寄送过程出了问题;3:签收,收件人已签收;4:退签,即货物由于用户拒签、超区等原因退回,而且发件人已经签收;5:派件,即快递正在进行同城派件;6:退回,货物正处于退回发件人的途中;)
+    private String info; //物流跟踪信息
+    private String logisticsCompanyName; //物流公司名称
+    private String logisticsCompanyCode; //物流公司代码
+    private Integer shopID; //供应商ID
+    private String remarks; //备注
+    private Date updateDate; //最后更新时间
+    private List<LogisticsDetailVo> logisticsDetailVos; // 格式化后的物流跟踪信息
+
+    public Integer getLogisticsBatchID() {
+        return logisticsBatchID;
+    }
+
+    public void setLogisticsBatchID(Integer logisticsBatchID) {
+        this.logisticsBatchID = logisticsBatchID;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public Integer getShopOrderID() {
+        return shopOrderID;
+    }
+
+    public void setShopOrderID(Integer shopOrderID) {
+        this.shopOrderID = shopOrderID;
+    }
+
+    public Integer getOrderID() {
+        return orderID;
+    }
+
+    public void setOrderID(Integer orderID) {
+        this.orderID = orderID;
+    }
+
+    public String getOrderProductID() {
+        return orderProductID;
+    }
+
+    public void setOrderProductID(String orderProductID) {
+        this.orderProductID = orderProductID;
+    }
+
+    public String getNu() {
+        return nu;
+    }
+
+    public void setNu(String nu) {
+        this.nu = nu;
+    }
+
+    public String getState() {
+        return state;
+    }
+
+    public void setState(String state) {
+        this.state = state;
+    }
+
+    public String getInfo() {
+        return info;
+    }
+
+    public void setInfo(String info) {
+        this.info = info;
+    }
+
+    public String getLogisticsCompanyName() {
+        return logisticsCompanyName;
+    }
+
+    public void setLogisticsCompanyName(String logisticsCompanyName) {
+        this.logisticsCompanyName = logisticsCompanyName;
+    }
+
+    public String getLogisticsCompanyCode() {
+        return logisticsCompanyCode;
+    }
+
+    public void setLogisticsCompanyCode(String logisticsCompanyCode) {
+        this.logisticsCompanyCode = logisticsCompanyCode;
+    }
+
+    public String getRemarks() {
+        return remarks;
+    }
+
+    public void setRemarks(String remarks) {
+        this.remarks = remarks;
+    }
+
+    public Date getUpdateDate() {
+        return updateDate;
+    }
+
+    public void setUpdateDate(Date updateDate) {
+        this.updateDate = updateDate;
+    }
+
+    public Integer getShopID() {
+        return shopID;
+    }
+
+    public void setShopID(Integer shopID) {
+        this.shopID = shopID;
+    }
+
+    public List<LogisticsDetailVo> getLogisticsDetailVos() {
+        return logisticsDetailVos;
+    }
+
+    public void setLogisticsDetailVos(List<LogisticsDetailVo> logisticsDetailVos) {
+        this.logisticsDetailVos = logisticsDetailVos;
+    }
+}

+ 93 - 0
src/main/java/com/caimei/modules/order/entity/LogisticsRecord.java

@@ -0,0 +1,93 @@
+package com.caimei.modules.order.entity;
+
+
+/**
+ * @author lwt
+ * @date 2018-07-24
+ * @description 发货记录
+ */
+public class LogisticsRecord{
+
+    private Integer logisticsBatchID; //发货物流批次ID
+    private Integer orderID; //子订单ID
+    private Integer shopOrderID; //主订单ID
+    private Integer orderProductID; //订单商品ID
+    private Integer buyNum; //商品购买数量
+    private Integer num; //此次发货数量
+    private Integer productID; //商品ID
+    private String productName; //商品名称
+    private String image; //商品图片
+
+
+    public Integer getLogisticsBatchID() {
+        return logisticsBatchID;
+    }
+
+    public void setLogisticsBatchID(Integer logisticsBatchID) {
+        this.logisticsBatchID = logisticsBatchID;
+    }
+
+    public Integer getOrderID() {
+        return orderID;
+    }
+
+    public void setOrderID(Integer orderID) {
+        this.orderID = orderID;
+    }
+
+    public Integer getShopOrderID() {
+        return shopOrderID;
+    }
+
+    public void setShopOrderID(Integer shopOrderID) {
+        this.shopOrderID = shopOrderID;
+    }
+
+    public Integer getOrderProductID() {
+        return orderProductID;
+    }
+
+    public void setOrderProductID(Integer orderProductID) {
+        this.orderProductID = orderProductID;
+    }
+
+    public Integer getBuyNum() {
+        return buyNum;
+    }
+
+    public void setBuyNum(Integer buyNum) {
+        this.buyNum = buyNum;
+    }
+
+    public Integer getNum() {
+        return num;
+    }
+
+    public void setNum(Integer num) {
+        this.num = num;
+    }
+
+    public Integer getProductID() {
+        return productID;
+    }
+
+    public void setProductID(Integer productID) {
+        this.productID = productID;
+    }
+
+    public String getProductName() {
+        return productName;
+    }
+
+    public void setProductName(String productName) {
+        this.productName = productName;
+    }
+
+    public String getImage() {
+        return image;
+    }
+
+    public void setImage(String image) {
+        this.image = image;
+    }
+}

+ 766 - 0
src/main/java/com/caimei/modules/order/entity/NewOrder.java

@@ -0,0 +1,766 @@
+package com.caimei.modules.order.entity;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author lwt
+ * @date 2018-07-24
+ * @description 主订单表
+ */
+public class NewOrder implements Serializable {
+    private Integer orderID;             // bigint(11) not null,
+    private String orderNo;             // varchar(30) comment '订单编号',
+    private Integer userID;              // bigint(11), 订单归属人
+    //采美组织: 默认为null,具体对应cm_mall_organize表ID
+    private Integer organizeID;
+    private String shopOrderIDs;        // varchar(100) comment '子订单ID',
+    private String orderSubmitType;     // char(2) comment '订单提交类型',
+    private String status;      // char(2) comment '订单状态'
+    // v5.0.0新状态 '0待确认,11待收待发,12待收部发,13待收全发,21部收待发,22部收部发,23部收全发,31已收待发,32已收部发,33已收全发,4交易完成,5订单完成,6已关闭,7交易全退'
+    private Double productTotalFee;   // decimal(20,6) comment '商品总金额',
+    private Double shouldPayProduct;            //应收商品金额==应付合计(只需要付商品金额)
+    private String hasActProduct; // '是否包含活动商品(受订单未支付自动关闭时间影响)  0 否 1 是',
+    private Double orderTotalFee;    // decimal(20,6) comment '订单总金额',
+    private Double payableAmount;       // 应付金额
+    private Double payTotalFee;         // decimal(20,6) comment '支付金额',
+    private Double balancePayFee;       // decimal(20,6) comment '余额支付',
+    private Double discountFee;         // decimal(20,6) comment '折扣金额',
+    private Integer spID;                // bigint(11),
+    private Integer mainSpID;            // bigint(6),
+    private String note;                // text comment '订单备注',
+    private Integer clubID;              // bigint(11),
+    private String clubScanTime;        // varchar(19),
+    private String payWay;              // 支付方式,(协销订单可能会存在多种进账方式用,隔开),
+    private Integer payTypeID;           // int(11) comment '支付类型',
+    private String orderSource;         // char(1) comment '订单来源',
+    private String orderTime;           // datetime comment '订单提交时间',
+    private String confirmTime;           // datetime comment '订单确认时间',
+    private String cooFreeFlag;          // char(1) comment '库分期免息状态',
+    private Integer cooFreeRate;         // int(3) comment '库分期分期费率',
+    private Double cooFreeAmount;       // decimal(20,2) comment '库分期免息金额',
+    private String confirmFlag;         // char(1) comment '订单确认标志',
+    private Integer clauseID;            // bigint(11) comment '条款ID',
+    private String clauseContent;       // text comment '条款内容',
+    private String clauseName;          // varchar(50) comment '条款名称',
+    private String freePostFlag;        // char(1) comment 免邮标志 运费:-1到付,0包邮,1需要运费
+    private Double freight;             // decimal(20,0) comment '运费' v5.0版本已废弃,运费已使用商品形式存储,
+    private Integer buyUserID;//            下单人
+    private String orderType;//      char(2) comment '订单类型 协销订单0 普通订单1',
+    private List<NewShopOrder> newShopOrders;
+    private OrderUserInfo bpOrderUserinfo; //订单用户信息表
+    private OrderInvoice orderInvoice;
+    private Integer productCount;        // 商品总数
+    private Integer presentCount;        // 赠送总数
+    private String payTime; //订单支付时间
+    private String payFlag;//是否已支付 未支付0 已支付1
+    private String onlinePayFlag;//能否显示支付 :0 能线上 1 线下
+    private Double preferential; //总优惠 自助下单活动优惠 协销下单price-折后单价
+    private String splitFlag; // 订单能否拆分 1 为可拆分, 0为不可拆分
+    private String closeReason; //订单取消原因
+    private String invoiceFlag;      //是否开发票 0 不开 1 开发票
+    // ---------------- v5.0.0 新加
+    private String receiptStatus; //(收款买家)收款状态:1待收款、2部分收款、3已收款
+    private String payStatus; //(付款供应商)付款状态:1待付款、2部分付款、3已付款
+    private String sendOutStatus; //发货状态:1待发货、2部分发货、3已发货
+    private String refundType; //退货退款类型:1部分退、2全部退
+    private String postageOrderFlag = "0"; //邮费订单标识 1是邮费订单  0不是邮费订单
+    private Double paidAmount;//已付金额(用户已支付金额包括余额支付和线上线下支付)
+    private Double totalDiscount;//订单退款已退的经理折扣金额
+    // -----------------  v5.0.0 end
+
+    //-------------        虚拟字段   ----------------------------
+    private String shopName;            //供应商
+    private String receiver;//收货人
+    private String buyer;//买家
+    private String alreadyReceipt;//已收金额(需要包含运费,目前只存在普通订单存在运费)
+    private String unReceipt;//未收金额(需要包含运费,目前只存在普通订单存在运费)
+    private String paid;//已付金额(不需要包含运费,等同于订单商品金额)
+    private String unpaid;//未付金额(不需要包含运费,等同于订单商品金额)
+    private String brokerage;//佣金
+    private String buyerName; //买家名称
+    private String mobile; //手机
+    private String address; //地址
+    private String startTime;
+    private String endTime;
+    private String startRefundTime;
+    private String endRefundTime;
+    private Double totalAddedValueTax;//总税费
+    private String shopNameInfo;//
+    private String orderRefundType = "";//
+    private String returnedPurchaseStatus;//1审核中,0不是审核中
+    private String applyReturnedPurchaseFlag;//0不可以申请,1可以申请(此标记只用于是否存在审核中或者审核不通过记录,存在记录则不可以申请)
+    private String spName;
+    private List<NewOrderProduct> orderProduct;// 订单内的商品集合
+    private String searchflag;//0搜索,1导出
+    private String[] shopNote;  //子订单备注   修改时用来记录一下的
+    private String rebateOrder;  //是不是返佣订单 是的1,  不是的0
+    private String[] ps;    //付款状态集合
+    private String shopOrderNo;//       varchar(30) comment '子订单编号'
+    private String toAudit;   //有没有收款待审核的订单 , 有的1
+
+    public Integer getOrderID() {
+        return orderID;
+    }
+
+    public void setOrderID(Integer orderID) {
+        this.orderID = orderID;
+    }
+
+    public String getOrderNo() {
+        return orderNo;
+    }
+
+    public void setOrderNo(String orderNo) {
+        this.orderNo = orderNo;
+    }
+
+    public Integer getUserID() {
+        return userID;
+    }
+
+    public void setUserID(Integer userID) {
+        this.userID = userID;
+    }
+
+    public Integer getOrganizeID() {
+        return organizeID;
+    }
+
+    public void setOrganizeID(Integer organizeID) {
+        this.organizeID = organizeID;
+    }
+
+    public String getShopOrderIDs() {
+        return shopOrderIDs;
+    }
+
+    public void setShopOrderIDs(String shopOrderIDs) {
+        this.shopOrderIDs = shopOrderIDs;
+    }
+
+    public String getOrderSubmitType() {
+        return orderSubmitType;
+    }
+
+    public void setOrderSubmitType(String orderSubmitType) {
+        this.orderSubmitType = orderSubmitType;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public Double getProductTotalFee() {
+        return productTotalFee;
+    }
+
+    public void setProductTotalFee(Double productTotalFee) {
+        this.productTotalFee = productTotalFee;
+    }
+
+    public Double getShouldPayProduct() {
+        return shouldPayProduct;
+    }
+
+    public void setShouldPayProduct(Double shouldPayProduct) {
+        this.shouldPayProduct = shouldPayProduct;
+    }
+
+    public String getHasActProduct() {
+        return hasActProduct;
+    }
+
+    public void setHasActProduct(String hasActProduct) {
+        this.hasActProduct = hasActProduct;
+    }
+
+    public Double getOrderTotalFee() {
+        return orderTotalFee;
+    }
+
+    public void setOrderTotalFee(Double orderTotalFee) {
+        this.orderTotalFee = orderTotalFee;
+    }
+
+    public Double getPayableAmount() {
+        return payableAmount;
+    }
+
+    public void setPayableAmount(Double payableAmount) {
+        this.payableAmount = payableAmount;
+    }
+
+    public Double getPayTotalFee() {
+        return payTotalFee;
+    }
+
+    public void setPayTotalFee(Double payTotalFee) {
+        this.payTotalFee = payTotalFee;
+    }
+
+    public Double getBalancePayFee() {
+        return balancePayFee;
+    }
+
+    public void setBalancePayFee(Double balancePayFee) {
+        this.balancePayFee = balancePayFee;
+    }
+
+    public Double getDiscountFee() {
+        return discountFee;
+    }
+
+    public void setDiscountFee(Double discountFee) {
+        this.discountFee = discountFee;
+    }
+
+    public Integer getSpID() {
+        return spID;
+    }
+
+    public void setSpID(Integer spID) {
+        this.spID = spID;
+    }
+
+    public Integer getMainSpID() {
+        return mainSpID;
+    }
+
+    public void setMainSpID(Integer mainSpID) {
+        this.mainSpID = mainSpID;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public void setNote(String note) {
+        this.note = note;
+    }
+
+    public Integer getClubID() {
+        return clubID;
+    }
+
+    public void setClubID(Integer clubID) {
+        this.clubID = clubID;
+    }
+
+    public String getClubScanTime() {
+        return clubScanTime;
+    }
+
+    public void setClubScanTime(String clubScanTime) {
+        this.clubScanTime = clubScanTime;
+    }
+
+    public String getPayWay() {
+        return payWay;
+    }
+
+    public void setPayWay(String payWay) {
+        this.payWay = payWay;
+    }
+
+    public Integer getPayTypeID() {
+        return payTypeID;
+    }
+
+    public void setPayTypeID(Integer payTypeID) {
+        this.payTypeID = payTypeID;
+    }
+
+    public String getOrderSource() {
+        return orderSource;
+    }
+
+    public void setOrderSource(String orderSource) {
+        this.orderSource = orderSource;
+    }
+
+    public String getOrderTime() {
+        return orderTime;
+    }
+
+    public void setOrderTime(String orderTime) {
+        this.orderTime = orderTime;
+    }
+
+    public String getConfirmTime() {
+        return confirmTime;
+    }
+
+    public void setConfirmTime(String confirmTime) {
+        this.confirmTime = confirmTime;
+    }
+
+    public String getCooFreeFlag() {
+        return cooFreeFlag;
+    }
+
+    public void setCooFreeFlag(String cooFreeFlag) {
+        this.cooFreeFlag = cooFreeFlag;
+    }
+
+    public Integer getCooFreeRate() {
+        return cooFreeRate;
+    }
+
+    public void setCooFreeRate(Integer cooFreeRate) {
+        this.cooFreeRate = cooFreeRate;
+    }
+
+    public Double getCooFreeAmount() {
+        return cooFreeAmount;
+    }
+
+    public void setCooFreeAmount(Double cooFreeAmount) {
+        this.cooFreeAmount = cooFreeAmount;
+    }
+
+    public String getConfirmFlag() {
+        return confirmFlag;
+    }
+
+    public void setConfirmFlag(String confirmFlag) {
+        this.confirmFlag = confirmFlag;
+    }
+
+    public Integer getClauseID() {
+        return clauseID;
+    }
+
+    public void setClauseID(Integer clauseID) {
+        this.clauseID = clauseID;
+    }
+
+    public String getClauseContent() {
+        return clauseContent;
+    }
+
+    public void setClauseContent(String clauseContent) {
+        this.clauseContent = clauseContent;
+    }
+
+    public String getClauseName() {
+        return clauseName;
+    }
+
+    public void setClauseName(String clauseName) {
+        this.clauseName = clauseName;
+    }
+
+    public String getFreePostFlag() {
+        return freePostFlag;
+    }
+
+    public void setFreePostFlag(String freePostFlag) {
+        this.freePostFlag = freePostFlag;
+    }
+
+    public Double getFreight() {
+        return freight;
+    }
+
+    public void setFreight(Double freight) {
+        this.freight = freight;
+    }
+
+    public Integer getBuyUserID() {
+        return buyUserID;
+    }
+
+    public void setBuyUserID(Integer buyUserID) {
+        this.buyUserID = buyUserID;
+    }
+
+    public String getOrderType() {
+        return orderType;
+    }
+
+    public void setOrderType(String orderType) {
+        this.orderType = orderType;
+    }
+
+    public List<NewShopOrder> getNewShopOrders() {
+        return newShopOrders;
+    }
+
+    public void setNewShopOrders(List<NewShopOrder> newShopOrders) {
+        this.newShopOrders = newShopOrders;
+    }
+
+    public OrderUserInfo getBpOrderUserinfo() {
+        return bpOrderUserinfo;
+    }
+
+    public void setBpOrderUserinfo(OrderUserInfo bpOrderUserinfo) {
+        this.bpOrderUserinfo = bpOrderUserinfo;
+    }
+
+    public OrderInvoice getOrderInvoice() {
+        return orderInvoice;
+    }
+
+    public void setOrderInvoice(OrderInvoice orderInvoice) {
+        this.orderInvoice = orderInvoice;
+    }
+
+    public Integer getProductCount() {
+        return productCount;
+    }
+
+    public void setProductCount(Integer productCount) {
+        this.productCount = productCount;
+    }
+
+    public Integer getPresentCount() {
+        return presentCount;
+    }
+
+    public void setPresentCount(Integer presentCount) {
+        this.presentCount = presentCount;
+    }
+
+    public String getPayTime() {
+        return payTime;
+    }
+
+    public void setPayTime(String payTime) {
+        this.payTime = payTime;
+    }
+
+    public String getPayFlag() {
+        return payFlag;
+    }
+
+    public void setPayFlag(String payFlag) {
+        this.payFlag = payFlag;
+    }
+
+    public String getOnlinePayFlag() {
+        return onlinePayFlag;
+    }
+
+    public void setOnlinePayFlag(String onlinePayFlag) {
+        this.onlinePayFlag = onlinePayFlag;
+    }
+
+    public Double getPreferential() {
+        return preferential;
+    }
+
+    public void setPreferential(Double preferential) {
+        this.preferential = preferential;
+    }
+
+    public String getSplitFlag() {
+        return splitFlag;
+    }
+
+    public void setSplitFlag(String splitFlag) {
+        this.splitFlag = splitFlag;
+    }
+
+    public String getCloseReason() {
+        return closeReason;
+    }
+
+    public void setCloseReason(String closeReason) {
+        this.closeReason = closeReason;
+    }
+
+    public String getInvoiceFlag() {
+        return invoiceFlag;
+    }
+
+    public void setInvoiceFlag(String invoiceFlag) {
+        this.invoiceFlag = invoiceFlag;
+    }
+
+    public String getReceiptStatus() {
+        return receiptStatus;
+    }
+
+    public void setReceiptStatus(String receiptStatus) {
+        this.receiptStatus = receiptStatus;
+    }
+
+    public String getPayStatus() {
+        return payStatus;
+    }
+
+    public void setPayStatus(String payStatus) {
+        this.payStatus = payStatus;
+    }
+
+    public String getSendOutStatus() {
+        return sendOutStatus;
+    }
+
+    public void setSendOutStatus(String sendOutStatus) {
+        this.sendOutStatus = sendOutStatus;
+    }
+
+    public String getRefundType() {
+        return refundType;
+    }
+
+    public void setRefundType(String refundType) {
+        this.refundType = refundType;
+    }
+
+    public String getPostageOrderFlag() {
+        return postageOrderFlag;
+    }
+
+    public void setPostageOrderFlag(String postageOrderFlag) {
+        this.postageOrderFlag = postageOrderFlag;
+    }
+
+    public Double getPaidAmount() {
+        return paidAmount;
+    }
+
+    public void setPaidAmount(Double paidAmount) {
+        this.paidAmount = paidAmount;
+    }
+
+    public Double getTotalDiscount() {
+        return totalDiscount;
+    }
+
+    public void setTotalDiscount(Double totalDiscount) {
+        this.totalDiscount = totalDiscount;
+    }
+
+    public String getShopName() {
+        return shopName;
+    }
+
+    public void setShopName(String shopName) {
+        this.shopName = shopName;
+    }
+
+    public String getReceiver() {
+        return receiver;
+    }
+
+    public void setReceiver(String receiver) {
+        this.receiver = receiver;
+    }
+
+    public String getBuyer() {
+        return buyer;
+    }
+
+    public void setBuyer(String buyer) {
+        this.buyer = buyer;
+    }
+
+    public String getAlreadyReceipt() {
+        return alreadyReceipt;
+    }
+
+    public void setAlreadyReceipt(String alreadyReceipt) {
+        this.alreadyReceipt = alreadyReceipt;
+    }
+
+    public String getUnReceipt() {
+        return unReceipt;
+    }
+
+    public void setUnReceipt(String unReceipt) {
+        this.unReceipt = unReceipt;
+    }
+
+    public String getPaid() {
+        return paid;
+    }
+
+    public void setPaid(String paid) {
+        this.paid = paid;
+    }
+
+    public String getUnpaid() {
+        return unpaid;
+    }
+
+    public void setUnpaid(String unpaid) {
+        this.unpaid = unpaid;
+    }
+
+    public String getBrokerage() {
+        return brokerage;
+    }
+
+    public void setBrokerage(String brokerage) {
+        this.brokerage = brokerage;
+    }
+
+    public String getBuyerName() {
+        return buyerName;
+    }
+
+    public void setBuyerName(String buyerName) {
+        this.buyerName = buyerName;
+    }
+
+    public String getMobile() {
+        return mobile;
+    }
+
+    public void setMobile(String mobile) {
+        this.mobile = mobile;
+    }
+
+    public String getAddress() {
+        return address;
+    }
+
+    public void setAddress(String address) {
+        this.address = address;
+    }
+
+    public String getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(String startTime) {
+        this.startTime = startTime;
+    }
+
+    public String getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(String endTime) {
+        this.endTime = endTime;
+    }
+
+    public String getStartRefundTime() {
+        return startRefundTime;
+    }
+
+    public void setStartRefundTime(String startRefundTime) {
+        this.startRefundTime = startRefundTime;
+    }
+
+    public String getEndRefundTime() {
+        return endRefundTime;
+    }
+
+    public void setEndRefundTime(String endRefundTime) {
+        this.endRefundTime = endRefundTime;
+    }
+
+    public Double getTotalAddedValueTax() {
+        return totalAddedValueTax;
+    }
+
+    public void setTotalAddedValueTax(Double totalAddedValueTax) {
+        this.totalAddedValueTax = totalAddedValueTax;
+    }
+
+    public String getShopNameInfo() {
+        return shopNameInfo;
+    }
+
+    public void setShopNameInfo(String shopNameInfo) {
+        this.shopNameInfo = shopNameInfo;
+    }
+
+    public String getOrderRefundType() {
+        return orderRefundType;
+    }
+
+    public void setOrderRefundType(String orderRefundType) {
+        this.orderRefundType = orderRefundType;
+    }
+
+    public String getReturnedPurchaseStatus() {
+        return returnedPurchaseStatus;
+    }
+
+    public void setReturnedPurchaseStatus(String returnedPurchaseStatus) {
+        this.returnedPurchaseStatus = returnedPurchaseStatus;
+    }
+
+    public String getApplyReturnedPurchaseFlag() {
+        return applyReturnedPurchaseFlag;
+    }
+
+    public void setApplyReturnedPurchaseFlag(String applyReturnedPurchaseFlag) {
+        this.applyReturnedPurchaseFlag = applyReturnedPurchaseFlag;
+    }
+
+    public String getSpName() {
+        return spName;
+    }
+
+    public void setSpName(String spName) {
+        this.spName = spName;
+    }
+
+    public List<NewOrderProduct> getOrderProduct() {
+        return orderProduct;
+    }
+
+    public void setOrderProduct(List<NewOrderProduct> orderProduct) {
+        this.orderProduct = orderProduct;
+    }
+
+    public String getSearchflag() {
+        return searchflag;
+    }
+
+    public void setSearchflag(String searchflag) {
+        this.searchflag = searchflag;
+    }
+
+    public String[] getShopNote() {
+        return shopNote;
+    }
+
+    public void setShopNote(String[] shopNote) {
+        this.shopNote = shopNote;
+    }
+
+    public String getRebateOrder() {
+        return rebateOrder;
+    }
+
+    public void setRebateOrder(String rebateOrder) {
+        this.rebateOrder = rebateOrder;
+    }
+
+    public String[] getPs() {
+        return ps;
+    }
+
+    public void setPs(String[] ps) {
+        this.ps = ps;
+    }
+
+    public String getShopOrderNo() {
+        return shopOrderNo;
+    }
+
+    public void setShopOrderNo(String shopOrderNo) {
+        this.shopOrderNo = shopOrderNo;
+    }
+
+    public String getToAudit() {
+        return toAudit;
+    }
+
+    public void setToAudit(String toAudit) {
+        this.toAudit = toAudit;
+    }
+}
+

+ 33 - 0
src/main/java/com/caimei/modules/order/entity/NewOrderConfig.java

@@ -0,0 +1,33 @@
+package com.caimei.modules.order.entity;
+
+import java.io.Serializable;
+
+public class NewOrderConfig implements Serializable {
+    private String key;
+    private Double value;
+    private String description;
+
+    public String getKey() {
+        return key;
+    }
+
+    public void setKey(String key) {
+        this.key = key;
+    }
+
+    public Double getValue() {
+        return value;
+    }
+
+    public void setValue(Double value) {
+        this.value = value;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+}

+ 780 - 0
src/main/java/com/caimei/modules/order/entity/NewOrderProduct.java

@@ -0,0 +1,780 @@
+package com.caimei.modules.order.entity;
+
+import com.caimei.modules.club.entity.CmProductSn;
+import com.caimei.utils.AppUtils;
+
+import java.beans.Transient;
+import java.util.List;
+
+public class NewOrderProduct {
+    private Integer orderProductID;//       int(11) not null auto_increment,
+    private Integer shopOrderID;//       int(11) comment '子订单Id',
+    private String shopOrderNo;//    varchar(50) comment '子订单编号',
+    private Integer shopID;//      bigint(11) comment '供应商ID',
+    private String ledgerNo;        // 供应商分账易宝商户编号
+    private Integer productID;//      int(11) comment '商品Id',
+    private Integer num;//     int(11) comment '数量',
+    private Integer presentNum;//   int(11) comment '赠送数量',
+    private String outStoreType;// char(1) comment '出库类型',
+    private Integer skuID;//     int(11) comment 'skuId',
+    private String props;//     national varchar(1000) comment 'sku属性',
+    private String propName;//   national varchar(1000) comment '属性名',
+    private String productNo;//    national varchar(50) comment '商品编号',
+    private Double price;//     float comment '订单商品购买价格',
+    private Double shopProductAmount;        // 商品费  =  成本价快照  *  (购买数量  + 赠品数量)
+    private Double normalPrice;//     float comment '市场价 = 商品表市场价',
+    private Double totalAmount;//     float comment '总价',
+    private Double discount;//     decimal(20,6) comment '折扣',
+    private Double discountPrice;//     decimal(20,6) comment '折后单价',
+    private Double taxRate;//     decimal(20,0) comment '税率',
+    private Double addedValueTax;//     decimal(20,6) comment '增值税',
+    private Double totalAddedValueTax;//  decimal(20,6) comment '总增值税(应收税费)',
+    private Double shouldPayTotalTax;//  decimal(20,6) comment '总增值税(应付税费)',
+    private Double shopFee;//     decimal(20,6) comment '应付供应商金额',
+    private Double otherFee;//       decimal(20,6) comment '应付第三方金额',
+    private Double cmFee;//      decimal(20,6) comment '应付采美金额',
+    private Double singleShopFee;//    decimal(20,6) comment '单个应付供应商金额',
+    private Double singleOtherFee;//   decimal(20,6) comment '单个应付第三方金额',
+    private Double singleCmFee;//   decimal(20,6) comment '单个应付采美金额',
+    private Double shouldPayFee;//   decimal(20,6) comment '应付金额',
+    private String commentFlag;//        national char(1) comment '是否已评论:1是,空或0未评论',
+    private Double price0;//   float(10,2),
+    private Double price1;//   float comment '普通会员价',
+    private Double totalFee;//   float comment '总价',
+    private Double totalBeans;//  decimal(10,2) comment '获取到的总采美豆值',
+    private Double useBalanceAmount;//  double comment '使用余额金额',notOutStore
+    private Integer useBeanAmount;//  int(11) comment '使用采美豆数量',
+    private Integer notOutStore;//  int(11) comment '未出库数量',
+    private Integer cmbeanPrice;// int(11) comment '当前采美豆专区价格(采美豆)',
+    private String isGiftProduct;//  national varchar(255),
+    private String productActInfo;//  national varchar(255),
+    private String buyAgainFlag;//  national char(1) default '0' comment '订单商品再次购买标识 0否 1是',
+    private String confirmProductFlag;// national char(1) default '0' comment '订单商品供应商确认标志 0否 1是',
+    private NewShopOrder newShopOrder;
+    private String shopFeeFlag; //应付供应商 = 应付表的应付供应商  0否 1 是
+    private String orderNo;//        varchar(30) comment '主订单编号',
+    private Integer orderID;//        bigint(30) comment '主订单ID',
+    private String shopName; // 供应商名称
+    private String name; // 商品名称
+    private String aliasName;   //商品学名
+    private String unit;//保证规格
+    private String payStatus; //  0 未进账 1 待财务审核 2 已进账
+    private Double preferential;//优惠 (price - discountPrice) * num
+    private Double actPreferential;//活动优惠  类似满减优惠金额
+    private String image; // 商品图片
+    private Double discountFee; //协销订单:经理折扣(平摊到每个商品上,  按照每种商品的总价占订单总价的比例来均分);普通订单 无'
+    private String productUnit;//`productUnit` varchar(64) DEFAULT NULL COMMENT '商品单位',
+    private String productImage;//`productImage` varchar(100) DEFAULT NULL,
+    private String shopFee1; // 单个应付供应商金额
+    private String otherFee1; // 单个应付第三方金额
+    private String cmFee1; // 单个应付采美金额
+    // *****************  虚拟字段
+    private Integer deliveryNum; // 发货数量
+    private Integer outStoreTimes;  // 发货批次
+    private Double costPrice; // 成本价(快照商品成本价格)
+    private Integer stock; // 库存
+    private Integer status; // 状态
+    private String logisticsBatchID; // 发货批次ID
+    //private List<NewCmFinanceCharge> newCmFinanceChargeList; //订单商品id对应的多个出账记录
+    //private List<NewCmFinanceReceipts> newCmFinanceReceiptsList; //订单商品id对应一个进账记录  订单id对应多个
+    private String splitFlag;//订单商品是否可拆分   1可拆分(不可以进账确认) 0不可拆分----统计子订单中的
+    private String costCheckFlag; //成本价选中标志:1固定成本 2比例成
+    private Double costProportional;//比例成本百分比
+    private List<CmProductSn> cmProductSnList; //(重光电/轻光电)SN码
+
+    private String consignee;        //收货人
+    private String buyer;           //买家
+    private Integer thisTimePostNum;   // 虚拟字段  发货时记录当前次数该商品发了几个
+
+    private Integer returnedPurchaseProductNum;     //退货完成数量
+    private Integer returningPurchaseProductNum;   //退货中数量
+    private Integer cancelProductNum;   //取消数量
+    private Integer receivedNum;    //已收数量
+    private Integer returningNum;   //退货退款中数量
+    private Integer returnedNum;   //已退数量
+    private Boolean firstReturn;    //是否是第一次退货退款
+    private Double newCostPrice; // 成本价
+    private Double singleShouldPayTotalTax; //单个付供应商税费
+    private Integer frequency;  //订单量
+    private Integer totalNum;   //销售量
+
+    public Integer getOrderProductID() {
+        return orderProductID;
+    }
+
+    public void setOrderProductID(Integer orderProductID) {
+        this.orderProductID = orderProductID;
+    }
+
+    public Integer getShopOrderID() {
+        return shopOrderID;
+    }
+
+    public void setShopOrderID(Integer shopOrderID) {
+        this.shopOrderID = shopOrderID;
+    }
+
+    public String getShopOrderNo() {
+        return shopOrderNo;
+    }
+
+    public void setShopOrderNo(String shopOrderNo) {
+        this.shopOrderNo = shopOrderNo;
+    }
+
+    public Integer getShopID() {
+        return shopID;
+    }
+
+    public void setShopID(Integer shopID) {
+        this.shopID = shopID;
+    }
+
+    public String getLedgerNo() {
+        return ledgerNo;
+    }
+
+    public void setLedgerNo(String ledgerNo) {
+        this.ledgerNo = ledgerNo;
+    }
+
+    public Integer getProductID() {
+        return productID;
+    }
+
+    public void setProductID(Integer productID) {
+        this.productID = productID;
+    }
+
+    public Integer getNum() {
+        return num;
+    }
+
+    public void setNum(Integer num) {
+        this.num = num;
+    }
+
+    public Integer getPresentNum() {
+        return presentNum;
+    }
+
+    public void setPresentNum(Integer presentNum) {
+        this.presentNum = presentNum;
+    }
+
+    public String getOutStoreType() {
+        return outStoreType;
+    }
+
+    public void setOutStoreType(String outStoreType) {
+        this.outStoreType = outStoreType;
+    }
+
+    public Integer getSkuID() {
+        return skuID;
+    }
+
+    public void setSkuID(Integer skuID) {
+        this.skuID = skuID;
+    }
+
+    public String getProps() {
+        return props;
+    }
+
+    public void setProps(String props) {
+        this.props = props;
+    }
+
+    public String getPropName() {
+        return propName;
+    }
+
+    public void setPropName(String propName) {
+        this.propName = propName;
+    }
+
+    public String getProductNo() {
+        return productNo;
+    }
+
+    public void setProductNo(String productNo) {
+        this.productNo = productNo;
+    }
+
+    public Double getPrice() {
+        return price;
+    }
+
+    public void setPrice(Double price) {
+        this.price = price;
+    }
+
+    public Double getShopProductAmount() {
+        return shopProductAmount;
+    }
+
+    public void setShopProductAmount(Double shopProductAmount) {
+        this.shopProductAmount = shopProductAmount;
+    }
+
+    public Double getNormalPrice() {
+        return normalPrice;
+    }
+
+    public void setNormalPrice(Double normalPrice) {
+        this.normalPrice = normalPrice;
+    }
+
+    public Double getTotalAmount() {
+        return totalAmount;
+    }
+
+    public void setTotalAmount(Double totalAmount) {
+        this.totalAmount = totalAmount;
+    }
+
+    public Double getDiscount() {
+        return discount;
+    }
+
+    public void setDiscount(Double discount) {
+        this.discount = discount;
+    }
+
+    public Double getDiscountPrice() {
+        return discountPrice;
+    }
+
+    public void setDiscountPrice(Double discountPrice) {
+        this.discountPrice = discountPrice;
+    }
+
+    public Double getTaxRate() {
+        return taxRate;
+    }
+
+    public void setTaxRate(Double taxRate) {
+        this.taxRate = taxRate;
+    }
+
+    public Double getAddedValueTax() {
+        return addedValueTax;
+    }
+
+    public void setAddedValueTax(Double addedValueTax) {
+        this.addedValueTax = addedValueTax;
+    }
+
+    public Double getTotalAddedValueTax() {
+        return totalAddedValueTax;
+    }
+
+    public void setTotalAddedValueTax(Double totalAddedValueTax) {
+        this.totalAddedValueTax = totalAddedValueTax;
+    }
+
+    public Double getShouldPayTotalTax() {
+        return shouldPayTotalTax;
+    }
+
+    public void setShouldPayTotalTax(Double shouldPayTotalTax) {
+        this.shouldPayTotalTax = shouldPayTotalTax;
+    }
+
+    public Double getShopFee() {
+        return shopFee;
+    }
+
+    public void setShopFee(Double shopFee) {
+        this.shopFee = shopFee;
+    }
+
+    public Double getOtherFee() {
+        return otherFee;
+    }
+
+    public void setOtherFee(Double otherFee) {
+        this.otherFee = otherFee;
+    }
+
+    public Double getCmFee() {
+        return cmFee;
+    }
+
+    public void setCmFee(Double cmFee) {
+        this.cmFee = cmFee;
+    }
+
+    public Double getSingleShopFee() {
+        return singleShopFee;
+    }
+
+    public void setSingleShopFee(Double singleShopFee) {
+        this.singleShopFee = singleShopFee;
+    }
+
+    public Double getSingleOtherFee() {
+        return singleOtherFee;
+    }
+
+    public void setSingleOtherFee(Double singleOtherFee) {
+        this.singleOtherFee = singleOtherFee;
+    }
+
+    public Double getSingleCmFee() {
+        return singleCmFee;
+    }
+
+    public void setSingleCmFee(Double singleCmFee) {
+        this.singleCmFee = singleCmFee;
+    }
+
+    public Double getShouldPayFee() {
+        return shouldPayFee;
+    }
+
+    public void setShouldPayFee(Double shouldPayFee) {
+        this.shouldPayFee = shouldPayFee;
+    }
+
+    public String getCommentFlag() {
+        return commentFlag;
+    }
+
+    public void setCommentFlag(String commentFlag) {
+        this.commentFlag = commentFlag;
+    }
+
+    public Double getPrice0() {
+        return price0;
+    }
+
+    public void setPrice0(Double price0) {
+        this.price0 = price0;
+    }
+
+    public Double getPrice1() {
+        return price1;
+    }
+
+    public void setPrice1(Double price1) {
+        this.price1 = price1;
+    }
+
+    public Double getTotalFee() {
+        return totalFee;
+    }
+
+    public void setTotalFee(Double totalFee) {
+        this.totalFee = totalFee;
+    }
+
+    public Double getTotalBeans() {
+        return totalBeans;
+    }
+
+    public void setTotalBeans(Double totalBeans) {
+        this.totalBeans = totalBeans;
+    }
+
+    public Double getUseBalanceAmount() {
+        return useBalanceAmount;
+    }
+
+    public void setUseBalanceAmount(Double useBalanceAmount) {
+        this.useBalanceAmount = useBalanceAmount;
+    }
+
+    public Integer getUseBeanAmount() {
+        return useBeanAmount;
+    }
+
+    public void setUseBeanAmount(Integer useBeanAmount) {
+        this.useBeanAmount = useBeanAmount;
+    }
+
+    public Integer getNotOutStore() {
+        return notOutStore;
+    }
+
+    public void setNotOutStore(Integer notOutStore) {
+        this.notOutStore = notOutStore;
+    }
+
+    public Integer getCmbeanPrice() {
+        return cmbeanPrice;
+    }
+
+    public void setCmbeanPrice(Integer cmbeanPrice) {
+        this.cmbeanPrice = cmbeanPrice;
+    }
+
+    public String getIsGiftProduct() {
+        return isGiftProduct;
+    }
+
+    public void setIsGiftProduct(String isGiftProduct) {
+        this.isGiftProduct = isGiftProduct;
+    }
+
+    public String getProductActInfo() {
+        return productActInfo;
+    }
+
+    public void setProductActInfo(String productActInfo) {
+        this.productActInfo = productActInfo;
+    }
+
+    public String getBuyAgainFlag() {
+        return buyAgainFlag;
+    }
+
+    public void setBuyAgainFlag(String buyAgainFlag) {
+        this.buyAgainFlag = buyAgainFlag;
+    }
+
+    public String getConfirmProductFlag() {
+        return confirmProductFlag;
+    }
+
+    public void setConfirmProductFlag(String confirmProductFlag) {
+        this.confirmProductFlag = confirmProductFlag;
+    }
+
+    public NewShopOrder getNewShopOrder() {
+        return newShopOrder;
+    }
+
+    public void setNewShopOrder(NewShopOrder newShopOrder) {
+        this.newShopOrder = newShopOrder;
+    }
+
+    public String getShopFeeFlag() {
+        return shopFeeFlag;
+    }
+
+    public void setShopFeeFlag(String shopFeeFlag) {
+        this.shopFeeFlag = shopFeeFlag;
+    }
+
+    public String getOrderNo() {
+        return orderNo;
+    }
+
+    public void setOrderNo(String orderNo) {
+        this.orderNo = orderNo;
+    }
+
+    public Integer getOrderID() {
+        return orderID;
+    }
+
+    public void setOrderID(Integer orderID) {
+        this.orderID = orderID;
+    }
+
+    public String getShopName() {
+        return shopName;
+    }
+
+    public void setShopName(String shopName) {
+        this.shopName = shopName;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getAliasName() {
+        return aliasName;
+    }
+
+    public void setAliasName(String aliasName) {
+        this.aliasName = aliasName;
+    }
+
+    public String getUnit() {
+        return unit;
+    }
+
+    public void setUnit(String unit) {
+        this.unit = unit;
+    }
+
+    public String getPayStatus() {
+        return payStatus;
+    }
+
+    public void setPayStatus(String payStatus) {
+        this.payStatus = payStatus;
+    }
+
+    public Double getPreferential() {
+        return preferential;
+    }
+
+    public void setPreferential(Double preferential) {
+        this.preferential = preferential;
+    }
+
+    public Double getActPreferential() {
+        return actPreferential;
+    }
+
+    public void setActPreferential(Double actPreferential) {
+        this.actPreferential = actPreferential;
+    }
+
+    public String getImage() {
+        return image;
+    }
+
+    public void setImage(String image) {
+        this.image = image;
+    }
+
+    public Double getDiscountFee() {
+        return discountFee;
+    }
+
+    public void setDiscountFee(Double discountFee) {
+        this.discountFee = discountFee;
+    }
+
+    public String getProductUnit() {
+        return productUnit;
+    }
+
+    public void setProductUnit(String productUnit) {
+        this.productUnit = productUnit;
+    }
+
+    public String getProductImage() {
+        return productImage;
+    }
+
+    public void setProductImage(String productImage) {
+        this.productImage = productImage;
+    }
+
+    public String getShopFee1() {
+        return shopFee1;
+    }
+
+    public void setShopFee1(String shopFee1) {
+        this.shopFee1 = shopFee1;
+    }
+
+    public String getOtherFee1() {
+        return otherFee1;
+    }
+
+    public void setOtherFee1(String otherFee1) {
+        this.otherFee1 = otherFee1;
+    }
+
+    public String getCmFee1() {
+        return cmFee1;
+    }
+
+    public void setCmFee1(String cmFee1) {
+        this.cmFee1 = cmFee1;
+    }
+
+    public Integer getDeliveryNum() {
+        return deliveryNum;
+    }
+
+    public void setDeliveryNum(Integer deliveryNum) {
+        this.deliveryNum = deliveryNum;
+    }
+
+    public Integer getOutStoreTimes() {
+        return outStoreTimes;
+    }
+
+    public void setOutStoreTimes(Integer outStoreTimes) {
+        this.outStoreTimes = outStoreTimes;
+    }
+
+    public Double getCostPrice() {
+        return costPrice;
+    }
+
+    public void setCostPrice(Double costPrice) {
+        this.costPrice = costPrice;
+    }
+
+    public Integer getStock() {
+        return stock;
+    }
+
+    public void setStock(Integer stock) {
+        this.stock = stock;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
+    public String getLogisticsBatchID() {
+        return logisticsBatchID;
+    }
+
+    public void setLogisticsBatchID(String logisticsBatchID) {
+        this.logisticsBatchID = logisticsBatchID;
+    }
+
+    public String getSplitFlag() {
+        return splitFlag;
+    }
+
+    public void setSplitFlag(String splitFlag) {
+        this.splitFlag = splitFlag;
+    }
+
+    public String getCostCheckFlag() {
+        return costCheckFlag;
+    }
+
+    public void setCostCheckFlag(String costCheckFlag) {
+        this.costCheckFlag = costCheckFlag;
+    }
+
+    public Double getCostProportional() {
+        return costProportional;
+    }
+
+    public void setCostProportional(Double costProportional) {
+        this.costProportional = costProportional;
+    }
+
+    public List<CmProductSn> getCmProductSnList() {
+        return cmProductSnList;
+    }
+
+    public void setCmProductSnList(List<CmProductSn> cmProductSnList) {
+        this.cmProductSnList = cmProductSnList;
+    }
+
+    public String getConsignee() {
+        return consignee;
+    }
+
+    public void setConsignee(String consignee) {
+        this.consignee = consignee;
+    }
+
+    public String getBuyer() {
+        return buyer;
+    }
+
+    public void setBuyer(String buyer) {
+        this.buyer = buyer;
+    }
+
+    public Integer getThisTimePostNum() {
+        return thisTimePostNum;
+    }
+
+    public void setThisTimePostNum(Integer thisTimePostNum) {
+        this.thisTimePostNum = thisTimePostNum;
+    }
+
+    public Integer getReturnedPurchaseProductNum() {
+        return returnedPurchaseProductNum;
+    }
+
+    public void setReturnedPurchaseProductNum(Integer returnedPurchaseProductNum) {
+        this.returnedPurchaseProductNum = returnedPurchaseProductNum;
+    }
+
+    public Integer getReturningPurchaseProductNum() {
+        return returningPurchaseProductNum;
+    }
+
+    public void setReturningPurchaseProductNum(Integer returningPurchaseProductNum) {
+        this.returningPurchaseProductNum = returningPurchaseProductNum;
+    }
+
+    public Integer getCancelProductNum() {
+        return cancelProductNum;
+    }
+
+    public void setCancelProductNum(Integer cancelProductNum) {
+        this.cancelProductNum = cancelProductNum;
+    }
+
+    public Integer getReceivedNum() {
+        return receivedNum;
+    }
+
+    public void setReceivedNum(Integer receivedNum) {
+        this.receivedNum = receivedNum;
+    }
+
+    public Integer getReturningNum() {
+        return returningNum;
+    }
+
+    public void setReturningNum(Integer returningNum) {
+        this.returningNum = returningNum;
+    }
+
+    public Integer getReturnedNum() {
+        return returnedNum;
+    }
+
+    public void setReturnedNum(Integer returnedNum) {
+        this.returnedNum = returnedNum;
+    }
+
+    public Boolean getFirstReturn() {
+        return firstReturn;
+    }
+
+    public void setFirstReturn(Boolean firstReturn) {
+        this.firstReturn = firstReturn;
+    }
+
+    public Double getNewCostPrice() {
+        return newCostPrice;
+    }
+
+    public void setNewCostPrice(Double newCostPrice) {
+        this.newCostPrice = newCostPrice;
+    }
+
+    public Double getSingleShouldPayTotalTax() {
+        return singleShouldPayTotalTax;
+    }
+
+    public void setSingleShouldPayTotalTax(Double singleShouldPayTotalTax) {
+        this.singleShouldPayTotalTax = singleShouldPayTotalTax;
+    }
+
+    public Integer getFrequency() {
+        return frequency;
+    }
+
+    public void setFrequency(Integer frequency) {
+        this.frequency = frequency;
+    }
+
+    public Integer getTotalNum() {
+        return totalNum;
+    }
+
+    public void setTotalNum(Integer totalNum) {
+        this.totalNum = totalNum;
+    }
+}

+ 843 - 0
src/main/java/com/caimei/modules/order/entity/NewShopOrder.java

@@ -0,0 +1,843 @@
+package com.caimei.modules.order.entity;
+
+import java.math.BigInteger;
+import java.util.List;
+
+/**
+ * @author lwt
+ * @date 2018-07-24
+ * @description 子订单表
+ */
+public class NewShopOrder {
+    private Integer shopOrderID;//        int(11) not null auto_increment comment '子订单ID',
+    private Integer organizeID;//        组织Id
+    private String shopOrderNo;//       varchar(30) comment '子订单编号',
+    private String orderNo;//        varchar(30) comment '主订单编号',
+    private Integer orderID;             // bigint(11) not null 主订单ID,
+    private String receiptStatus;//主订单收款状态
+    private Double receiptTotalFee;//主订单已收金额
+    private Integer userID;//       int(11) comment '用户Id',
+    private Integer shopID;//       int(11) comment '供应商Id',
+    private Integer itemCount;//       int(11) comment '商品数量',
+    private Integer townID;//       int(11) comment '收货地址县区Id',
+    private Double productAmount;//     float comment '商品金额',
+    private Double shouldPayProduct;            //应收商品金额==应付合计(只需要付商品金额)
+    private Double fee;//     float comment '运费:-1到付,0包邮,其他为具体运费'    ****-----v5.0版本已废弃,运费已使用商品形式存储,
+    private Double discountAmount;//     float,
+    private Double accountAmount;//     decimal(20,2) comment '余额支付时使用的金额',
+    private Double totalAmount;//     decimal(20,2) comment '总价',
+    private String payFlag;//     national char(1) comment '是否已支付:1是,0否',
+    private String payTime;//     national varchar(19) comment '支付时间',
+    private String finishTime;//     national varchar(19) comment '订单完成时间',
+    private Integer status;//     int(11) comment '订单状态:见表c_orderstatus或枚举OrderStatus'   v5.0版本已废弃只有主订单状态,
+    private Integer refundStatus;//    int(11),
+    private BigInteger deliveryTimeMills;//   bigint(20) comment '发货时间(时间戳)',
+    private Double needPayAmount;//   decimal(20,2) comment '实付金额',
+    private Double canRefundAmount;//   float comment '退款金额',
+    private Double refundAmount;//   float,
+    private Integer clubID;//  int(11),
+    private Integer spID;//   int(11),
+    private Integer mainSpID;//    int(11),
+    private Integer orderBeanAmount;//   int(11) default 0,
+    private Integer useBeanAmount;//   int(11) default 0 comment '使用采美豆数量',
+    private Integer useBeanFlag;//     int(11) default 0 comment '是否使用采美豆',
+    private Integer canRefundFlag;//    int(11) default 0 comment '是否可以退货 1可以退款/退货 0不可退款/退货',
+    private Integer useBalanceFlag;//    int(11) default 0 comment '是否使用余额',
+    private Integer canRefundBeans;//    int(11) comment '可以退还的采美豆个数',
+    private Integer orderDeliveryID;//   int(1) comment '运费订单ID',
+    private Double freePostageFee;//    decimal(10,2) comment '订单包邮时本该支付的运费',
+    private Integer freePostageTicketID;//  int(11) comment '使用的包邮券Id,为空表示未使用包邮券',
+    private Double brokerage;//        decimal(11,2) comment '佣金',
+    private String delFlag;//        national varchar(20) default '0' comment '后台删除状态 0正常,其他删除',
+    private Double refundsAmount;//      decimal(20,2) default 0.00 comment '订单退款金额',
+    private String orderStatusFlag;//    national char(1) default '1' comment '订单状态标识,1:非退货退款订单、2:退货退款中、3退货退款完成',
+    private String buyStatus;//       national varchar(255),
+    private NewOrder order;
+    private List<NewOrderProduct> newOrderProducts;
+    private Double preferential; //订单商品的总优惠
+    private int orderSubmitType;
+    private int orderType;             // 订单类型
+    private String orderTime;//下单时间
+    private Integer presentNum;//赠品数量
+    private Integer outStoreNum;//已经发货的商品数量
+    private Integer outStoreTimes;//第几批发货  default 0
+    private Double totalAddedValueTax; // 税费
+    private String splitFlag; // 订单能否拆分 1 为可拆分, 0为不可拆分
+    private Double discountFee; // 经历折扣  v5.0版本已废弃,经理折扣只和主订单有关
+    private Long autoReceiveTimeMills;//自动收货时间点 毫秒计算
+    private Long autoOverTimeMills;// 订单彻底完成时间 不能售后 毫秒
+    private String receiveGoodsTime;//收货时间
+    private String note;//子订单备注信息
+    private String payStatus; //(付款供应商)付款状态:1待付款、2部分付款、3已付款
+    private String sendOutStatus; //发货状态:1待发货、2部分发货、3已发货
+    private String[] ps;    //付款状态集合
+    //-------------        虚拟字段   ----------------------------
+    private String shopName;            //供应商
+    private String receiver;//收货人
+    private String buyer;//买家
+    private String orderSource;//订单来源
+    private String alreadyReceipt;//已收金额
+    private String unReceipt;//未收金额
+    private String paid;//已付金额
+    private String unpaid;//未付金额
+    private String postFeeCos = "0";   //'0'=不是邮费商品子订单; '1'=是邮费商品子订单
+    private List<NewOrderProduct> snOrderProducts;//需要使用sn码的订单产品列表
+    private Boolean defaultStatus;  //控制填写的默认状态(运费订单,部分收款订单 默认不能操作,)
+
+    //--------------- 付款列表展示数据 ------------
+    private String paying;// 是否处于给供应商状态中   0不是的,  1是的
+    private String refunding;// 是否处于供应商退款状态中   0不是的,  1是的
+    private Double payTotalFee;  //主订单金额,  列表中展示需要
+    private Double shopProductAmount;  //付款单的商品费, 子订单商品的成本价的和
+    private Double shopPostFee;  // 付给供应商的运费
+    private Double shopTaxFee;  // 付给供应商的税费
+    private Double shouldPayShopAmount;  //付供应商 = 商品费 + 运费 + 税费
+    private Double payedShopAmount;  //已付款金额
+    private Double shopOtherFee;  //付第三方
+    private Double waitPayShop;  //待付
+    private String startTime;
+    private String endTime;
+    private String operatingMode = "1";// 付款列表操作模式    1付款申请, 2已付退款, 3查看信息
+    private String costType;     //固定成本1,  比例成本2  为空就是还没有设置过
+    private Double proportional;//比例成本的比例值
+    private String modifyShouldPayNote; //修改应付必填备注信息
+    private String modifyShouldPayUserID;  //修改应付金额的用户ID
+    private String modifyShouldPayDate;   //修改应付金额的时间
+    private Double payed;//已付金额
+
+    public Integer getShopOrderID() {
+        return shopOrderID;
+    }
+
+    public void setShopOrderID(Integer shopOrderID) {
+        this.shopOrderID = shopOrderID;
+    }
+
+    public Integer getOrganizeID() {
+        return organizeID;
+    }
+
+    public void setOrganizeID(Integer organizeID) {
+        this.organizeID = organizeID;
+    }
+
+    public String getShopOrderNo() {
+        return shopOrderNo;
+    }
+
+    public void setShopOrderNo(String shopOrderNo) {
+        this.shopOrderNo = shopOrderNo;
+    }
+
+    public String getOrderNo() {
+        return orderNo;
+    }
+
+    public void setOrderNo(String orderNo) {
+        this.orderNo = orderNo;
+    }
+
+    public Integer getOrderID() {
+        return orderID;
+    }
+
+    public void setOrderID(Integer orderID) {
+        this.orderID = orderID;
+    }
+
+    public String getReceiptStatus() {
+        return receiptStatus;
+    }
+
+    public void setReceiptStatus(String receiptStatus) {
+        this.receiptStatus = receiptStatus;
+    }
+
+    public Double getReceiptTotalFee() {
+        return receiptTotalFee;
+    }
+
+    public void setReceiptTotalFee(Double receiptTotalFee) {
+        this.receiptTotalFee = receiptTotalFee;
+    }
+
+    public Integer getUserID() {
+        return userID;
+    }
+
+    public void setUserID(Integer userID) {
+        this.userID = userID;
+    }
+
+    public Integer getShopID() {
+        return shopID;
+    }
+
+    public void setShopID(Integer shopID) {
+        this.shopID = shopID;
+    }
+
+    public Integer getItemCount() {
+        return itemCount;
+    }
+
+    public void setItemCount(Integer itemCount) {
+        this.itemCount = itemCount;
+    }
+
+    public Integer getTownID() {
+        return townID;
+    }
+
+    public void setTownID(Integer townID) {
+        this.townID = townID;
+    }
+
+    public Double getProductAmount() {
+        return productAmount;
+    }
+
+    public void setProductAmount(Double productAmount) {
+        this.productAmount = productAmount;
+    }
+
+    public Double getShouldPayProduct() {
+        return shouldPayProduct;
+    }
+
+    public void setShouldPayProduct(Double shouldPayProduct) {
+        this.shouldPayProduct = shouldPayProduct;
+    }
+
+    public Double getFee() {
+        return fee;
+    }
+
+    public void setFee(Double fee) {
+        this.fee = fee;
+    }
+
+    public Double getDiscountAmount() {
+        return discountAmount;
+    }
+
+    public void setDiscountAmount(Double discountAmount) {
+        this.discountAmount = discountAmount;
+    }
+
+    public Double getAccountAmount() {
+        return accountAmount;
+    }
+
+    public void setAccountAmount(Double accountAmount) {
+        this.accountAmount = accountAmount;
+    }
+
+    public Double getTotalAmount() {
+        return totalAmount;
+    }
+
+    public void setTotalAmount(Double totalAmount) {
+        this.totalAmount = totalAmount;
+    }
+
+    public String getPayFlag() {
+        return payFlag;
+    }
+
+    public void setPayFlag(String payFlag) {
+        this.payFlag = payFlag;
+    }
+
+    public String getPayTime() {
+        return payTime;
+    }
+
+    public void setPayTime(String payTime) {
+        this.payTime = payTime;
+    }
+
+    public String getFinishTime() {
+        return finishTime;
+    }
+
+    public void setFinishTime(String finishTime) {
+        this.finishTime = finishTime;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
+    public Integer getRefundStatus() {
+        return refundStatus;
+    }
+
+    public void setRefundStatus(Integer refundStatus) {
+        this.refundStatus = refundStatus;
+    }
+
+    public BigInteger getDeliveryTimeMills() {
+        return deliveryTimeMills;
+    }
+
+    public void setDeliveryTimeMills(BigInteger deliveryTimeMills) {
+        this.deliveryTimeMills = deliveryTimeMills;
+    }
+
+    public Double getNeedPayAmount() {
+        return needPayAmount;
+    }
+
+    public void setNeedPayAmount(Double needPayAmount) {
+        this.needPayAmount = needPayAmount;
+    }
+
+    public Double getCanRefundAmount() {
+        return canRefundAmount;
+    }
+
+    public void setCanRefundAmount(Double canRefundAmount) {
+        this.canRefundAmount = canRefundAmount;
+    }
+
+    public Double getRefundAmount() {
+        return refundAmount;
+    }
+
+    public void setRefundAmount(Double refundAmount) {
+        this.refundAmount = refundAmount;
+    }
+
+    public Integer getClubID() {
+        return clubID;
+    }
+
+    public void setClubID(Integer clubID) {
+        this.clubID = clubID;
+    }
+
+    public Integer getSpID() {
+        return spID;
+    }
+
+    public void setSpID(Integer spID) {
+        this.spID = spID;
+    }
+
+    public Integer getMainSpID() {
+        return mainSpID;
+    }
+
+    public void setMainSpID(Integer mainSpID) {
+        this.mainSpID = mainSpID;
+    }
+
+    public Integer getOrderBeanAmount() {
+        return orderBeanAmount;
+    }
+
+    public void setOrderBeanAmount(Integer orderBeanAmount) {
+        this.orderBeanAmount = orderBeanAmount;
+    }
+
+    public Integer getUseBeanAmount() {
+        return useBeanAmount;
+    }
+
+    public void setUseBeanAmount(Integer useBeanAmount) {
+        this.useBeanAmount = useBeanAmount;
+    }
+
+    public Integer getUseBeanFlag() {
+        return useBeanFlag;
+    }
+
+    public void setUseBeanFlag(Integer useBeanFlag) {
+        this.useBeanFlag = useBeanFlag;
+    }
+
+    public Integer getCanRefundFlag() {
+        return canRefundFlag;
+    }
+
+    public void setCanRefundFlag(Integer canRefundFlag) {
+        this.canRefundFlag = canRefundFlag;
+    }
+
+    public Integer getUseBalanceFlag() {
+        return useBalanceFlag;
+    }
+
+    public void setUseBalanceFlag(Integer useBalanceFlag) {
+        this.useBalanceFlag = useBalanceFlag;
+    }
+
+    public Integer getCanRefundBeans() {
+        return canRefundBeans;
+    }
+
+    public void setCanRefundBeans(Integer canRefundBeans) {
+        this.canRefundBeans = canRefundBeans;
+    }
+
+    public Integer getOrderDeliveryID() {
+        return orderDeliveryID;
+    }
+
+    public void setOrderDeliveryID(Integer orderDeliveryID) {
+        this.orderDeliveryID = orderDeliveryID;
+    }
+
+    public Double getFreePostageFee() {
+        return freePostageFee;
+    }
+
+    public void setFreePostageFee(Double freePostageFee) {
+        this.freePostageFee = freePostageFee;
+    }
+
+    public Integer getFreePostageTicketID() {
+        return freePostageTicketID;
+    }
+
+    public void setFreePostageTicketID(Integer freePostageTicketID) {
+        this.freePostageTicketID = freePostageTicketID;
+    }
+
+    public Double getBrokerage() {
+        return brokerage;
+    }
+
+    public void setBrokerage(Double brokerage) {
+        this.brokerage = brokerage;
+    }
+
+    public String getDelFlag() {
+        return delFlag;
+    }
+
+    public void setDelFlag(String delFlag) {
+        this.delFlag = delFlag;
+    }
+
+    public Double getRefundsAmount() {
+        return refundsAmount;
+    }
+
+    public void setRefundsAmount(Double refundsAmount) {
+        this.refundsAmount = refundsAmount;
+    }
+
+    public String getOrderStatusFlag() {
+        return orderStatusFlag;
+    }
+
+    public void setOrderStatusFlag(String orderStatusFlag) {
+        this.orderStatusFlag = orderStatusFlag;
+    }
+
+    public String getBuyStatus() {
+        return buyStatus;
+    }
+
+    public void setBuyStatus(String buyStatus) {
+        this.buyStatus = buyStatus;
+    }
+
+    public NewOrder getOrder() {
+        return order;
+    }
+
+    public void setOrder(NewOrder order) {
+        this.order = order;
+    }
+
+    public List<NewOrderProduct> getNewOrderProducts() {
+        return newOrderProducts;
+    }
+
+    public void setNewOrderProducts(List<NewOrderProduct> newOrderProducts) {
+        this.newOrderProducts = newOrderProducts;
+    }
+
+    public Double getPreferential() {
+        return preferential;
+    }
+
+    public void setPreferential(Double preferential) {
+        this.preferential = preferential;
+    }
+
+    public int getOrderSubmitType() {
+        return orderSubmitType;
+    }
+
+    public void setOrderSubmitType(int orderSubmitType) {
+        this.orderSubmitType = orderSubmitType;
+    }
+
+    public int getOrderType() {
+        return orderType;
+    }
+
+    public void setOrderType(int orderType) {
+        this.orderType = orderType;
+    }
+
+    public String getOrderTime() {
+        return orderTime;
+    }
+
+    public void setOrderTime(String orderTime) {
+        this.orderTime = orderTime;
+    }
+
+    public Integer getPresentNum() {
+        return presentNum;
+    }
+
+    public void setPresentNum(Integer presentNum) {
+        this.presentNum = presentNum;
+    }
+
+    public Integer getOutStoreNum() {
+        return outStoreNum;
+    }
+
+    public void setOutStoreNum(Integer outStoreNum) {
+        this.outStoreNum = outStoreNum;
+    }
+
+    public Integer getOutStoreTimes() {
+        return outStoreTimes;
+    }
+
+    public void setOutStoreTimes(Integer outStoreTimes) {
+        this.outStoreTimes = outStoreTimes;
+    }
+
+    public Double getTotalAddedValueTax() {
+        return totalAddedValueTax;
+    }
+
+    public void setTotalAddedValueTax(Double totalAddedValueTax) {
+        this.totalAddedValueTax = totalAddedValueTax;
+    }
+
+    public String getSplitFlag() {
+        return splitFlag;
+    }
+
+    public void setSplitFlag(String splitFlag) {
+        this.splitFlag = splitFlag;
+    }
+
+    public Double getDiscountFee() {
+        return discountFee;
+    }
+
+    public void setDiscountFee(Double discountFee) {
+        this.discountFee = discountFee;
+    }
+
+    public Long getAutoReceiveTimeMills() {
+        return autoReceiveTimeMills;
+    }
+
+    public void setAutoReceiveTimeMills(Long autoReceiveTimeMills) {
+        this.autoReceiveTimeMills = autoReceiveTimeMills;
+    }
+
+    public Long getAutoOverTimeMills() {
+        return autoOverTimeMills;
+    }
+
+    public void setAutoOverTimeMills(Long autoOverTimeMills) {
+        this.autoOverTimeMills = autoOverTimeMills;
+    }
+
+    public String getReceiveGoodsTime() {
+        return receiveGoodsTime;
+    }
+
+    public void setReceiveGoodsTime(String receiveGoodsTime) {
+        this.receiveGoodsTime = receiveGoodsTime;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public void setNote(String note) {
+        this.note = note;
+    }
+
+    public String getPayStatus() {
+        return payStatus;
+    }
+
+    public void setPayStatus(String payStatus) {
+        this.payStatus = payStatus;
+    }
+
+    public String getSendOutStatus() {
+        return sendOutStatus;
+    }
+
+    public void setSendOutStatus(String sendOutStatus) {
+        this.sendOutStatus = sendOutStatus;
+    }
+
+    public String[] getPs() {
+        return ps;
+    }
+
+    public void setPs(String[] ps) {
+        this.ps = ps;
+    }
+
+    public String getShopName() {
+        return shopName;
+    }
+
+    public void setShopName(String shopName) {
+        this.shopName = shopName;
+    }
+
+    public String getReceiver() {
+        return receiver;
+    }
+
+    public void setReceiver(String receiver) {
+        this.receiver = receiver;
+    }
+
+    public String getBuyer() {
+        return buyer;
+    }
+
+    public void setBuyer(String buyer) {
+        this.buyer = buyer;
+    }
+
+    public String getOrderSource() {
+        return orderSource;
+    }
+
+    public void setOrderSource(String orderSource) {
+        this.orderSource = orderSource;
+    }
+
+    public String getAlreadyReceipt() {
+        return alreadyReceipt;
+    }
+
+    public void setAlreadyReceipt(String alreadyReceipt) {
+        this.alreadyReceipt = alreadyReceipt;
+    }
+
+    public String getUnReceipt() {
+        return unReceipt;
+    }
+
+    public void setUnReceipt(String unReceipt) {
+        this.unReceipt = unReceipt;
+    }
+
+    public String getPaid() {
+        return paid;
+    }
+
+    public void setPaid(String paid) {
+        this.paid = paid;
+    }
+
+    public String getUnpaid() {
+        return unpaid;
+    }
+
+    public void setUnpaid(String unpaid) {
+        this.unpaid = unpaid;
+    }
+
+    public String getPostFeeCos() {
+        return postFeeCos;
+    }
+
+    public void setPostFeeCos(String postFeeCos) {
+        this.postFeeCos = postFeeCos;
+    }
+
+    public List<NewOrderProduct> getSnOrderProducts() {
+        return snOrderProducts;
+    }
+
+    public void setSnOrderProducts(List<NewOrderProduct> snOrderProducts) {
+        this.snOrderProducts = snOrderProducts;
+    }
+
+    public Boolean getDefaultStatus() {
+        return defaultStatus;
+    }
+
+    public void setDefaultStatus(Boolean defaultStatus) {
+        this.defaultStatus = defaultStatus;
+    }
+
+    public String getPaying() {
+        return paying;
+    }
+
+    public void setPaying(String paying) {
+        this.paying = paying;
+    }
+
+    public String getRefunding() {
+        return refunding;
+    }
+
+    public void setRefunding(String refunding) {
+        this.refunding = refunding;
+    }
+
+    public Double getPayTotalFee() {
+        return payTotalFee;
+    }
+
+    public void setPayTotalFee(Double payTotalFee) {
+        this.payTotalFee = payTotalFee;
+    }
+
+    public Double getShopProductAmount() {
+        return shopProductAmount;
+    }
+
+    public void setShopProductAmount(Double shopProductAmount) {
+        this.shopProductAmount = shopProductAmount;
+    }
+
+    public Double getShopPostFee() {
+        return shopPostFee;
+    }
+
+    public void setShopPostFee(Double shopPostFee) {
+        this.shopPostFee = shopPostFee;
+    }
+
+    public Double getShopTaxFee() {
+        return shopTaxFee;
+    }
+
+    public void setShopTaxFee(Double shopTaxFee) {
+        this.shopTaxFee = shopTaxFee;
+    }
+
+    public Double getShouldPayShopAmount() {
+        return shouldPayShopAmount;
+    }
+
+    public void setShouldPayShopAmount(Double shouldPayShopAmount) {
+        this.shouldPayShopAmount = shouldPayShopAmount;
+    }
+
+    public Double getPayedShopAmount() {
+        return payedShopAmount;
+    }
+
+    public void setPayedShopAmount(Double payedShopAmount) {
+        this.payedShopAmount = payedShopAmount;
+    }
+
+    public Double getShopOtherFee() {
+        return shopOtherFee;
+    }
+
+    public void setShopOtherFee(Double shopOtherFee) {
+        this.shopOtherFee = shopOtherFee;
+    }
+
+    public Double getWaitPayShop() {
+        return waitPayShop;
+    }
+
+    public void setWaitPayShop(Double waitPayShop) {
+        this.waitPayShop = waitPayShop;
+    }
+
+    public String getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(String startTime) {
+        this.startTime = startTime;
+    }
+
+    public String getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(String endTime) {
+        this.endTime = endTime;
+    }
+
+    public String getOperatingMode() {
+        return operatingMode;
+    }
+
+    public void setOperatingMode(String operatingMode) {
+        this.operatingMode = operatingMode;
+    }
+
+    public String getCostType() {
+        return costType;
+    }
+
+    public void setCostType(String costType) {
+        this.costType = costType;
+    }
+
+    public Double getProportional() {
+        return proportional;
+    }
+
+    public void setProportional(Double proportional) {
+        this.proportional = proportional;
+    }
+
+    public String getModifyShouldPayNote() {
+        return modifyShouldPayNote;
+    }
+
+    public void setModifyShouldPayNote(String modifyShouldPayNote) {
+        this.modifyShouldPayNote = modifyShouldPayNote;
+    }
+
+    public String getModifyShouldPayUserID() {
+        return modifyShouldPayUserID;
+    }
+
+    public void setModifyShouldPayUserID(String modifyShouldPayUserID) {
+        this.modifyShouldPayUserID = modifyShouldPayUserID;
+    }
+
+    public String getModifyShouldPayDate() {
+        return modifyShouldPayDate;
+    }
+
+    public void setModifyShouldPayDate(String modifyShouldPayDate) {
+        this.modifyShouldPayDate = modifyShouldPayDate;
+    }
+
+    public Double getPayed() {
+        return payed;
+    }
+
+    public void setPayed(Double payed) {
+        this.payed = payed;
+    }
+}

+ 127 - 0
src/main/java/com/caimei/modules/order/entity/OrderInvoice.java

@@ -0,0 +1,127 @@
+package com.caimei.modules.order.entity;
+
+import org.hibernate.validator.constraints.Length;
+
+import java.io.Serializable;
+
+/**
+ * 订单发票Entity
+ * @author jiangjunwen
+ * @version 2017-04-09
+ */
+public class OrderInvoice implements Serializable {
+	
+	private static final long serialVersionUID = 1L;
+	private Integer id;
+	private Long orderId;		// 订单ID
+	private String invoiceTitle;		// 发票抬头 个人名称或企业名称
+	private String invoiceType;		// 发票类型 普通发票
+	private String invoiceContent;		// 发票内容 商品明细
+	private String invoiceTitleType;		// 发票抬头类型 0个人  1 企业'
+	private String corporationTaxNum;		// 企业税号
+
+	private String type;//发票类型 0不开发票 1普通发票 2增值税发票
+	private String registeredAddress;//注册地址
+	private String registeredPhone;//注册电话
+	private String bankAccountNo;//开户银行账户
+	private String openBank;//开户银行
+
+	public Integer getId() {
+		return id;
+	}
+
+	public void setId(Integer id) {
+		this.id = id;
+	}
+
+	public String getType() {
+		return type;
+	}
+
+	public void setType(String type) {
+		this.type = type;
+	}
+
+	public String getRegisteredAddress() {
+		return registeredAddress;
+	}
+
+	public void setRegisteredAddress(String registeredAddress) {
+		this.registeredAddress = registeredAddress;
+	}
+
+	public String getRegisteredPhone() {
+		return registeredPhone;
+	}
+
+	public void setRegisteredPhone(String registeredPhone) {
+		this.registeredPhone = registeredPhone;
+	}
+
+	public String getBankAccountNo() {
+		return bankAccountNo;
+	}
+
+	public void setBankAccountNo(String bankAccountNo) {
+		this.bankAccountNo = bankAccountNo;
+	}
+
+	public String getOpenBank() {
+		return openBank;
+	}
+
+	public void setOpenBank(String openBank) {
+		this.openBank = openBank;
+	}
+
+	public Long getOrderId() {
+		return orderId;
+	}
+
+	public void setOrderId(Long orderId) {
+		this.orderId = orderId;
+	}
+	
+	@Length(min=0, max=100, message="发票抬头长度必须介于 0 和 100 之间")
+	public String getInvoiceTitle() {
+		return invoiceTitle;
+	}
+
+	public void setInvoiceTitle(String invoiceTitle) {
+		this.invoiceTitle = invoiceTitle;
+	}
+	
+	@Length(min=0, max=20, message="发票类型长度必须介于 0 和 20 之间")
+	public String getInvoiceType() {
+		return invoiceType;
+	}
+
+	public void setInvoiceType(String invoiceType) {
+		this.invoiceType = invoiceType;
+	}
+	
+	@Length(min=0, max=20, message="发票内容长度必须介于 0 和 20 之间")
+	public String getInvoiceContent() {
+		return invoiceContent;
+	}
+
+	public void setInvoiceContent(String invoiceContent) {
+		this.invoiceContent = invoiceContent;
+	}
+
+	public String getInvoiceTitleType() {
+		return invoiceTitleType;
+	}
+
+	public void setInvoiceTitleType(String invoiceTitleType) {
+		this.invoiceTitleType = invoiceTitleType;
+	}
+
+	public String getCorporationTaxNum() {
+		return corporationTaxNum;
+	}
+
+	public void setCorporationTaxNum(String corporationTaxNum) {
+		this.corporationTaxNum = corporationTaxNum;
+	}
+}

+ 152 - 0
src/main/java/com/caimei/modules/order/entity/OrderUserInfo.java

@@ -0,0 +1,152 @@
+package com.caimei.modules.order.entity;
+
+import java.io.Serializable;
+
+/**
+ * 订单客户详情Entity
+ *
+ * @author 李文涛
+ * @version 2018-08-07
+ */
+public class OrderUserInfo implements Serializable {
+    private static final long serialVersionUID = 1L;
+    private Integer id;
+    private Long orderId;        // 订单ID
+    private Long clubId;        // clubId
+    private Long userId;        // userId
+    private String name;        // 买家
+    private String shouHuoRen;        // 收货人
+    private String mobile;        // 手机
+    private String phone;        // 电话
+    private String postalCode;        // 邮编
+    private String province;        // 省、直辖市
+    private String city;        // 市
+    private String town;        // 县、区
+    private String address;        // 收货地址
+    private Double userMoney;    //账户余额
+    private Double ableUserMoney;    //可用余额
+
+    public static long getSerialVersionUID() {
+        return serialVersionUID;
+    }
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Long getOrderId() {
+        return orderId;
+    }
+
+    public void setOrderId(Long orderId) {
+        this.orderId = orderId;
+    }
+
+    public Long getClubId() {
+        return clubId;
+    }
+
+    public void setClubId(Long clubId) {
+        this.clubId = clubId;
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getShouHuoRen() {
+        return shouHuoRen;
+    }
+
+    public void setShouHuoRen(String shouHuoRen) {
+        this.shouHuoRen = shouHuoRen;
+    }
+
+    public String getMobile() {
+        return mobile;
+    }
+
+    public void setMobile(String mobile) {
+        this.mobile = mobile;
+    }
+
+    public String getPhone() {
+        return phone;
+    }
+
+    public void setPhone(String phone) {
+        this.phone = phone;
+    }
+
+    public String getPostalCode() {
+        return postalCode;
+    }
+
+    public void setPostalCode(String postalCode) {
+        this.postalCode = postalCode;
+    }
+
+    public String getProvince() {
+        return province;
+    }
+
+    public void setProvince(String province) {
+        this.province = province;
+    }
+
+    public String getCity() {
+        return city;
+    }
+
+    public void setCity(String city) {
+        this.city = city;
+    }
+
+    public String getTown() {
+        return town;
+    }
+
+    public void setTown(String town) {
+        this.town = town;
+    }
+
+    public String getAddress() {
+        return address;
+    }
+
+    public void setAddress(String address) {
+        this.address = address;
+    }
+
+    public Double getUserMoney() {
+        return userMoney;
+    }
+
+    public void setUserMoney(Double userMoney) {
+        this.userMoney = userMoney;
+    }
+
+    public Double getAbleUserMoney() {
+        return ableUserMoney;
+    }
+
+    public void setAbleUserMoney(Double ableUserMoney) {
+        this.ableUserMoney = ableUserMoney;
+    }
+}

+ 43 - 0
src/main/java/com/caimei/modules/order/entity/ProductType.java

@@ -0,0 +1,43 @@
+package com.caimei.modules.order.entity;
+
+
+/**
+ * @Author ye.qin
+ * @Description //TODO 商品常用一级分类枚举类型
+ * @Date 2018/11/27 17:09
+ */
+public enum ProductType {
+    Q1(1021, "轻光电"),
+    Q2(1022, "重光电"),
+    H1(1020, "仪器耗材"),
+    H2(1019, "会所常用品"),
+    C1(1018, "产品");
+
+    /** 等级编号 */
+    private Integer bigeTypeID;
+    /** 等级名称 */
+    private String typeName;
+
+    private ProductType(Integer bigeTypeID, String typeName) {
+        this.bigeTypeID = bigeTypeID;
+        this.typeName = typeName;
+    }
+
+    public Integer getBigeTypeID() {
+        return bigeTypeID;
+    }
+
+    public String getTypeName() {
+        return typeName;
+    }
+
+    public static String ProductType(int bigeTypeID){
+        for(ProductType type : ProductType.values()){
+            if(type.getBigeTypeID() == bigeTypeID){
+                return type.typeName;
+            }
+        }
+        return "";
+    }
+
+}

+ 106 - 0
src/main/java/com/caimei/modules/order/entity/ShopOrderReturned.java

@@ -0,0 +1,106 @@
+package com.caimei.modules.order.entity;
+
+import java.io.Serializable;
+import java.util.List;
+
+public class ShopOrderReturned implements Serializable {
+    private String shopName;
+    private Integer shopID;
+    private Integer shopOrderID;
+    private String shopOrderNo;
+    private String returnedReceiver;
+    private String payStatus;//付款供应商)付款状态:1待付款、2部分付款、3已付款
+    private String sendOutStatus;//发货状态:1待发货、2部分发货、3已发货
+    private Double needPayAmount;
+    private Double totalAmount;
+    private Double productAmount;//总金额 = 订单商品totalAmount
+    private List<CmReturnedPurchaseProduct> cmReturnedPurchaseProductList;
+
+    public String getShopName() {
+        return shopName;
+    }
+
+    public void setShopName(String shopName) {
+        this.shopName = shopName;
+    }
+
+    public Integer getShopID() {
+        return shopID;
+    }
+
+    public void setShopID(Integer shopID) {
+        this.shopID = shopID;
+    }
+
+    public Integer getShopOrderID() {
+        return shopOrderID;
+    }
+
+    public void setShopOrderID(Integer shopOrderID) {
+        this.shopOrderID = shopOrderID;
+    }
+
+    public List<CmReturnedPurchaseProduct> getCmReturnedPurchaseProductList() {
+        return cmReturnedPurchaseProductList;
+    }
+
+    public void setCmReturnedPurchaseProductList(List<CmReturnedPurchaseProduct> cmReturnedPurchaseProductList) {
+        this.cmReturnedPurchaseProductList = cmReturnedPurchaseProductList;
+    }
+
+    public String getReturnedReceiver() {
+        return returnedReceiver;
+    }
+
+    public void setReturnedReceiver(String returnedReceiver) {
+        this.returnedReceiver = returnedReceiver;
+    }
+
+    public String getPayStatus() {
+        return payStatus;
+    }
+
+    public void setPayStatus(String payStatus) {
+        this.payStatus = payStatus;
+    }
+
+    public String getSendOutStatus() {
+        return sendOutStatus;
+    }
+
+    public void setSendOutStatus(String sendOutStatus) {
+        this.sendOutStatus = sendOutStatus;
+    }
+
+    public Double getNeedPayAmount() {
+        return needPayAmount;
+    }
+
+    public void setNeedPayAmount(Double needPayAmount) {
+        this.needPayAmount = needPayAmount;
+    }
+
+    public Double getTotalAmount() {
+        return totalAmount;
+    }
+
+    public void setTotalAmount(Double totalAmount) {
+        this.totalAmount = totalAmount;
+    }
+
+    public Double getProductAmount() {
+        return productAmount;
+    }
+
+    public void setProductAmount(Double productAmount) {
+        this.productAmount = productAmount;
+    }
+
+    public String getShopOrderNo() {
+        return shopOrderNo;
+    }
+
+    public void setShopOrderNo(String shopOrderNo) {
+        this.shopOrderNo = shopOrderNo;
+    }
+}

+ 9 - 0
src/main/java/com/caimei/modules/order/service/BpClauseService.java

@@ -0,0 +1,9 @@
+package com.caimei.modules.order.service;
+
+import com.caimei.modules.order.entity.BpClause;
+
+import java.util.List;
+
+public interface BpClauseService {
+    List<BpClause> findList(BpClause bpClause);
+}

+ 5 - 0
src/main/java/com/caimei/modules/order/service/CmDiscernReceiptService.java

@@ -0,0 +1,5 @@
+package com.caimei.modules.order.service;
+
+public interface CmDiscernReceiptService {
+    Double findOrderReceipt(Integer orderID);
+}

+ 11 - 0
src/main/java/com/caimei/modules/order/service/CmOrderRemarkService.java

@@ -0,0 +1,11 @@
+package com.caimei.modules.order.service;
+
+import com.caimei.modules.order.entity.CmOrderRemark;
+
+import java.util.List;
+
+public interface CmOrderRemarkService {
+    CmOrderRemark get(String id);
+
+    List<CmOrderRemark> findList(CmOrderRemark remark);
+}

+ 11 - 0
src/main/java/com/caimei/modules/order/service/CmReceiptOrderRelationService.java

@@ -0,0 +1,11 @@
+package com.caimei.modules.order.service;
+
+import com.caimei.modules.order.entity.CmReceiptOrderRelation;
+
+import java.util.List;
+
+public interface CmReceiptOrderRelationService {
+    List<Integer> toAudit(Integer orderID);
+
+    List<CmReceiptOrderRelation> findByOrderID(Integer orderID);
+}

+ 13 - 0
src/main/java/com/caimei/modules/order/service/CmReturnedPurchaseService.java

@@ -0,0 +1,13 @@
+package com.caimei.modules.order.service;
+
+import com.caimei.modules.order.entity.CmReturnedPurchase;
+
+import java.util.List;
+
+public interface CmReturnedPurchaseService {
+    List<Integer> findOrderIDsInApplyReturnFlag(List<Integer> oId);
+
+    List<CmReturnedPurchase> getReturnedPurchaseList(CmReturnedPurchase cmReturnedPurchase);
+
+    List<CmReturnedPurchase> findList(CmReturnedPurchase cmReturnedPurchase);
+}

+ 7 - 0
src/main/java/com/caimei/modules/order/service/NewOrderConfigService.java

@@ -0,0 +1,7 @@
+package com.caimei.modules.order.service;
+
+import com.caimei.modules.order.entity.NewOrderConfig;
+
+public interface NewOrderConfigService {
+    NewOrderConfig getValueByKey(String confirmOverTime);
+}

+ 10 - 0
src/main/java/com/caimei/modules/order/service/NewOrderService.java

@@ -0,0 +1,10 @@
+package com.caimei.modules.order.service;
+
+import com.caimei.modules.club.entity.Page;
+import com.caimei.modules.order.entity.NewOrder;
+
+public interface NewOrderService {
+    Page<NewOrder> findList(NewOrder newOrder, Page page);
+
+    NewOrder get(String id);
+}

+ 12 - 0
src/main/java/com/caimei/modules/order/service/NewShopOrderService.java

@@ -0,0 +1,12 @@
+package com.caimei.modules.order.service;
+
+import com.caimei.modules.order.entity.LogisticsInfoVo;
+import com.caimei.modules.order.entity.NewShopOrder;
+
+import java.util.List;
+
+public interface NewShopOrderService {
+    NewShopOrder findByShopOrderID(Integer shopOrderID);
+
+    List<LogisticsInfoVo> logisticsDetails(Integer orderID, String logisticsBatchID);
+}

+ 7 - 0
src/main/java/com/caimei/modules/order/service/OrderUserInfoService.java

@@ -0,0 +1,7 @@
+package com.caimei.modules.order.service;
+
+import com.caimei.modules.order.entity.OrderUserInfo;
+
+public interface OrderUserInfoService {
+    OrderUserInfo findByOrderID(Integer orderID);
+}

+ 20 - 0
src/main/java/com/caimei/modules/order/service/impl/BpClauseServiceImpl.java

@@ -0,0 +1,20 @@
+package com.caimei.modules.order.service.impl;
+
+import com.caimei.modules.order.dao.BpClauseDao;
+import com.caimei.modules.order.entity.BpClause;
+import com.caimei.modules.order.service.BpClauseService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class BpClauseServiceImpl implements BpClauseService {
+    @Autowired
+    private BpClauseDao bpClauseDao;
+
+    @Override
+    public List<BpClause> findList(BpClause bpClause) {
+        return bpClauseDao.findList(bpClause);
+    }
+}

+ 18 - 0
src/main/java/com/caimei/modules/order/service/impl/CmDiscernReceiptServiceImpl.java

@@ -0,0 +1,18 @@
+package com.caimei.modules.order.service.impl;
+
+import com.caimei.modules.order.dao.CmDiscernReceiptDao;
+import com.caimei.modules.order.service.CmDiscernReceiptService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class CmDiscernReceiptServiceImpl implements CmDiscernReceiptService {
+    @Autowired
+    private CmDiscernReceiptDao cmDiscernReceiptDao;
+
+    @Override
+    public Double findOrderReceipt(Integer orderID) {
+        Double receiptAmount = cmDiscernReceiptDao.findOrderReceipt(orderID);
+        return receiptAmount;
+    }
+}

+ 25 - 0
src/main/java/com/caimei/modules/order/service/impl/CmOrderRemarkServiceImpl.java

@@ -0,0 +1,25 @@
+package com.caimei.modules.order.service.impl;
+
+import com.caimei.modules.order.dao.CmOrderRemarkDao;
+import com.caimei.modules.order.entity.CmOrderRemark;
+import com.caimei.modules.order.service.CmOrderRemarkService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class CmOrderRemarkServiceImpl implements CmOrderRemarkService {
+    @Autowired
+    private CmOrderRemarkDao cmOrderRemarkDao;
+
+    @Override
+    public CmOrderRemark get(String id) {
+        return cmOrderRemarkDao.get(id);
+    }
+
+    @Override
+    public List<CmOrderRemark> findList(CmOrderRemark remark) {
+        return cmOrderRemarkDao.findList(remark);
+    }
+}

+ 30 - 0
src/main/java/com/caimei/modules/order/service/impl/CmReceiptOrderRelationServiceImpl.java

@@ -0,0 +1,30 @@
+package com.caimei.modules.order.service.impl;
+
+import com.caimei.modules.order.dao.CmReceiptOrderRelationDao;
+import com.caimei.modules.order.entity.CmReceiptOrderRelation;
+import com.caimei.modules.order.service.CmReceiptOrderRelationService;
+import com.caimei.utils.ReceivablesType;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class CmReceiptOrderRelationServiceImpl implements CmReceiptOrderRelationService {
+    @Autowired
+    private CmReceiptOrderRelationDao cmReceiptOrderRelationDao;
+
+    @Override
+    public List<Integer> toAudit(Integer orderID) {
+        return cmReceiptOrderRelationDao.toAudit(orderID);
+    }
+
+    @Override
+    public List<CmReceiptOrderRelation> findByOrderID(Integer orderID) {
+        List<CmReceiptOrderRelation> list= cmReceiptOrderRelationDao.findByOrderID(orderID);
+        for(CmReceiptOrderRelation bean : list){
+            bean.setPayType(ReceivablesType.getReceivablesType(Integer.parseInt(bean.getPayType())));
+        }
+        return list;
+    }
+}

+ 125 - 0
src/main/java/com/caimei/modules/order/service/impl/CmReturnedPurchaseServiceImpl.java

@@ -0,0 +1,125 @@
+package com.caimei.modules.order.service.impl;
+
+import com.caimei.modules.order.dao.CmReturnedPurchaseDao;
+import com.caimei.modules.order.dao.CmReturnedPurchaseProductDao;
+import com.caimei.modules.order.dao.NewOrderProductDao;
+import com.caimei.modules.order.entity.*;
+import com.caimei.modules.order.service.CmReturnedPurchaseService;
+import com.caimei.modules.order.service.NewShopOrderService;
+import com.caimei.utils.AppUtils;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+
+@Service
+public class CmReturnedPurchaseServiceImpl implements CmReturnedPurchaseService {
+    @Autowired
+    private CmReturnedPurchaseDao cmReturnedPurchaseDao;
+    @Autowired
+    private CmReturnedPurchaseProductDao cmReturnedPurchaseProductDao;
+    @Autowired
+    private NewOrderProductDao newOrderProductDao;
+    @Autowired
+    private NewShopOrderService newShopOrderService;
+    @Value("${malladmin.domain}")
+    private String domain;
+
+    @Override
+    public List<Integer> findOrderIDsInApplyReturnFlag(List<Integer> oId) {
+        return cmReturnedPurchaseDao.findOrderIDsInApplyReturnFlag(oId);
+    }
+
+    @Override
+    public List<CmReturnedPurchase> getReturnedPurchaseList(CmReturnedPurchase cmReturnedPurchase) {
+        List<CmReturnedPurchase> dataList = new ArrayList<CmReturnedPurchase>();
+        dataList = cmReturnedPurchaseDao.findList(cmReturnedPurchase);
+        if (null != dataList && dataList.size() > 0) {
+            for (CmReturnedPurchase bean : dataList) {
+                CmReturnedPurchaseProduct cmReturnedPurchaseProduct = new CmReturnedPurchaseProduct();
+                cmReturnedPurchaseProduct.setReturnedID(bean.getId());
+                List<CmReturnedPurchaseProduct> list = cmReturnedPurchaseProductDao.findList(cmReturnedPurchaseProduct);
+                for (CmReturnedPurchaseProduct item : list) {
+                    item.setMainImage(AppUtils.getImageURL("product", item.getMainImage(), 0, domain));//设置全路径
+                    //计算商品的未出库和已取消和已发货数量
+                    Integer notOutStore = 0;
+                    Integer returnedPurchaseProductNum = 0;
+                    Integer cancelProductNum = 0;
+                    NewOrderProduct newOrderProduct = newOrderProductDao.get(item.getOrderProductID());
+                    if (null != newOrderProduct) {
+                        notOutStore = newOrderProduct.getNotOutStore();
+                    }
+                    //获取退货退款记录
+                    CmReturnedPurchaseProduct purchaseProduct = new CmReturnedPurchaseProduct();
+                    purchaseProduct.setShopOrderID(item.getShopOrderID());
+                    purchaseProduct.setProductID(item.getProductID());
+                    List<CmReturnedPurchaseProduct> cmReturnedPurchaseProductList = cmReturnedPurchaseProductDao.getCmReturnedPurchaseProductList(purchaseProduct);
+                    if (CollectionUtils.isNotEmpty(cmReturnedPurchaseProductList)) {
+                        for (CmReturnedPurchaseProduct c : cmReturnedPurchaseProductList) {
+                            returnedPurchaseProductNum += c.getActualReturnedNum();
+                            cancelProductNum += c.getActualCancelNum();
+                        }
+                    }
+                    item.setNotOutStore(notOutStore);
+                    item.setReturnedPurchaseProductNum(returnedPurchaseProductNum);
+                    item.setCancelProductNum(cancelProductNum);
+
+
+                    //判断订单商品是否是首次退货退款
+                    Boolean isFirstReturn = false;
+                    List<CmReturnedPurchaseProduct> temporaryList = cmReturnedPurchaseProductDao.findListByReturnTime(bean.getOrderID(), item.getShopOrderID(), item.getOrderProductID(), bean.getReturnTime());
+                    if (null == temporaryList || temporaryList.size() == 0) {
+                        isFirstReturn = true;
+                    }
+                    item.setFirstReturn(isFirstReturn);
+                }
+
+                //遍历List根据子订单分组
+                Map map = new HashMap<String, List>();
+                for (CmReturnedPurchaseProduct bean1 : list) {
+                    if (map.containsKey(bean1.getShopOrderID())) {
+                        List data = (List) map.get(bean1.getShopOrderID());
+                        data.add(bean1);
+                    } else {
+                        List data = new ArrayList();
+                        data.add(bean1);
+                        map.put(bean1.getShopOrderID(), data);
+                    }
+                }
+                //遍历map 把刚刚按照子订单排序的map取出来放到对象中
+                List<ShopOrderReturned> shopOrderReturnedList = new ArrayList<ShopOrderReturned>();
+                Iterator<Map.Entry<String, List<CmReturnedPurchaseProduct>>> entries = map.entrySet().iterator();
+                while (entries.hasNext()) {
+                    ShopOrderReturned shopOrderReturned = new ShopOrderReturned();
+                    Map.Entry<String, List<CmReturnedPurchaseProduct>> entry = entries.next();
+                    if (entry.getValue().size() > 0) {
+                        shopOrderReturned.setCmReturnedPurchaseProductList(entry.getValue());
+                        CmReturnedPurchaseProduct item = entry.getValue().get(0);
+                        shopOrderReturned.setShopName(item.getShopName());
+                        shopOrderReturned.setShopID(item.getShopID());
+                        shopOrderReturned.setShopOrderID(item.getShopOrderID());
+                        shopOrderReturned.setReturnedReceiver(item.getReturnedReceiver());
+                        NewShopOrder shopOrder = newShopOrderService.findByShopOrderID(item.getShopOrderID());
+                        if (null != shopOrder) {
+                            shopOrderReturned.setProductAmount(shopOrder.getProductAmount());
+                            shopOrderReturned.setPayStatus(shopOrder.getPayStatus());
+                            shopOrderReturned.setSendOutStatus(shopOrder.getSendOutStatus());
+                            shopOrderReturned.setShopOrderNo(shopOrder.getShopOrderNo());
+                        }
+                    }
+                    shopOrderReturnedList.add(shopOrderReturned);
+                }
+
+                bean.setShopOrderReturnedList(shopOrderReturnedList);
+            }
+        }
+        return dataList;
+    }
+
+    @Override
+    public List<CmReturnedPurchase> findList(CmReturnedPurchase cmReturnedPurchase) {
+        return cmReturnedPurchaseDao.findList(cmReturnedPurchase);
+    }
+}

+ 19 - 0
src/main/java/com/caimei/modules/order/service/impl/NewOrderConfigServiceImpl.java

@@ -0,0 +1,19 @@
+package com.caimei.modules.order.service.impl;
+
+import com.caimei.modules.order.dao.NewOrderConfigDao;
+import com.caimei.modules.order.entity.NewOrderConfig;
+import com.caimei.modules.order.service.NewOrderConfigService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class NewOrderConfigServiceImpl implements NewOrderConfigService {
+    @Autowired
+    private NewOrderConfigDao newOrderConfigDao;
+
+    @Override
+    public NewOrderConfig getValueByKey(String key) {
+        return newOrderConfigDao.getValueByKey(key);
+
+    }
+}

+ 192 - 0
src/main/java/com/caimei/modules/order/service/impl/NewOrderServiceImpl.java

@@ -0,0 +1,192 @@
+package com.caimei.modules.order.service.impl;
+
+import com.caimei.modules.club.entity.Page;
+import com.caimei.modules.order.dao.*;
+import com.caimei.modules.order.entity.*;
+import com.caimei.modules.order.service.NewOrderService;
+import com.caimei.modules.order.service.OrderUserInfoService;
+import com.caimei.utils.AppKeys;
+import com.caimei.utils.AppUtils;
+import com.caimei.utils.NewOrderStatus;
+import com.github.pagehelper.PageHelper;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Service
+public class NewOrderServiceImpl implements NewOrderService {
+    @Autowired
+    private NewOrderDao newOrderDao;
+    @Autowired
+    private CmDiscernReceiptDao cmDiscernReceiptDao;
+    @Autowired
+    private CmReturnedPurchaseDao cmReturnedPurchaseDao;
+    @Autowired
+    private CmReceiptOrderRelationDao cmReceiptOrderRelationDao;
+    @Autowired
+    private NewShopOrderDao newShopOrderDao;
+    @Autowired
+    private OrderUserInfoService orderUserInfoService;
+    @Autowired
+    private NewOrderProductDao newOrderProductDao;
+    @Autowired
+    private CmPayShopRecordDao cmPayShopRecordDao;
+    @Autowired
+    private OrderInvoiceDao orderInvoiceDao;
+    @Value("${malladmin.domain}")
+    private String domain;
+
+    @Override
+    public Page<NewOrder> findList(NewOrder newOrder, Page page) {
+        PageHelper.startPage(page.getIndex(), page.getPageSize());
+        List<NewOrder> orderList = newOrderDao.findList(newOrder);
+        List<Integer> oId = orderList.stream().map(NewOrder::getOrderID).collect(Collectors.toList());
+        //看看这些订单有哪些是返佣订单 返回他们的orderID
+        List<Integer> orderIds = null;
+        if (CollectionUtils.isNotEmpty(oId)) {
+            orderIds = cmDiscernReceiptDao.findRebateOrderID(orderList.stream().map(NewOrder::getOrderID).collect(Collectors.toList()));
+        }
+        //从查询到的订单列表中 找到正在退款中的订单集合
+        List<Integer> orderIdsInReturn = null;
+        List<Integer> orderIdsInApplyReturn = null;//查询可以申请退款的订单ID
+        if (CollectionUtils.isNotEmpty(oId)) {
+            orderIdsInReturn = cmReturnedPurchaseDao.findOrderIDInReturnPurchase(oId);
+            orderIdsInApplyReturn = cmReturnedPurchaseDao.findOrderIDsInApplyReturnFlag(oId);
+        }
+        for (NewOrder order : orderList) {
+            if (orderIds != null && orderIds.contains(order.getOrderID())) {
+                order.setRebateOrder("1");
+            } else {
+                order.setRebateOrder("0");
+                List<Integer> ids = cmReceiptOrderRelationDao.toAudit(order.getOrderID());
+                if (ids != null && ids.size() > 0) {
+                    order.setToAudit("1");
+                }
+            }
+            if (orderIdsInReturn != null && orderIdsInReturn.contains(order.getOrderID())) {
+                order.setReturnedPurchaseStatus("1");
+            } else {
+                order.setReturnedPurchaseStatus("0");
+            }
+            if (orderIdsInApplyReturn != null && orderIdsInApplyReturn.contains(order.getOrderID())) {
+                order.setApplyReturnedPurchaseFlag("0");
+            } else {
+                order.setApplyReturnedPurchaseFlag("1");
+            }
+
+            List<NewShopOrder> shopOrders = order.getNewShopOrders();
+            if (shopOrders != null && shopOrders.size() == 1) {
+                order.setShopName(shopOrders.get(0).getShopName());
+            }
+            int count = 0;
+            for (NewShopOrder shopOrder : order.getNewShopOrders()) {
+                shopOrder.setOrderID(order.getOrderID());
+                shopOrder.setOrderNo(order.getOrderNo());
+                shopOrder.setOrderType(Integer.valueOf(order.getOrderType()));
+                shopOrder.setReceiver(order.getReceiver());
+                shopOrder.setOrderSource(order.getOrderSource());
+                shopOrder.setOrderTime(order.getOrderTime());
+                shopOrder.setBuyer(order.getBuyer());
+                if (shopOrder.getShopID() != 998) {
+                    count++;
+                }
+
+                Integer shopOrderID = shopOrder.getShopOrderID();//子订单ID
+                //通过子订单ID查询子订单信息
+                NewShopOrder newShopOrder = newShopOrderDao.get(shopOrderID);
+                if (null != newShopOrder) {
+                    shopOrder.setFee(newShopOrder.getFee());
+                    shopOrder.setShouldPayProduct(newShopOrder.getShouldPayProduct());
+                } else {
+                    shopOrder.setFee(0d);
+                    shopOrder.setShouldPayProduct(0d);
+                }
+            }
+            //一个子订单只有一个商品时,不可拆分
+            if (order.getProductCount() == null) {
+                order.setProductCount(1);
+            }
+            if (order.getProductCount() <= count) {
+                order.setSplitFlag("0");
+            }
+        }
+        Page<NewOrder> orderPage = new Page<>(orderList);
+        return orderPage;
+    }
+
+    @Override
+    public NewOrder get(String id) {
+        NewOrder newOrder = newOrderDao.get(id);
+        List<Integer> l = new ArrayList<>();
+        l.add(newOrder.getOrderID());
+        List<Integer> orderIds = cmDiscernReceiptDao.findRebateOrderID(l);
+        if (orderIds.contains(newOrder.getOrderID()))
+            newOrder.setRebateOrder("1");
+        else
+            newOrder.setRebateOrder("0");
+        if (null != newOrder) {
+            //获取订单客户
+            OrderUserInfo orderUserInfo = orderUserInfoService.findByOrderID(newOrder.getOrderID());
+            if (null != orderUserInfo) {
+                newOrder.setBpOrderUserinfo(orderUserInfo);
+            }
+            //获取订单商品
+            List<NewOrderProduct> list = new ArrayList<>();
+            List<NewShopOrder> shopOrders = newShopOrderDao.findListByOrderID(newOrder.getOrderID());
+            if (CollectionUtils.isNotEmpty(shopOrders)) {
+                for (NewShopOrder shopOrder : shopOrders) {
+                    List<NewOrderProduct> pList = newOrderProductDao.findListByShopOrderID(shopOrder.getShopOrderID());
+                    list.addAll(pList);
+                    shopOrder.setNewOrderProducts(pList);
+                    if (pList.stream().anyMatch(p -> p.getProductID().intValue() == 999)) shopOrder.setPostFeeCos("1");
+                    pList.stream().forEach(item -> {
+                        if (NewOrderStatus.hasReturn(newOrder.getStatus())) {
+                            Integer returningNum = newOrderProductDao.getReturningNum(item.getOrderProductID());
+                            Integer returnedNum = newOrderProductDao.getReturnedNum(item.getOrderProductID());
+                            item.setReturningNum(returningNum);
+                            item.setReturnedNum(returnedNum);
+                        }
+                        /**确认收货信息*/
+                        if (NewOrderStatus.hasReceived(newOrder.getStatus())) {
+                            Integer receivedNum = newOrderProductDao.getReceivedNum(item.getOrderProductID());
+                            item.setReceivedNum(receivedNum);
+                        }
+                        item.setProductImage(AppUtils.getProductImageURL(item.getProductImage(), AppKeys.ORIGINAL_PICTURE, domain));
+                    });
+                    Double payed = cmPayShopRecordDao.sumByShopOrderID(shopOrder.getShopOrderID());
+                    shopOrder.setPayed(payed);
+                }
+                newOrder.setNewShopOrders(shopOrders);
+            }
+            if (CollectionUtils.isNotEmpty(list)) {
+                newOrder.setOrderProduct(list);
+                double freight = 0D;
+                double totalAddedValueTax = 0D;
+                for (NewOrderProduct op : list) {
+                    if (op.getProductID().intValue() == 999) { //邮费商品
+                        freight += op.getPrice();
+                    }
+                    totalAddedValueTax += op.getTotalAddedValueTax();
+                }
+                if ("1".equals(newOrder.getFreePostFlag())) newOrder.setFreight(freight);
+                newOrder.setTotalAddedValueTax(totalAddedValueTax);
+            }
+            shopOrders.sort((so1, so2) -> {
+                //给子订单排序  邮费排在最后  其余的按shopOrderID  asc
+                if ("1".equals(so1.getPostFeeCos())) return 1;
+                return so1.getShopOrderID() - so2.getShopOrderID();
+            });
+            //获取订单发票
+            OrderInvoice orderInvoice = orderInvoiceDao.getWithorderId(newOrder.getOrderID() + "");
+            if (null != orderInvoice) {
+                newOrder.setOrderInvoice(orderInvoice);
+            }
+        }
+        return newOrder;
+    }
+}

+ 85 - 0
src/main/java/com/caimei/modules/order/service/impl/NewShopOrderServiceImpl.java

@@ -0,0 +1,85 @@
+package com.caimei.modules.order.service.impl;
+
+import com.alibaba.fastjson.JSONArray;
+import com.caimei.modules.club.entity.CmProductSn;
+import com.caimei.modules.order.dao.*;
+import com.caimei.modules.order.entity.*;
+import com.caimei.modules.order.service.NewShopOrderService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Service
+public class NewShopOrderServiceImpl implements NewShopOrderService {
+    @Autowired
+    private NewShopOrderDao newShopOrderDao;
+    @Autowired
+    private NewOrderProductDao newOrderProductDao;
+    @Autowired
+    private ProductDao productDao;
+    @Autowired
+    private CmProductSnDao cmProductSnDao;
+    @Autowired
+    private LogisticsBatchDao logisticsBatchDao;
+    @Autowired
+    private LogisticsRecordDao logisticsRecordDao;
+    @Autowired
+    private LogisticsInformationDao logisticsInformationDao;
+
+    @Override
+    public NewShopOrder findByShopOrderID(Integer shopOrderID) {
+        NewShopOrder shopOrder = newShopOrderDao.findByShopOrderID(shopOrderID);
+        List<NewOrderProduct> list = newOrderProductDao.findListByShopOrderID(shopOrder.getShopOrderID());
+        List<NewOrderProduct> listSnProduct = new ArrayList<NewOrderProduct>();
+        List<NewOrderProduct> listAll = new ArrayList<NewOrderProduct>();
+        List<CmProductSn> listSn = new ArrayList<CmProductSn>();
+
+        //通过产品ID查找一级分类,如果在(重光电或者轻光电下则是SN产品)
+        if (null != list && list.size() > 0) {
+            for (NewOrderProduct bean : list) {
+                Integer productID = bean.getProductID();
+                String bigTypeName = productDao.findProductBigTypeByProductID(productID);
+                if (bigTypeName.equals(ProductType.Q1.getTypeName()) || bigTypeName.equals(ProductType.Q2.getTypeName())) {
+                    listSn = cmProductSnDao.getListSignByOrderProduct(bean.getOrderProductID(), bean.getShopOrderID());
+                    int num = bean.getNum() + bean.getPresentNum() - (listSn != null ? listSn.size() : 0);
+                    for (int i = 0; i < num; i++) {
+                        listSn.add(i, new CmProductSn());
+                    }
+                    bean.setCmProductSnList(listSn);
+                    listSnProduct.add(bean);
+                } else {
+                    bean.setCmProductSnList(null);
+                }
+                listAll.add(bean);
+            }
+        }
+        shopOrder.setSnOrderProducts(listSnProduct);
+        shopOrder.setNewOrderProducts(listAll);
+        return shopOrder;
+    }
+
+    @Override
+    public List<LogisticsInfoVo> logisticsDetails(Integer orderID, String logisticsBatchID) {
+        List<LogisticsInfoVo> result = new ArrayList<>();
+        //查询这个子订单所有的发货批次记录
+        List<LogisticsBatch> lbs = logisticsBatchDao.findBatch(orderID, logisticsBatchID);
+        for (LogisticsBatch l : lbs) {
+            LogisticsInfoVo liv = new LogisticsInfoVo();
+            // 每一批的发货商品记录
+            List<LogisticsRecord> lrs = logisticsRecordDao.findByLogisticsBatchID(l.getId());
+            // 每一批的发货物流记录
+            List<LogisticsInformation> lis = logisticsInformationDao.findByLogisticsBatchID(l.getId());
+            for (LogisticsInformation information : lis) {
+                List<LogisticsDetailVo> routers = JSONArray.parseArray(information.getInfo(), LogisticsDetailVo.class);
+                information.setLogisticsDetailVos(routers);
+            }
+            liv.setLogisticsBatch(l);
+            liv.setLogisticsInformationList(lis);
+            liv.setLogisticsRecordList(lrs);
+            result.add(liv);
+        }
+        return result;
+    }
+}

+ 18 - 0
src/main/java/com/caimei/modules/order/service/impl/OrderUserInfoServiceImpl.java

@@ -0,0 +1,18 @@
+package com.caimei.modules.order.service.impl;
+
+import com.caimei.modules.order.dao.OrderUserInfoDao;
+import com.caimei.modules.order.entity.OrderUserInfo;
+import com.caimei.modules.order.service.OrderUserInfoService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class OrderUserInfoServiceImpl implements OrderUserInfoService {
+    @Autowired
+    private OrderUserInfoDao orderUserInfoDao;
+
+    @Override
+    public OrderUserInfo findByOrderID(Integer orderID) {
+        return orderUserInfoDao.findByOrderID(orderID);
+    }
+}

+ 235 - 0
src/main/java/com/caimei/modules/products/controller/CmMallOrganizeProductsController.java

@@ -0,0 +1,235 @@
+package com.caimei.modules.products.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.caimei.modules.club.entity.Page;
+import com.caimei.modules.products.entity.CmMallOrganizeProducts;
+import com.caimei.modules.products.entity.CmMallPageModules;
+import com.caimei.modules.products.entity.CmMallProductsClassify;
+import com.caimei.modules.products.service.CmMallOrganizeProductsService;
+import com.caimei.modules.products.service.CmMallProductsClassifyService;
+import com.caimei.modules.shiro.entity.CmMallAdminUser;
+import com.caimei.modules.shiro.service.ShiroService;
+import com.caimei.utils.JsonModel;
+import com.caimei.utils.TokenEncryptUtils;
+import com.github.pagehelper.PageHelper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.thymeleaf.util.StringUtils;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 小程序商城商品Controller
+ *
+ * @author lijun
+ * @version 2019-12-04
+ */
+@Controller
+@RequestMapping(value = "/product/cmMallOrganizeProducts")
+public class CmMallOrganizeProductsController {
+
+    @Autowired
+    private CmMallOrganizeProductsService cmMallOrganizeProductsService;
+    @Autowired
+    private CmMallProductsClassifyService cmMallProductsClassifyService;
+    @Autowired
+    private ShiroService shiroService;
+    /**
+     * 去商品列表页面
+     *
+     * @return
+     */
+    @ResponseBody
+    @RequestMapping(value = "toProductList")
+    public JsonModel toProductList(CmMallOrganizeProducts cmMallOrganizeProducts, Page page) {
+        Map<String, Object> map = new HashMap();
+        Page<CmMallOrganizeProducts> organizeProductsPage = cmMallOrganizeProductsService.findPage(page, cmMallOrganizeProducts);
+        //商品分类下拉数据
+        List<CmMallProductsClassify> listByEffective = cmMallProductsClassifyService.findListByEffective(cmMallOrganizeProducts.getOrganizeID());
+        map.put("organizeProductsPage", organizeProductsPage);
+        map.put("listByEffective", listByEffective);
+        return JsonModel.newInstance().success(map);
+    }
+
+    /**
+     * 商品模块列表
+     */
+    @ResponseBody
+    @RequestMapping("/module")
+    public JsonModel findAllModule(Integer organizeID) {
+        List<CmMallPageModules> mallPageModulesList = cmMallOrganizeProductsService.findAllModule(organizeID);
+        return JsonModel.newInstance().success(mallPageModulesList);
+    }
+
+    /**
+     * 编辑回显
+     */
+    @ResponseBody
+    @RequestMapping(value = "toEditProductInfo")
+    public JsonModel toEditProductInfo(Integer id) {
+        //获取商品分类列表
+        Map<String, Object> map = new HashMap();
+        CmMallOrganizeProducts organizeProducts = cmMallOrganizeProductsService.get(id);
+        List<CmMallProductsClassify> listByEffective = cmMallProductsClassifyService.findListByEffective(organizeProducts.getOrganizeID());
+        map.put("organizeProducts", organizeProducts);
+        map.put("listByEffective", listByEffective);
+        return JsonModel.newInstance().success(map);
+    }
+
+    /**
+     * 编辑保存
+     *
+     * @param cmMallOrganizeProducts
+     * @return
+     */
+    @ResponseBody
+    @RequestMapping(value = "saveEditProductInfo", method = RequestMethod.POST)
+    public JsonModel saveEditProductInfo(@RequestBody CmMallOrganizeProducts cmMallOrganizeProducts, HttpServletRequest httpRequest) {
+        JsonModel jsonModel = JsonModel.newInstance();
+        try {
+            String token = httpRequest.getHeader("token");
+            String decoded = TokenEncryptUtils.decoded(token);
+            String[] tokens = decoded.split("#,#");
+            CmMallAdminUser user = shiroService.findByUserId(Integer.valueOf(tokens[1]));
+            Long userId = user.getId().longValue();
+            cmMallOrganizeProducts.setUpdateTime(new Date());
+            cmMallOrganizeProductsService.updateProductInfo(cmMallOrganizeProducts, userId);
+            return jsonModel.success("修改成功", "");
+        } catch (Exception e) {
+            return jsonModel.error("修改失败");
+        }
+    }
+
+    /**
+     * 上下架商品
+     *
+     * @param id 商品id
+     * @return
+     */
+    @ResponseBody
+    @RequestMapping(value = "switchLine")
+    public JsonModel switchLine(Integer id) {
+        CmMallOrganizeProducts organizeProducts = cmMallOrganizeProductsService.get(id);
+        if (organizeProducts.getValidFlag().equals("1")) {
+            //下线商品
+            organizeProducts.setPreferredProduct("0");
+            organizeProducts.setCommonlyProduct("0");
+            organizeProducts.setPreferentialProduct("0");
+            organizeProducts.setValidFlag("2");
+        } else {
+            //上线商品
+            organizeProducts.setValidFlag("1");
+        }
+        cmMallOrganizeProductsService.updateValidFlag(organizeProducts);
+        return JsonModel.newInstance().success();
+    }
+
+    /**
+     * 批量更新排序值
+     *
+     * @param newProducSorttList (商品id-排序值,...)
+     * @return
+     */
+    @RequestMapping(value = "batchSaveSort")
+    @ResponseBody
+    public JsonModel batchSaveSort(String newProducSorttList, Integer modules) {
+        JsonModel jsonModel = JsonModel.newInstance();
+        try {
+            String[] newPageLists = newProducSorttList.split(",");
+            for (String list : newPageLists) {
+                String[] split = list.split("-");
+                if (split.length == 1 || split.length < 1) {
+                    String id = split[0];
+                    String sort = null;
+                    cmMallOrganizeProductsService.saveSort(modules, sort, id);
+                } else {
+                    String id = split[0];
+                    String sort = split[1];
+                    if (CmMallProductsClassifyController.isInteger(sort)) {
+                        if (StringUtils.equals("0", sort)) {
+                            return jsonModel.error("排序值只能填写大于等于1的整数");
+                        }
+                        cmMallOrganizeProductsService.saveSort(modules, sort, id);
+                    } else {
+                        return jsonModel.error("排序值只能为数字");
+                    }
+                }
+            }
+            return jsonModel.success("更新排序成功", "");
+        } catch (Exception e) {
+            return jsonModel.error("更新排序失败");
+        }
+    }
+
+    /**
+     * 添加商品数据
+     *
+     * @param cmMallOrganizeProducts
+     * @param page                   分页数据
+     * @return
+     */
+    @ResponseBody
+    @RequestMapping(value = "toAddProduct1")
+    public JsonModel toAddProduct1(CmMallOrganizeProducts cmMallOrganizeProducts, Page page) {
+        //获取采美所有商品
+        Map<String, Object> map = new HashMap();
+        PageHelper.startPage(page.getIndex(), page.getPageSize());
+        List<CmMallOrganizeProducts> listBuyMall = cmMallOrganizeProductsService.findListBuyMall(cmMallOrganizeProducts);
+        Page<CmMallOrganizeProducts> productsPage = new Page<>(listBuyMall);
+        //获取商品分类列表
+        List<CmMallProductsClassify> listByEffective = cmMallProductsClassifyService.findListByEffective(cmMallOrganizeProducts.getOrganizeID());
+        map.put("productsPage", productsPage);
+        map.put("listByEffective", listByEffective);
+        return JsonModel.newInstance().success(map);
+    }
+
+    /**
+     * 添加商品
+     *
+     * @param cmMallOrganizeProducts
+     * @return
+     */
+    @ResponseBody
+    @RequestMapping(value = "saveAddProductInfo", method = RequestMethod.POST)
+    public JsonModel saveAddProductInfo(@RequestBody CmMallOrganizeProducts cmMallOrganizeProducts) {
+        JsonModel jsonModel = JsonModel.newInstance();
+        try {
+            JSONArray parse = (JSONArray) JSON.parse(cmMallOrganizeProducts.getItemsList());
+            if (null != parse && parse.size() > 0) {
+                for (int j = 0; j < parse.size(); j++) {
+                    Integer productID = (Integer) parse.get(j);//获取商品ID
+                    CmMallOrganizeProducts cop = new CmMallOrganizeProducts();
+                    cop.setId(productID);
+                    cop.setModules(cmMallOrganizeProducts.getModules());
+                    cmMallOrganizeProductsService.updateProductInfo1(cop);
+                }
+            }
+            return jsonModel.success("添加成功", "");
+        } catch (Exception e) {
+            return jsonModel.error("添加失败");
+        }
+    }
+
+    /**
+     * //取消模块内商品
+     *
+     * @param cmMallOrganizeProducts
+     * @return
+     */
+    @ResponseBody
+    @RequestMapping(value = "canncelProduct", method = RequestMethod.POST)
+    public JsonModel canncelProduct(@RequestBody CmMallOrganizeProducts cmMallOrganizeProducts) {
+        cmMallOrganizeProducts.setUpdateTime(new Date());
+        cmMallOrganizeProductsService.canncelPreferredProduct(cmMallOrganizeProducts);
+        return JsonModel.newInstance().success();
+    }
+}

+ 170 - 0
src/main/java/com/caimei/modules/products/controller/CmMallProductsClassifyController.java

@@ -0,0 +1,170 @@
+package com.caimei.modules.products.controller;
+
+import com.caimei.modules.club.entity.Page;
+import com.caimei.modules.products.entity.CmMallOrganizeProducts;
+import com.caimei.modules.products.entity.CmMallProductsClassify;
+import com.caimei.modules.products.service.CmMallOrganizeProductsService;
+import com.caimei.modules.products.service.CmMallProductsClassifyService;
+import com.caimei.utils.JsonModel;
+import com.github.pagehelper.PageHelper;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.util.Date;
+import java.util.List;
+import java.util.regex.Pattern;
+
+/**
+ * 小程序商品分类Controller
+ *
+ * @author lijun
+ * @version 2019-12-03
+ */
+@Controller
+@RequestMapping(value = "/product/cmMallProductsClassify")
+public class CmMallProductsClassifyController {
+
+    @Autowired
+    private CmMallProductsClassifyService cmMallProductsClassifyService;
+    @Autowired
+    private CmMallOrganizeProductsService cmMallOrganizeProductsService;
+
+    /**
+     * 商品分类列表
+     */
+    @ResponseBody
+    @RequestMapping(value = {"list"})
+    public JsonModel list(CmMallProductsClassify cmMallProductsClassify, Page page) {
+        PageHelper.startPage(page.getIndex(), page.getPageSize());
+        List<CmMallProductsClassify> productsClassifyList = cmMallProductsClassifyService.findList(cmMallProductsClassify);
+        Page<CmMallProductsClassify> classifyPage = new Page<>(productsClassifyList);
+        return JsonModel.newInstance().success(classifyPage);
+    }
+
+    /**
+     * 编辑回显
+     *
+     * @param id
+     * @return
+     */
+    @ResponseBody
+    @RequestMapping(value = "form")
+    public JsonModel form(Integer id) {
+        CmMallProductsClassify mallProductsClassify = cmMallProductsClassifyService.get(id);
+        return JsonModel.newInstance().success(mallProductsClassify);
+    }
+
+    /**
+     * 编辑,保存
+     *
+     * @param cmMallProductsClassify
+     * @return
+     */
+    @ResponseBody
+    @RequestMapping(value = "save", method = RequestMethod.POST)
+    public JsonModel save(@RequestBody CmMallProductsClassify cmMallProductsClassify) {
+        JsonModel jsonModel = JsonModel.newInstance();
+        //保存商品名字不能重复
+        List<CmMallProductsClassify> productsClassifyListByName = cmMallProductsClassifyService.getProductsClassifyListByName(cmMallProductsClassify);
+        if (CollectionUtils.isNotEmpty(productsClassifyListByName) && productsClassifyListByName.size() > 0) {
+            return jsonModel.error("分类名称不能重复");
+        }
+        //判断该商品是是否选择的是停用,如果停用判断该分类下是否存在商品
+        if (StringUtils.equals("2", cmMallProductsClassify.getStatus())) {
+            CmMallOrganizeProducts cmMallOrganizeProducts = new CmMallOrganizeProducts();
+            cmMallOrganizeProducts.setOrganizeID(cmMallProductsClassify.getOrganizeID());
+            cmMallOrganizeProducts.setClassifyID(String.valueOf(cmMallProductsClassify.getId()));
+            List<CmMallOrganizeProducts> list1 = cmMallOrganizeProductsService.findList(cmMallOrganizeProducts);
+            if (CollectionUtils.isNotEmpty(list1)) {
+                return jsonModel.error("该分类中还存在商品,请把该分类的商品转移到别的分类后,再停用该分类");
+            }
+        }
+
+        Date date = new Date();
+        if (cmMallProductsClassify.getId() == null) {//是新增
+            cmMallProductsClassify.setAddTime(date);
+            cmMallProductsClassify.setDelFlag("0");
+        }
+        cmMallProductsClassify.setUpdateTime(date);
+        cmMallProductsClassifyService.save(cmMallProductsClassify);
+        return jsonModel.success();
+    }
+
+    /**
+     * 启用,关闭
+     *
+     * @param id 分类id
+     * @return
+     */
+    @ResponseBody
+    @RequestMapping(value = "switchClassify")
+    public JsonModel switchClassify(Integer id) {
+        JsonModel jsonModel = JsonModel.newInstance();
+        CmMallProductsClassify mallProductsClassify = cmMallProductsClassifyService.get(id);
+        CmMallOrganizeProducts cmMallOrganizeProducts = new CmMallOrganizeProducts();
+        cmMallOrganizeProducts.setOrganizeID(mallProductsClassify.getOrganizeID());
+        cmMallOrganizeProducts.setClassifyID(String.valueOf(id));
+        List<CmMallOrganizeProducts> list = cmMallOrganizeProductsService.findList(cmMallOrganizeProducts);
+        if (CollectionUtils.isNotEmpty(list)) {
+            return jsonModel.error("该分类中还存在商品,请把该分类的商品转移到别的分类后,再停用该分类");
+        }
+        if (mallProductsClassify.getStatus().equals("1")) {
+            mallProductsClassify.setStatus("2");//1启用,2停用
+        } else {
+            mallProductsClassify.setStatus("1");//1启用,2停用
+        }
+        mallProductsClassify.setUpdateTime(new Date());
+        cmMallProductsClassifyService.updateStatus(mallProductsClassify);//更新会所表数据
+        return jsonModel.success();
+    }
+
+    /**
+     * 批量更新排序值
+     *
+     * @param newProducSorttList (分类id-排序值,...)
+     * @return
+     */
+    @ResponseBody
+    @RequestMapping(value = "batchSaveSort")
+    public JsonModel batchSaveSort(String newProducSorttList) {
+        JsonModel jsonModel = JsonModel.newInstance();
+        try {
+            String[] newPageLists = newProducSorttList.split(",");
+            for (String list : newPageLists) {
+                String[] split = list.split("-");
+                if (split.length == 1 || split.length < 1) {
+                    return jsonModel.error("排序值不能为空!");
+                }
+                String s = split[1];//判断是否是数字,或者为空
+                if (StringUtils.isNotEmpty(s)) {
+                    if (isInteger(s)) {
+                        if (StringUtils.equals("0", s)) {
+                            return jsonModel.error("排序值只能填写大于等于1的整数");
+                        }
+                        String id = split[0];
+                        String sort = split[1];
+                        cmMallProductsClassifyService.saveSort(sort, id);
+                    } else {
+                        return jsonModel.error("排序值只能为数字");
+                    }
+                } else {
+                    return jsonModel.error("排序值不能为空!");
+                }
+            }
+            return jsonModel.success("更新排序成功", "");
+        } catch (Exception e) {
+            return jsonModel.error("更新排序失败");
+        }
+    }
+
+    public static boolean isInteger(String str) {
+        Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$");
+        return pattern.matcher(str).matches();
+    }
+}

+ 31 - 0
src/main/java/com/caimei/modules/products/dao/CmMallOrganizeProductsDao.java

@@ -0,0 +1,31 @@
+package com.caimei.modules.products.dao;
+
+import com.caimei.modules.products.entity.CmMallOrganizeProducts;
+import com.caimei.modules.products.entity.CmMallPageModules;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface CmMallOrganizeProductsDao {
+    List<CmMallOrganizeProducts> findList(CmMallOrganizeProducts cmMallOrganizeProducts);
+
+    List<CmMallPageModules> findAllModule(Integer organizeID);
+
+    void updateProductInfo(CmMallOrganizeProducts cmMallOrganizeProducts);
+
+    CmMallOrganizeProducts get(Integer id);
+
+    void updateValidFlag(CmMallOrganizeProducts organizeProducts);
+
+    void saveSort(@Param("modules") Integer modules, @Param("sort") String sort, @Param("id") String id);
+
+    List<CmMallOrganizeProducts> findListBuyMall(CmMallOrganizeProducts cmMallOrganizeProducts);
+
+    List<Integer> getAllExistsProductList(Integer modules);
+
+    void updateProductInfo1(CmMallOrganizeProducts cop);
+
+    void canncelPreferredProduct(CmMallOrganizeProducts cmMallOrganizeProducts);
+}

+ 27 - 0
src/main/java/com/caimei/modules/products/dao/CmMallProductLadderPriceDao.java

@@ -0,0 +1,27 @@
+package com.caimei.modules.products.dao;
+
+import com.caimei.modules.products.entity.CmMallProductLadderPrice;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface CmMallProductLadderPriceDao {
+    int deleteByPrimaryKey(Long id);
+
+    int insert(CmMallProductLadderPrice record);
+
+    int insertSelective(CmMallProductLadderPrice record);
+
+    CmMallProductLadderPrice selectByPrimaryKey(Long id);
+
+    int updateByPrimaryKeySelective(CmMallProductLadderPrice record);
+
+    int updateByPrimaryKey(CmMallProductLadderPrice record);
+
+    List<CmMallProductLadderPrice> selectByProductId(Long productId);
+
+    Long selectIdByProductIdAndLadderNum(@Param("productId") Long productId, @Param("ladderNum") Long ladderNum);
+
+}

+ 27 - 0
src/main/java/com/caimei/modules/products/dao/CmMallProductsClassifyDao.java

@@ -0,0 +1,27 @@
+package com.caimei.modules.products.dao;
+
+import com.caimei.modules.products.entity.CmMallProductsClassify;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface CmMallProductsClassifyDao {
+
+    List<CmMallProductsClassify> findList(CmMallProductsClassify cmMallProductsClassify);
+
+    CmMallProductsClassify get(Integer id);
+
+    List<CmMallProductsClassify> getProductsClassifyListByName(CmMallProductsClassify cmMallProductsClassify);
+
+    void insert(CmMallProductsClassify cmMallProductsClassify);
+
+    void update(CmMallProductsClassify cmMallProductsClassify);
+
+    void updateStatus(CmMallProductsClassify mallProductsClassify);
+
+    void saveSort(@Param("sort") String sort, @Param("id") String id);
+
+    List<CmMallProductsClassify> findListByEffective(String organizeID);
+}

+ 263 - 0
src/main/java/com/caimei/modules/products/entity/CmMallOrganizeProducts.java

@@ -0,0 +1,263 @@
+package com.caimei.modules.products.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 小程序商城商品Entity
+ *
+ * @author lijun
+ * @version 2019-12-04
+ */
+public class CmMallOrganizeProducts implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+    private Integer id;
+    private String classifyID;        // 对应cm_mall_products_classify商品分类表id
+    private String organizeID;        // 组织ID,具体对应cm_mall_organize表ID
+    private String productID;        // 商品ID,具体对应product表
+    private String normalPrice;        // 市场价
+    private String costPrice;        // 成本价
+    /**
+     * '启用阶梯价格标识 0否 1是',
+     */
+    private String ladderPriceFlag;
+    private String retailPrice;        // 售价
+    private String minBuyNumber;        // 最小起订量
+    private String preferredProduct;        // 是否是优选商品:0不是优选,1优选商品
+    private String commonlyProduct;        // 是否是常用商品:0不是常用,1常用商品
+    private String preferentialProduct;        // 是否是星范精品:0不是特惠,1星范精品商品
+    private String validFlag;        // 商品状态,1已上架,2已下架
+    private String preferredProductSort;        //(优选排序)排序默认为空,排序优先级1最高,空最后
+    private String commonlyProductSort;        //(常用排序)排序默认为空,排序优先级1最高,空最后
+    private String preferentialProductSort;        //(精品排序)排序默认为空,排序优先级1最高,空最后
+    private Date addTime;        // 添加时间
+    private Date updateTime;        // 更新时间
+    private Integer modules;     //第几个模块
+    /**
+     * 阶梯价格
+     */
+    private List<CmMallProductLadderPrice> ladderPriceList;
+
+    public List<CmMallProductLadderPrice> getLadderPriceList() {
+        return ladderPriceList;
+    }
+
+    public void setLadderPriceList(List<CmMallProductLadderPrice> ladderPriceList) {
+        this.ladderPriceList = ladderPriceList;
+    }
+
+    //非小程序商城商品信息
+    private String mainImage;//商品图片
+    private String productName;//商品名称
+    private String shopName;//供应商名称
+    private String productClassifyName;//商品分类名字
+
+    private String itemsList;//添加商品字符串
+    private String existsFlag;//是否已存在小程序商品中 1已存在,其他都为不存在
+
+    public static long getSerialVersionUID() {
+        return serialVersionUID;
+    }
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getClassifyID() {
+        return classifyID;
+    }
+
+    public void setClassifyID(String classifyID) {
+        this.classifyID = classifyID;
+    }
+
+    public String getOrganizeID() {
+        return organizeID;
+    }
+
+    public void setOrganizeID(String organizeID) {
+        this.organizeID = organizeID;
+    }
+
+    public String getProductID() {
+        return productID;
+    }
+
+    public void setProductID(String productID) {
+        this.productID = productID;
+    }
+
+    public String getNormalPrice() {
+        return normalPrice;
+    }
+
+    public void setNormalPrice(String normalPrice) {
+        this.normalPrice = normalPrice;
+    }
+
+    public String getCostPrice() {
+        return costPrice;
+    }
+
+    public void setCostPrice(String costPrice) {
+        this.costPrice = costPrice;
+    }
+
+    public String getLadderPriceFlag() {
+        return ladderPriceFlag;
+    }
+
+    public void setLadderPriceFlag(String ladderPriceFlag) {
+        this.ladderPriceFlag = ladderPriceFlag;
+    }
+
+    public String getRetailPrice() {
+        return retailPrice;
+    }
+
+    public void setRetailPrice(String retailPrice) {
+        this.retailPrice = retailPrice;
+    }
+
+    public String getMinBuyNumber() {
+        return minBuyNumber;
+    }
+
+    public void setMinBuyNumber(String minBuyNumber) {
+        this.minBuyNumber = minBuyNumber;
+    }
+
+    public String getPreferredProduct() {
+        return preferredProduct;
+    }
+
+    public void setPreferredProduct(String preferredProduct) {
+        this.preferredProduct = preferredProduct;
+    }
+
+    public String getCommonlyProduct() {
+        return commonlyProduct;
+    }
+
+    public void setCommonlyProduct(String commonlyProduct) {
+        this.commonlyProduct = commonlyProduct;
+    }
+
+    public String getPreferentialProduct() {
+        return preferentialProduct;
+    }
+
+    public void setPreferentialProduct(String preferentialProduct) {
+        this.preferentialProduct = preferentialProduct;
+    }
+
+    public String getValidFlag() {
+        return validFlag;
+    }
+
+    public void setValidFlag(String validFlag) {
+        this.validFlag = validFlag;
+    }
+
+    public String getPreferredProductSort() {
+        return preferredProductSort;
+    }
+
+    public void setPreferredProductSort(String preferredProductSort) {
+        this.preferredProductSort = preferredProductSort;
+    }
+
+    public String getCommonlyProductSort() {
+        return commonlyProductSort;
+    }
+
+    public void setCommonlyProductSort(String commonlyProductSort) {
+        this.commonlyProductSort = commonlyProductSort;
+    }
+
+    public String getPreferentialProductSort() {
+        return preferentialProductSort;
+    }
+
+    public void setPreferentialProductSort(String preferentialProductSort) {
+        this.preferentialProductSort = preferentialProductSort;
+    }
+
+    public Date getAddTime() {
+        return addTime;
+    }
+
+    public void setAddTime(Date addTime) {
+        this.addTime = addTime;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public Integer getModules() {
+        return modules;
+    }
+
+    public void setModules(Integer modules) {
+        this.modules = modules;
+    }
+
+    public String getMainImage() {
+        return mainImage;
+    }
+
+    public void setMainImage(String mainImage) {
+        this.mainImage = mainImage;
+    }
+
+    public String getProductName() {
+        return productName;
+    }
+
+    public void setProductName(String productName) {
+        this.productName = productName;
+    }
+
+    public String getShopName() {
+        return shopName;
+    }
+
+    public void setShopName(String shopName) {
+        this.shopName = shopName;
+    }
+
+    public String getProductClassifyName() {
+        return productClassifyName;
+    }
+
+    public void setProductClassifyName(String productClassifyName) {
+        this.productClassifyName = productClassifyName;
+    }
+
+    public String getItemsList() {
+        return itemsList;
+    }
+
+    public void setItemsList(String itemsList) {
+        this.itemsList = itemsList;
+    }
+
+    public String getExistsFlag() {
+        return existsFlag;
+    }
+
+    public void setExistsFlag(String existsFlag) {
+        this.existsFlag = existsFlag;
+    }
+}

+ 97 - 0
src/main/java/com/caimei/modules/products/entity/CmMallPageModules.java

@@ -0,0 +1,97 @@
+package com.caimei.modules.products.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class CmMallPageModules implements Serializable {
+    private Integer id;
+    private Integer organizeID;//组织ID
+    private String organizeName;//组织名称
+    private String firstModulesName;//模块一名称
+    private String secondModulesName;//模块二名称
+    private String thirdModulesName;//模块三名称
+    private String firstModulesImage;//模块一图片
+    private String secondModulesImage;//模块二图片
+    private Date addTime;//添加时间
+    private Date updateTime;//修改时间
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getOrganizeID() {
+        return organizeID;
+    }
+
+    public void setOrganizeID(Integer organizeID) {
+        this.organizeID = organizeID;
+    }
+
+    public String getOrganizeName() {
+        return organizeName;
+    }
+
+    public void setOrganizeName(String organizeName) {
+        this.organizeName = organizeName;
+    }
+
+    public String getFirstModulesName() {
+        return firstModulesName;
+    }
+
+    public void setFirstModulesName(String firstModulesName) {
+        this.firstModulesName = firstModulesName;
+    }
+
+    public String getSecondModulesName() {
+        return secondModulesName;
+    }
+
+    public void setSecondModulesName(String secondModulesName) {
+        this.secondModulesName = secondModulesName;
+    }
+
+    public String getThirdModulesName() {
+        return thirdModulesName;
+    }
+
+    public void setThirdModulesName(String thirdModulesName) {
+        this.thirdModulesName = thirdModulesName;
+    }
+
+    public String getFirstModulesImage() {
+        return firstModulesImage;
+    }
+
+    public void setFirstModulesImage(String firstModulesImage) {
+        this.firstModulesImage = firstModulesImage;
+    }
+
+    public String getSecondModulesImage() {
+        return secondModulesImage;
+    }
+
+    public void setSecondModulesImage(String secondModulesImage) {
+        this.secondModulesImage = secondModulesImage;
+    }
+
+    public Date getAddTime() {
+        return addTime;
+    }
+
+    public void setAddTime(Date addTime) {
+        this.addTime = addTime;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+}

+ 62 - 0
src/main/java/com/caimei/modules/products/entity/CmMallProductLadderPrice.java

@@ -0,0 +1,62 @@
+package com.caimei.modules.products.entity;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+import lombok.Data;
+
+/**
+ * cm_mall_product_ladder_price
+ * @author 
+ */
+@Data
+public class CmMallProductLadderPrice implements Serializable {
+    private Long id;
+
+    /**
+     * 商品id,具体对应cm_mall_organize_products表的ID
+     */
+    private Long productId;
+
+    /**
+     * 第几阶梯(最多可设置3阶梯)
+     */
+    private Long ladderNum;
+
+    /**
+     * 购买数量(起订量)
+     */
+    private Long buyNum;
+
+    /**
+     * 购买价格(对应起订量单价)
+     */
+    private BigDecimal buyPrice;
+
+    /**
+     * 创建人(cm_mall_admin_user表ID)
+     */
+    private Long createBy;
+
+    /**
+     * 创建时间
+     */
+    private Date createDate;
+
+    /**
+     * 最后更新人(cm_mall_admin_user表ID)
+     */
+    private Long updateBy;
+
+    /**
+     * 最后更新时间
+     */
+    private Date updateDate;
+
+    /**
+     * 删除标记  0 否,其余是
+     */
+    private String delFlag;
+
+    private static final long serialVersionUID = 1L;
+}

+ 123 - 0
src/main/java/com/caimei/modules/products/entity/CmMallProductsClassify.java

@@ -0,0 +1,123 @@
+package com.caimei.modules.products.entity;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.hibernate.validator.constraints.Length;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 小程序商品分类Entity
+ *
+ * @author lijun
+ * @version 2019-12-03
+ */
+public class CmMallProductsClassify implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+    private Integer id;
+    private String organizeID;        // 分类归属组织ID,具体对应cm_mall_organize表ID
+    private String classifyName;        // 分类名称
+    private String classifyImage;        // 分类图标
+    private String sort;        // 排序
+    private String status;        // 状态:1启用,2停用
+    private Date addTime;        // 添加时间
+    private Date updateTime;        // 更新时间
+    private String containsProduct;//是否包含商品,1包含商品,其它为不包含商品
+    private String postageToPay;  //邮费是否到付:1是,2否[是为到付,否为不到付并非包邮具体是否包邮参考邮费规则]
+    private String delFlag;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    @Length(min = 0, max = 11, message = "分类归属组织ID,具体对应cm_mall_organize表ID长度必须介于 0 和 11 之间")
+    public String getOrganizeID() {
+        return organizeID;
+    }
+
+    public void setOrganizeID(String organizeID) {
+        this.organizeID = organizeID;
+    }
+
+    @Length(min = 0, max = 20, message = "分类名称长度必须介于 0 和 20 之间")
+    public String getClassifyName() {
+        return classifyName;
+    }
+
+    public void setClassifyName(String classifyName) {
+        this.classifyName = classifyName;
+    }
+
+    public String getClassifyImage() {
+        return classifyImage;
+    }
+
+    public void setClassifyImage(String classifyImage) {
+        this.classifyImage = classifyImage;
+    }
+
+    @Length(min = 0, max = 11, message = "排序长度必须介于 0 和 11 之间")
+    public String getSort() {
+        return sort;
+    }
+
+    public void setSort(String sort) {
+        this.sort = sort;
+    }
+
+    @Length(min = 0, max = 1, message = "状态:1启用,2停用长度必须介于 0 和 1 之间")
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    public Date getAddTime() {
+        return addTime;
+    }
+
+    public void setAddTime(Date addTime) {
+        this.addTime = addTime;
+    }
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getContainsProduct() {
+        return containsProduct;
+    }
+
+    public void setContainsProduct(String containsProduct) {
+        this.containsProduct = containsProduct;
+    }
+
+    public String getDelFlag() {
+        return delFlag;
+    }
+
+    public void setDelFlag(String delFlag) {
+        this.delFlag = delFlag;
+    }
+
+    public String getPostageToPay() {
+        return postageToPay;
+    }
+
+    public void setPostageToPay(String postageToPay) {
+        this.postageToPay = postageToPay;
+    }
+}

+ 30 - 0
src/main/java/com/caimei/modules/products/service/CmMallOrganizeProductsService.java

@@ -0,0 +1,30 @@
+package com.caimei.modules.products.service;
+
+import com.caimei.modules.club.entity.Page;
+import com.caimei.modules.products.entity.CmMallOrganizeProducts;
+import com.caimei.modules.products.entity.CmMallPageModules;
+
+import java.util.List;
+
+public interface CmMallOrganizeProductsService {
+
+    List<CmMallOrganizeProducts> findList(CmMallOrganizeProducts cmMallOrganizeProducts);
+
+    Page<CmMallOrganizeProducts> findPage(Page page, CmMallOrganizeProducts cmMallOrganizeProducts);
+
+    List<CmMallPageModules> findAllModule(Integer organizeID);
+
+    void updateProductInfo(CmMallOrganizeProducts cmMallOrganizeProducts, Long userId);
+
+    CmMallOrganizeProducts get(Integer id);
+
+    void updateValidFlag(CmMallOrganizeProducts organizeProducts);
+
+    void saveSort(Integer modules, String sort, String id);
+
+    List<CmMallOrganizeProducts> findListBuyMall(CmMallOrganizeProducts cmMallOrganizeProducts);
+
+    void updateProductInfo1(CmMallOrganizeProducts cop);
+
+    void canncelPreferredProduct(CmMallOrganizeProducts cmMallOrganizeProducts);
+}

+ 21 - 0
src/main/java/com/caimei/modules/products/service/CmMallProductsClassifyService.java

@@ -0,0 +1,21 @@
+package com.caimei.modules.products.service;
+
+import com.caimei.modules.products.entity.CmMallProductsClassify;
+
+import java.util.List;
+
+public interface CmMallProductsClassifyService {
+    List<CmMallProductsClassify> findList(CmMallProductsClassify cmMallProductsClassify);
+
+    CmMallProductsClassify get(Integer id);
+
+    List<CmMallProductsClassify> getProductsClassifyListByName(CmMallProductsClassify cmMallProductsClassify);
+
+    void save(CmMallProductsClassify cmMallProductsClassify);
+
+    void updateStatus(CmMallProductsClassify mallProductsClassify);
+
+    void saveSort(String sort, String id);
+
+    List<CmMallProductsClassify> findListByEffective(String organizeID);
+}

+ 143 - 0
src/main/java/com/caimei/modules/products/service/impl/CmMallOrganizeProductsServiceImpl.java

@@ -0,0 +1,143 @@
+package com.caimei.modules.products.service.impl;
+
+import com.caimei.modules.club.entity.Page;
+import com.caimei.modules.products.dao.CmMallOrganizeProductsDao;
+import com.caimei.modules.products.dao.CmMallProductLadderPriceDao;
+import com.caimei.modules.products.entity.CmMallOrganizeProducts;
+import com.caimei.modules.products.entity.CmMallPageModules;
+import com.caimei.modules.products.entity.CmMallProductLadderPrice;
+import com.caimei.modules.products.service.CmMallOrganizeProductsService;
+import com.caimei.utils.AppUtils;
+import com.github.pagehelper.PageHelper;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+
+@Service
+public class CmMallOrganizeProductsServiceImpl implements CmMallOrganizeProductsService {
+    @Resource
+    private CmMallOrganizeProductsDao cmMallOrganizeProductsDao;
+    @Resource
+    private CmMallProductLadderPriceDao cmMallProductLadderPriceDao;
+    @Value("${malladmin.domain}")
+    private String domain;
+
+    @Override
+    public List<CmMallOrganizeProducts> findList(CmMallOrganizeProducts cmMallOrganizeProducts) {
+        return cmMallOrganizeProductsDao.findList(cmMallOrganizeProducts);
+    }
+
+    @Override
+    public Page<CmMallOrganizeProducts> findPage(Page page, CmMallOrganizeProducts cmMallOrganizeProducts) {
+        PageHelper.startPage(page.getIndex(), page.getPageSize());
+        List<CmMallOrganizeProducts> organizeProductsDaoList = cmMallOrganizeProductsDao.findList(cmMallOrganizeProducts);
+        if (CollectionUtils.isNotEmpty(organizeProductsDaoList)) {
+            for (CmMallOrganizeProducts c : organizeProductsDaoList) {
+                c.setMainImage(AppUtils.getProductImageURL(c.getMainImage(), 0, domain));
+                if ("1".equals(c.getLadderPriceFlag())){
+                    Long productId = c.getId().longValue();
+                    List<CmMallProductLadderPrice> ladderPriceList = cmMallProductLadderPriceDao.selectByProductId(productId);
+                    c.setLadderPriceList(ladderPriceList);
+                }
+            }
+        }
+        Page<CmMallOrganizeProducts> organizeProductsPage = new Page<>(organizeProductsDaoList);
+        return organizeProductsPage;
+    }
+
+    @Override
+    public List<CmMallPageModules> findAllModule(Integer organizeID) {
+        return cmMallOrganizeProductsDao.findAllModule(organizeID);
+    }
+
+    @Override
+    public void updateProductInfo(CmMallOrganizeProducts cmMallOrganizeProducts, Long userId) {
+        cmMallOrganizeProductsDao.updateProductInfo(cmMallOrganizeProducts);
+        Long productId = cmMallOrganizeProducts.getId().longValue();
+        CmMallProductLadderPrice ladderPrice = new CmMallProductLadderPrice();
+        ladderPrice.setProductId(productId);
+        ladderPrice.setUpdateBy(userId);
+        ladderPrice.setUpdateDate(new Date());
+        if("1".equals(cmMallOrganizeProducts.getLadderPriceFlag())) {
+            List<CmMallProductLadderPrice> ladderPriceList = cmMallOrganizeProducts.getLadderPriceList();
+            for (CmMallProductLadderPrice item: ladderPriceList) {
+                ladderPrice.setLadderNum(item.getLadderNum());
+                ladderPrice.setBuyNum(item.getBuyNum());
+                ladderPrice.setBuyPrice(item.getBuyPrice());
+                ladderPrice.setDelFlag(item.getDelFlag());
+                Long ladderPriceId = cmMallProductLadderPriceDao.selectIdByProductIdAndLadderNum(productId, item.getLadderNum());
+                if (null !=ladderPriceId && ladderPriceId > 0L){
+                    ladderPrice.setId(ladderPriceId);
+                    cmMallProductLadderPriceDao.updateByPrimaryKeySelective(ladderPrice);
+                }else{
+                    ladderPrice.setCreateBy(userId);
+                    ladderPrice.setCreateDate(new Date());
+                    cmMallProductLadderPriceDao.insertSelective(ladderPrice);
+                }
+            }
+        }else{
+            List<CmMallProductLadderPrice> ladderPriceList = cmMallProductLadderPriceDao.selectByProductId(productId);
+            for (CmMallProductLadderPrice item: ladderPriceList) {
+                ladderPrice.setLadderNum(item.getLadderNum());
+                ladderPrice.setBuyNum(item.getBuyNum());
+                ladderPrice.setBuyPrice(item.getBuyPrice());
+                ladderPrice.setDelFlag("1");
+                ladderPrice.setId(item.getId());
+                cmMallProductLadderPriceDao.updateByPrimaryKeySelective(ladderPrice);
+            }
+        }
+    }
+
+    @Override
+    public CmMallOrganizeProducts get(Integer id) {
+        return cmMallOrganizeProductsDao.get(id);
+    }
+
+    @Override
+    public void updateValidFlag(CmMallOrganizeProducts organizeProducts) {
+        cmMallOrganizeProductsDao.updateValidFlag(organizeProducts);
+    }
+
+    @Override
+    public void saveSort(Integer modules, String sort, String id) {
+        cmMallOrganizeProductsDao.saveSort(modules, sort, id);
+    }
+
+    @Override
+    public List<CmMallOrganizeProducts> findListBuyMall(CmMallOrganizeProducts cmMallOrganizeProducts) {
+        List<CmMallOrganizeProducts> listBuyMall = cmMallOrganizeProductsDao.findListBuyMall(cmMallOrganizeProducts);
+        List<Integer> allExistsProductList = cmMallOrganizeProductsDao.getAllExistsProductList(cmMallOrganizeProducts.getModules());
+        if (CollectionUtils.isNotEmpty(listBuyMall)) {
+            for (CmMallOrganizeProducts c : listBuyMall) {
+                c.setMainImage(AppUtils.getProductImageURL(c.getMainImage(), 0, domain));
+                if (CollectionUtils.isNotEmpty(allExistsProductList)) {
+                    boolean contains = allExistsProductList.contains(c.getId());
+                    if (contains) {
+                        c.setExistsFlag("1");
+                    }
+                }
+                if ("1".equals(c.getLadderPriceFlag())){
+                    Long productId = c.getId().longValue();
+                    List<CmMallProductLadderPrice> ladderPriceList = cmMallProductLadderPriceDao.selectByProductId(productId);
+                    c.setLadderPriceList(ladderPriceList);
+                }
+            }
+        }
+        return listBuyMall;
+    }
+
+    @Override
+    public void updateProductInfo1(CmMallOrganizeProducts cop) {
+        cmMallOrganizeProductsDao.updateProductInfo1(cop);
+    }
+
+    @Override
+    public void canncelPreferredProduct(CmMallOrganizeProducts cmMallOrganizeProducts) {
+        cmMallOrganizeProductsDao.canncelPreferredProduct(cmMallOrganizeProducts);
+    }
+}

+ 71 - 0
src/main/java/com/caimei/modules/products/service/impl/CmMallProductsClassifyServiceImpl.java

@@ -0,0 +1,71 @@
+package com.caimei.modules.products.service.impl;
+
+import com.caimei.modules.products.dao.CmMallProductsClassifyDao;
+import com.caimei.modules.products.entity.CmMallOrganizeProducts;
+import com.caimei.modules.products.entity.CmMallProductsClassify;
+import com.caimei.modules.products.service.CmMallOrganizeProductsService;
+import com.caimei.modules.products.service.CmMallProductsClassifyService;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class CmMallProductsClassifyServiceImpl implements CmMallProductsClassifyService {
+    @Autowired
+    private CmMallProductsClassifyDao cmMallProductsClassifyDao;
+    @Autowired
+    private CmMallOrganizeProductsService cmMallOrganizeProductsService;
+
+    @Override
+    public List<CmMallProductsClassify> findList(CmMallProductsClassify cmMallProductsClassify) {
+        List<CmMallProductsClassify> classifyList = cmMallProductsClassifyDao.findList(cmMallProductsClassify);
+        if (null != classifyList && classifyList.size() > 0) {
+            for (CmMallProductsClassify c : classifyList) {
+                CmMallOrganizeProducts cmMallOrganizeProducts = new CmMallOrganizeProducts();
+                cmMallOrganizeProducts.setOrganizeID(c.getOrganizeID());
+                cmMallOrganizeProducts.setClassifyID(String.valueOf(c.getId()));
+                List<CmMallOrganizeProducts> list1 = cmMallOrganizeProductsService.findList(cmMallOrganizeProducts);
+                if (CollectionUtils.isNotEmpty(list1)) {
+                    c.setContainsProduct("1");//是否包含商品,1包含商品,其它为不包含商品
+                }
+            }
+        }
+        return classifyList;
+    }
+
+    @Override
+    public CmMallProductsClassify get(Integer id) {
+        return cmMallProductsClassifyDao.get(id);
+    }
+
+    @Override
+    public List<CmMallProductsClassify> getProductsClassifyListByName(CmMallProductsClassify cmMallProductsClassify) {
+        return cmMallProductsClassifyDao.getProductsClassifyListByName(cmMallProductsClassify);
+    }
+
+    @Override
+    public void save(CmMallProductsClassify cmMallProductsClassify) {
+        if (cmMallProductsClassify.getId() == null) {
+            cmMallProductsClassifyDao.insert(cmMallProductsClassify);
+        } else {
+            cmMallProductsClassifyDao.update(cmMallProductsClassify);
+        }
+    }
+
+    @Override
+    public void updateStatus(CmMallProductsClassify mallProductsClassify) {
+        cmMallProductsClassifyDao.updateStatus(mallProductsClassify);
+    }
+
+    @Override
+    public void saveSort(String sort, String id) {
+        cmMallProductsClassifyDao.saveSort(sort, id);
+    }
+
+    @Override
+    public List<CmMallProductsClassify> findListByEffective(String organizeID) {
+        return cmMallProductsClassifyDao.findListByEffective(organizeID);
+    }
+}

+ 3 - 3
src/main/java/com/caimei/modules/shiro/auth/AuthFilter.java

@@ -73,7 +73,7 @@ public class AuthFilter extends AuthenticatingFilter {
             HttpServletResponse httpResponse = (HttpServletResponse) response;
             httpResponse.setHeader("Access-Control-Allow-Credentials", "true");
             httpResponse.setHeader("Access-Control-Allow-Origin", HttpContextUtils.getOrigin());
-            httpResponse.setCharacterEncoding("GBK");
+            httpResponse.setCharacterEncoding("UTF-8");
             Map<String, Object> result = new HashMap<>();
             result.put("status", "-1");
             result.put("msg", "未登录,请登录");
@@ -98,8 +98,8 @@ public class AuthFilter extends AuthenticatingFilter {
             //处理登录失败的异常
             Throwable throwable = e.getCause() == null ? e : e.getCause();
             Map<String, Object> result = new HashMap<>();
-            result.put("status", "400");
-            result.put("msg", "登陆失败--onLoginFailure");
+            result.put("status", "-1");
+            result.put("msg", "登录异常,请重新登录");
             String json = JSON.toJSONString(result);
             httpResponse.getWriter().print(json);
         } catch (IOException e1) {

+ 2 - 1
src/main/java/com/caimei/modules/shiro/auth/AuthRealm.java

@@ -62,8 +62,9 @@ public class AuthRealm extends AuthorizingRealm {
         if (user == null) {
             throw new UnknownAccountException("用户不存在!");
         }
+        String infos = TokenEncryptUtils.encoded(tokens[0] + "#,#" + user.getId() + "#,#" + user.getPassword());
         //5. 根据用户的情况, 来构建 AuthenticationInfo 对象并返回. 通常使用的实现类为: SimpleAuthenticationInfo
-        SimpleAuthenticationInfo info = new SimpleAuthenticationInfo(user, accessToken, this.getName());
+        SimpleAuthenticationInfo info = new SimpleAuthenticationInfo(user, infos, this.getName());
         return info;
     }
 }

+ 34 - 0
src/main/java/com/caimei/modules/shiro/auth/ShiroConfig.java

@@ -4,8 +4,12 @@ import org.apache.shiro.spring.LifecycleBeanPostProcessor;
 import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor;
 import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
 import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
+import org.springframework.boot.web.servlet.FilterRegistrationBean;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.web.cors.CorsConfiguration;
+import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
+import org.springframework.web.filter.CorsFilter;
 
 import javax.servlet.Filter;
 import java.util.HashMap;
@@ -39,6 +43,7 @@ public class ShiroConfig {
         shiroFilter.setFilters(filters);
         Map<String, String> filterMap = new LinkedHashMap<>();
         filterMap.put("/user/login", "anon");
+        filterMap.put("/user/organizeInfo", "anon");
         filterMap.put("/", "anon");
         filterMap.put("/**", "auth");
         shiroFilter.setFilterChainDefinitionMap(filterMap);
@@ -59,4 +64,33 @@ public class ShiroConfig {
         advisor.setSecurityManager(securityManager);
         return advisor;
     }
+
+    @Bean
+    public FilterRegistrationBean corsFilter() {
+        final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+        final CorsConfiguration config = new CorsConfiguration();
+        // 允许cookies跨域
+        config.setAllowCredentials(true);
+        // #允许向该服务器提交请求的URI,*表示全部允许,在SpringMVC中,如果设成*,会自动转成当前请求头中的Origin
+        config.addAllowedOrigin("*");
+        // #允许访问的头信息,*表示全部
+        config.addAllowedHeader("*");
+        // 预检请求的缓存时间(秒),即在这个时间段里,对于相同的跨域请求不会再预检了
+        config.setMaxAge(18000L);
+        // 允许提交请求的方法,*表示全部允许
+        config.addAllowedMethod("OPTIONS");
+        config.addAllowedMethod("HEAD");
+        config.addAllowedMethod("GET");
+        config.addAllowedMethod("PUT");
+        config.addAllowedMethod("POST");
+        config.addAllowedMethod("DELETE");
+        config.addAllowedMethod("PATCH");
+        source.registerCorsConfiguration("/**", config);
+
+        FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source));
+        // 设置监听器的优先级
+        bean.setOrder(0);
+
+        return bean;
+    }
 }

+ 64 - 0
src/main/java/com/caimei/modules/shiro/controller/HomePageController.java

@@ -0,0 +1,64 @@
+package com.caimei.modules.shiro.controller;
+
+import com.caimei.modules.order.entity.NewOrderProduct;
+import com.caimei.modules.shiro.entity.SysDict;
+import com.caimei.modules.shiro.service.HomePageService;
+import com.caimei.utils.JsonModel;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("homepage")
+public class HomePageController {
+    @Autowired
+    private HomePageService homePageService;
+
+    /**
+     * 收款金额统计
+     */
+    @RequestMapping("receivable")
+    public JsonModel receivableAmount(String endTime, String startTime, Integer organizeID) {
+        Map<String, Object> map = homePageService.receivableAmount(endTime, startTime, organizeID);
+        return JsonModel.newInstance().success(map);
+    }
+
+    /**
+     * 订单总量统计
+     */
+    @RequestMapping("order")
+    public JsonModel orderQuantity(String endTime, String startTime, Integer organizeID) {
+        Map<String, Object> map = homePageService.orderQuantity(endTime, startTime, organizeID);
+        return JsonModel.newInstance().success(map);
+    }
+
+    /**
+     * 销售额趋势数据
+     */
+    @RequestMapping("sale")
+    public JsonModel sale(Integer organizeID) {
+        Map<String, Object> map = homePageService.sale(organizeID);
+        return JsonModel.newInstance().success(map);
+    }
+
+    /**
+     * 热销商品统计
+     */
+    @RequestMapping("commodity")
+    public JsonModel commodity(String endTime, String startTime, Integer organizeID) {
+        List<NewOrderProduct> orderProduct = homePageService.commodity(endTime, startTime, organizeID);
+        return JsonModel.newInstance().success(orderProduct);
+    }
+
+    /**
+     * 字典工具使用
+     */
+    @RequestMapping("dictionaries")
+    public List<SysDict> dictionaries(SysDict sysDict) {
+        List<SysDict> sysDictList = homePageService.dictionaries(sysDict);
+        return sysDictList;
+    }
+}

Some files were not shown because too many files changed in this diff