Bladeren bron

Merge branch 'developer' of git_lijun/caimei-mall into developer

李俊 5 jaren geleden
bovenliggende
commit
b57c8435c3
43 gewijzigde bestanden met toevoegingen van 4142 en 188 verwijderingen
  1. 61 0
      src/main/java/com/caimei/controller/products/DetailsController.java
  2. 95 0
      src/main/java/com/caimei/controller/products/HomePageController.java
  3. 71 0
      src/main/java/com/caimei/controller/products/ShoppingController.java
  4. 51 72
      src/main/java/com/caimei/controller/user/LoginController.java
  5. 14 2
      src/main/java/com/caimei/controller/user/PersonalController.java
  6. 9 0
      src/main/java/com/caimei/entity/Address.java
  7. 18 0
      src/main/java/com/caimei/entity/Club.java
  8. 70 0
      src/main/java/com/caimei/entity/CmMallCart.java
  9. 105 0
      src/main/java/com/caimei/entity/CmMallOrganize.java
  10. 10 1
      src/main/java/com/caimei/entity/CmOperationUser.java
  11. 259 0
      src/main/java/com/caimei/entity/CmOrganizeProducts.java
  12. 87 0
      src/main/java/com/caimei/entity/CmProductsClassify.java
  13. 941 0
      src/main/java/com/caimei/entity/Product.java
  14. 105 0
      src/main/java/com/caimei/entity/ProductDetailInfo.java
  15. 69 0
      src/main/java/com/caimei/entity/ProductImage.java
  16. 754 0
      src/main/java/com/caimei/entity/Shop.java
  17. 98 89
      src/main/java/com/caimei/entity/WxJsonModel.java
  18. 161 0
      src/main/java/com/caimei/entity/brand.java
  19. 242 0
      src/main/java/com/caimei/entity/hospital.java
  20. 25 0
      src/main/java/com/caimei/mapper/products/DetailsMapper.java
  21. 26 0
      src/main/java/com/caimei/mapper/products/HomePageMapper.java
  22. 21 0
      src/main/java/com/caimei/mapper/products/ShoppingMapper.java
  23. 2 0
      src/main/java/com/caimei/mapper/user/LoginMapper.java
  24. 1 1
      src/main/java/com/caimei/mapper/user/PersonalMapper.java
  25. 10 0
      src/main/java/com/caimei/service/products/DetailsService.java
  26. 20 0
      src/main/java/com/caimei/service/products/HomePageService.java
  27. 13 0
      src/main/java/com/caimei/service/products/ShoppingService.java
  28. 94 0
      src/main/java/com/caimei/service/products/impl/DetailsServiceImpl.java
  29. 78 0
      src/main/java/com/caimei/service/products/impl/HomePageServiceImpl.java
  30. 77 0
      src/main/java/com/caimei/service/products/impl/ShoppingServiceImpl.java
  31. 6 1
      src/main/java/com/caimei/service/user/LoginService.java
  32. 25 1
      src/main/java/com/caimei/service/user/impl/LoginServiceImpl.java
  33. 28 6
      src/main/java/com/caimei/service/user/impl/PersonalServiceImpl.java
  34. 155 0
      src/main/java/com/caimei/utils/AppUtils.java
  35. 4 1
      src/main/resources/dev/application-dev.yml
  36. 87 0
      src/main/resources/mapper/DetailsMapper.xml
  37. 160 0
      src/main/resources/mapper/HomePageMapper.xml
  38. 16 6
      src/main/resources/mapper/LoginMapper.xml
  39. 5 5
      src/main/resources/mapper/PersonalMapper.xml
  40. 59 0
      src/main/resources/mapper/ShoppingMapper.xml
  41. 5 2
      src/main/resources/prod/application-prod.yml
  42. 1 0
      src/main/resources/public/qzGP5lbiSR.txt
  43. 4 1
      src/main/resources/test/application-test.yml

+ 61 - 0
src/main/java/com/caimei/controller/products/DetailsController.java

@@ -0,0 +1,61 @@
+package com.caimei.controller.products;
+
+import com.caimei.entity.CmMallCart;
+import com.caimei.entity.CmOperationUser;
+import com.caimei.entity.CmOrganizeProducts;
+import com.caimei.entity.WxJsonModel;
+import com.caimei.service.products.DetailsService;
+import com.caimei.service.user.LoginService;
+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.ResponseBody;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * 详情页面
+ */
+@Controller
+@RequestMapping("/details")
+public class DetailsController {
+    @Autowired
+    private DetailsService detailsService;
+    @Autowired
+    private LoginService loginService;
+
+    /**
+     * 商品详情页
+     *
+     * @return
+     */
+    @ResponseBody
+    @RequestMapping("/product")
+    public WxJsonModel productDetails(Integer id, Integer userID) {
+        CmOrganizeProducts organizeProducts = detailsService.productDetails(id, userID);
+        return WxJsonModel.newInstance().success(organizeProducts);
+    }
+
+    /**
+     * 加入购物车
+     *
+     * @return
+     */
+    @ResponseBody
+    @RequestMapping("/addCart")
+    public synchronized WxJsonModel addCart(@RequestBody CmMallCart cmMallCart, HttpServletRequest request) {
+        WxJsonModel model = WxJsonModel.newInstance();
+        if (cmMallCart == null) return model.error("参数异常");
+        String openid = (String) request.getSession().getAttribute("openid");
+        CmOperationUser operationUser = loginService.doLogin(openid, cmMallCart.getOrganizeID());
+        if (operationUser == null) return model.error("账户异常");
+        Integer count = 0;
+        try {
+            count = detailsService.saveCart(cmMallCart);
+        } catch (Exception e) {
+            return model.error("加入购物车失败");
+        }
+        return model.success("加入购物车成功", count);
+    }
+}

+ 95 - 0
src/main/java/com/caimei/controller/products/HomePageController.java

@@ -0,0 +1,95 @@
+package com.caimei.controller.products;
+
+import com.caimei.entity.*;
+import com.caimei.service.products.HomePageService;
+import com.github.pagehelper.PageHelper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 商城首页信息
+ */
+@Controller
+@RequestMapping("/home")
+public class HomePageController {
+    @Autowired
+    private HomePageService homePageService;
+
+
+    /**
+     * 首页所有数据
+     *
+     * @return
+     */
+    @ResponseBody
+    @RequestMapping("/information")
+    public WxJsonModel information(Integer organizeID, Integer userID) {
+        Map<String, Object> map = homePageService.information(organizeID, userID);
+        return WxJsonModel.newInstance().success(map);
+    }
+
+    /**
+     * 商品分类列表
+     *
+     * @return
+     */
+    @ResponseBody
+    @RequestMapping("/classify")
+    public WxJsonModel classify(CmOrganizeProducts organizeProducts, Integer index, Integer pageSize) {
+        if (index == null) index = 1;
+        if (pageSize == null) pageSize = 10;
+        PageHelper.startPage(index, pageSize);
+        List<CmOrganizeProducts> list = homePageService.classify(organizeProducts);
+        Page<CmOrganizeProducts> page = new Page<>(list);
+        return WxJsonModel.newInstance().success(page);
+    }
+
+    /**
+     * 优选商品,惊喜特惠,常用商品
+     *
+     * @return
+     */
+    @ResponseBody
+    @RequestMapping("/preferred")
+    public WxJsonModel preferred(CmOrganizeProducts organizeProducts, Integer index, Integer pageSize) {
+        if (index == null) index = 1;
+        if (pageSize == null) pageSize = 10;
+        PageHelper.startPage(index, pageSize);
+        List<CmOrganizeProducts> list = homePageService.preferred(organizeProducts);
+        Page<CmOrganizeProducts> page = new Page<>(list);
+        return WxJsonModel.newInstance().success(page);
+    }
+
+    /**
+     * 医美机构正品联盟
+     *
+     * @return
+     */
+    @ResponseBody
+    @RequestMapping("/member")
+    public WxJsonModel member(Integer index, Integer pageSize) {
+        if (index == null) index = 1;
+        if (pageSize == null) pageSize = 10;
+        PageHelper.startPage(index, pageSize);
+        List<hospital> member = homePageService.member();
+        Page<hospital> page = new Page<>(member);
+        return WxJsonModel.newInstance().success(page);
+    }
+
+    /**
+     * 售后无忧,购物须知
+     *
+     * @return
+     */
+    @ResponseBody
+    @RequestMapping("/afterSale")
+    public WxJsonModel afterSale(Integer organizeID) {
+        CmMallOrganize organize = homePageService.afterSale(organizeID);
+        return WxJsonModel.newInstance().success(organize);
+    }
+}

+ 71 - 0
src/main/java/com/caimei/controller/products/ShoppingController.java

@@ -0,0 +1,71 @@
+package com.caimei.controller.products;
+
+import com.caimei.entity.CmMallCart;
+import com.caimei.entity.CmOperationUser;
+import com.caimei.entity.WxJsonModel;
+import com.caimei.service.products.ShoppingService;
+import com.caimei.service.user.LoginService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+import java.util.Map;
+
+/**
+ * 购物车页面
+ */
+@Controller
+@RequestMapping("/shopping")
+public class ShoppingController {
+    @Autowired
+    private ShoppingService shoppingService;
+    @Autowired
+    private LoginService loginService;
+
+    /**
+     * 购物页数据
+     */
+    @ResponseBody
+    @RequestMapping("/cart")
+    public WxJsonModel cart(Integer userID, Integer organizeID, Integer index, Integer pageSize) {
+        WxJsonModel model = WxJsonModel.newInstance();
+        if (index == null) index = 1;
+        if (pageSize == null) pageSize = 10;
+        Map<String, Object> map = shoppingService.findAllCart(userID, index, pageSize);
+        return model.success(map);
+    }
+
+    /**
+     * 更新商品数量
+     */
+    @ResponseBody
+    @RequestMapping("/update")
+    public void updateNumber(CmMallCart cmMallCart) {
+        shoppingService.updateNumber(cmMallCart);
+    }
+
+    /**
+     * 删除购物车商品
+     *
+     * @return
+     */
+    @ResponseBody
+    @RequestMapping("/delete")
+    public WxJsonModel deleteCart(Integer userID, String productIDs, HttpServletRequest request) {
+        WxJsonModel model = WxJsonModel.newInstance();
+        HttpSession session = request.getSession();
+        String openid = (String) session.getAttribute("openid");
+        Integer organizeID = (Integer) session.getAttribute("organizeID");
+        CmOperationUser operationUser = loginService.doLogin(openid, organizeID);
+        if (operationUser == null) return model.error("账户异常");
+        try {
+            shoppingService.deleteCart(userID, productIDs);
+        } catch (Exception e) {
+            return model.error("删除失败");
+        }
+        return model.success("删除成功", "");
+    }
+}

+ 51 - 72
src/main/java/com/caimei/controller/user/LoginController.java

@@ -33,25 +33,14 @@ public class LoginController {
     protected static final Logger logger = LoggerFactory.getLogger(LoginController.class);
     @Autowired
     private LoginService loginService;
-
+    @Value("${miniprogram.ValidTime}")
+    private Integer ValidTime;
     @Value("${miniprogram.AppId}")
     private String AppId;
-
     @Value("${miniprogram.AppSecret}")
     private String AppSecret;
 
-    /**
-     * 判断是否是游客
-     *
-     * @param code
-     * @param request
-     * @return
-     */
-    @ResponseBody
-    @RequestMapping("/doLogin")
-    public WxJsonModel doLogin(@RequestParam(value = "code", required = true) String code,
-                               @RequestParam(value = "userOrganizeID") Integer userOrganizeID,
-                               HttpServletRequest request) {
+    public WxJsonModel login(String code, HttpServletRequest request) {
         logger.info("Start get SessionKey");
         WxJsonModel res = WxJsonModel.newInstance();
         Map<String, Object> map = new HashMap<>();
@@ -87,10 +76,38 @@ public class LoginController {
             res.setCode("-1");
             return res;
         }
+        return res.success(openid);
+    }
+
+    /**
+     * 判断是否是游客
+     *
+     * @param code
+     * @param request
+     * @return
+     */
+    @ResponseBody
+    @RequestMapping("/doLogin")
+    public WxJsonModel doLogin(@RequestParam(value = "code", required = true) String code,
+                               @RequestParam(value = "userOrganizeID") Integer userOrganizeID,
+                               HttpServletRequest request) {
+        WxJsonModel res = WxJsonModel.newInstance();
+        WxJsonModel model = login(code, request);
+        if (model.getCode().equals("-1")) {
+            return model;
+        }
+        String openid = (String) model.getData();
+        //传入session,返回用户信息,更新sessionId
+        HttpSession session = SessionHelper.getSession();
+        String sessionId = session.getId();
+        session.setAttribute("openid", openid);
+        session.setAttribute("organizeID", userOrganizeID);
         CmOperationUser operationUser = loginService.doLogin(openid, userOrganizeID);
         if (operationUser == null) {
-            return res.error("-1", "游客,请登录");
+            String mobile = loginService.cellPhone(userOrganizeID);
+            return res.error("-1", mobile, "游客,请登录");
         }
+        operationUser.setSessionId(sessionId);
         return res.success("1", operationUser);
     }
 
@@ -99,12 +116,18 @@ public class LoginController {
      *
      * @param invitationCode 邀请码
      * @param userOrganizeID 组织id
-     * @return
+     * @return 0:        请输入邀请码
+     * -2:       邀请码已失效
+     * -3:       邀请码已被使用
      */
     @RequestMapping("/isEnabled")
     @ResponseBody
     public WxJsonModel isEnabled(String invitationCode, Integer userOrganizeID) {
         WxJsonModel res = WxJsonModel.newInstance();
+        String mobile = loginService.cellPhone(userOrganizeID);
+        if (invitationCode == null || invitationCode.equals("")) {
+            return res.error("0", mobile);
+        }
         CmOperationUser operationUser = loginService.isEnabled(invitationCode, userOrganizeID);
         if (operationUser == null) {
             return res.error("-1", "邀请码错误");
@@ -112,19 +135,19 @@ public class LoginController {
         Date date = new Date();
         Calendar calendar = Calendar.getInstance();
         calendar.setTime(operationUser.getInvitationCodeTime());
-        calendar.add(Calendar.DATE, 2);
+        calendar.add(Calendar.DATE, ValidTime);
         if (operationUser.getStatus().equals("1") && date.getTime() > calendar.getTime().getTime() && operationUser.getDelFlag().equals("0")) {
-            return res.error("-1", "邀请码已失效");
+            return res.error("-2", mobile);
         }
         if (operationUser.getStatus().equals("2") && operationUser.getDelFlag().equals("0")) {
-            return res.error("-1", "邀请码已被使用");
-        }
-        if (!operationUser.getDelFlag().equals("0")) {
-            return res.error("-1", "您的账号已下线");
+            return res.error("-3", mobile);
         }
         if (operationUser.getClubStatus().equals("91")) {
             return res.error("-1", "您所在的会所已下线");
         }
+        if (!operationUser.getDelFlag().equals("0")) {
+            return res.error("-1", "您的账号已下线");
+        }
         return res.error("1", "邀请码通过");
     }
 
@@ -140,57 +163,13 @@ public class LoginController {
     @ResponseBody
     public WxJsonModel register(@RequestParam(value = "code", required = true) String code,
                                 CmOperationUser operationUser, HttpServletRequest request) {
-        WxJsonModel res = WxJsonModel.newInstance();
-        Map<String, Object> map = new HashMap<>();
-        String referer = request.getHeader("Referer"); //获取当前微信小程序的环境
-        map.put("referer", referer);
-        String requestUrl = "https://api.weixin.qq.com/sns/jscode2session";
-        Map<String, String> requestUrlParam = new HashMap<String, String>();
-        requestUrlParam.put("appid", AppId);//小程序appId
-        requestUrlParam.put("secret", AppSecret);//小程序appsecret
-        requestUrlParam.put("js_code", code);//小程序端返回的code
-        requestUrlParam.put("grant_type", "authorization_code");//默认参数
-        //发送post请求读取调用微信接口获取openid用户唯一标识
-        String infos;
-        try {
-            infos = HttpRequest.sendPost(requestUrl, requestUrlParam);
-        } catch (Exception e) {
-            res.setData(map);
-            return res.error("服务器内部异常");
-        }
-        //解析相应内容(转换成json对象)
-        JSONObject jsonObject = JSON.parseObject(infos);
-        String openid = jsonObject.getString("openid");
-        String session_key = jsonObject.getString("session_key");
-        String errcode = jsonObject.getString("errcode");
-        String errmsg = jsonObject.getString("errmsg");
-        if (!StringUtils.isEmpty(errcode) &&
-                (errcode.equals("-1") || errcode.equals("40029") || errcode.equals("45011"))) {
-            res.setMsg(errmsg);
-            res.setData(map);
-            map.put("sessionKey", session_key);
-            res.setCode("-1");
-            return res;
+        WxJsonModel model = login(code, request);
+        if (model.getCode().equals("-1")) {
+            return model;
         }
+        String openid = (String) model.getData();
         operationUser.setOpenid(openid);
-        loginService.update(operationUser);
-        return res.success("1", operationUser);
-    }
-
-    @RequestMapping("/testSession")
-    @ResponseBody
-    public WxJsonModel testSession(){
-        HttpSession session = SessionHelper.getSession();
-        session.setAttribute("testSession","测试传入session");
-        return new WxJsonModel();
+        WxJsonModel jsonModel = loginService.update(operationUser, request);
+        return jsonModel;
     }
-
-    @RequestMapping("/getSession")
-    @ResponseBody
-    public WxJsonModel getSession(){
-        HttpSession session = SessionHelper.getSession();
-        String getSession = (String)session.getAttribute("testSession");
-        return new WxJsonModel();
-    }
-
 }

+ 14 - 2
src/main/java/com/caimei/controller/user/PersonalController.java

@@ -1,6 +1,7 @@
 package com.caimei.controller.user;
 
 import com.caimei.entity.*;
+import com.caimei.service.user.LoginService;
 import com.caimei.service.user.PersonalService;
 import com.github.pagehelper.PageHelper;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -10,6 +11,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.ResponseBody;
 
+import javax.servlet.http.HttpServletRequest;
 import java.util.List;
 import java.util.Map;
 
@@ -21,6 +23,8 @@ import java.util.Map;
 public class PersonalController {
     @Autowired
     private PersonalService personalService;
+    @Autowired
+    private LoginService loginService;
 
     /**
      * 我的个人显示数据
@@ -112,9 +116,13 @@ public class PersonalController {
      */
     @ResponseBody
     @RequestMapping(value = "/save", method = RequestMethod.POST)
-    public WxJsonModel saveAddress(@RequestBody Address address) {
+    public WxJsonModel saveAddress(@RequestBody Address address, String code, HttpServletRequest request) {
         WxJsonModel res = WxJsonModel.newInstance();
         if (address == null) return res.error("参数异常");
+        //判断是否处于登录状态
+        String openid = (String) request.getSession().getAttribute("openid");
+        CmOperationUser operationUser = loginService.doLogin(openid, address.getUserOrganizeID());
+        if (operationUser == null) return res.error("账户异常");
         try {
             personalService.saveAddress(address);
         } catch (Exception e) {
@@ -128,8 +136,12 @@ public class PersonalController {
      */
     @ResponseBody
     @RequestMapping("/delete")
-    public WxJsonModel deleteAddress(Integer addressID) {
+    public WxJsonModel deleteAddress(Integer addressID, String code, Integer userOrganizeID, HttpServletRequest request) {
         WxJsonModel res = WxJsonModel.newInstance();
+        //判断是否处于登录状态
+        String openid = (String) request.getSession().getAttribute("openid");
+        CmOperationUser operationUser = loginService.doLogin(openid, userOrganizeID);
+        if (operationUser == null) return res.error("账户异常");
         try {
             personalService.deleteAddress(addressID);
         } catch (Exception e) {

+ 9 - 0
src/main/java/com/caimei/entity/Address.java

@@ -15,6 +15,15 @@ public class Address implements Serializable {
     private String town;//村镇名
     private String city;//城市名称
     private String province;//省份名称
+    private Integer userOrganizeID;  //组织id
+
+    public Integer getUserOrganizeID() {
+        return userOrganizeID;
+    }
+
+    public void setUserOrganizeID(Integer userOrganizeID) {
+        this.userOrganizeID = userOrganizeID;
+    }
 
     public Integer getAddressID() {
         return addressID;

+ 18 - 0
src/main/java/com/caimei/entity/Club.java

@@ -9,8 +9,10 @@ public class Club implements Serializable {
     private String name;//会所名称
     private String headpic; //门头照
     private Double ableUserMoney; //账户实际可用余额
+    private String userMoney;    //保留之后
     private String contactNumber;   //联系我们
     private String introduction;    //关于我们
+    private Integer cartCount;      //购物车数量
 
     public Integer getClubID() {
         return clubID;
@@ -75,4 +77,20 @@ public class Club implements Serializable {
     public void setIntroduction(String introduction) {
         this.introduction = introduction;
     }
+
+    public String getUserMoney() {
+        return userMoney;
+    }
+
+    public void setUserMoney(String userMoney) {
+        this.userMoney = userMoney;
+    }
+
+    public Integer getCartCount() {
+        return cartCount;
+    }
+
+    public void setCartCount(Integer cartCount) {
+        this.cartCount = cartCount;
+    }
 }

+ 70 - 0
src/main/java/com/caimei/entity/CmMallCart.java

@@ -0,0 +1,70 @@
+package com.caimei.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class CmMallCart implements Serializable {
+    private Integer id;
+    private Integer productID;      //关联cm_mall_organize_products的ID
+    private Integer userID;     //用户ID(目前小程序用户和采美用户都在user表中)
+    private Integer productCount;   //商品数量
+    private Date addTime;       //添加时间
+    private String delFlag;        //是否有效状态 0 有效 其它无效
+    private Integer organizeID;   //组织id
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getProductID() {
+        return productID;
+    }
+
+    public void setProductID(Integer productID) {
+        this.productID = productID;
+    }
+
+    public Integer getUserID() {
+        return userID;
+    }
+
+    public void setUserID(Integer userID) {
+        this.userID = userID;
+    }
+
+    public Integer getProductCount() {
+        return productCount;
+    }
+
+    public void setProductCount(Integer productCount) {
+        this.productCount = productCount;
+    }
+
+    public Date getAddTime() {
+        return addTime;
+    }
+
+    public void setAddTime(Date addTime) {
+        this.addTime = addTime;
+    }
+
+    public String getDelFlag() {
+        return delFlag;
+    }
+
+    public void setDelFlag(String delFlag) {
+        this.delFlag = delFlag;
+    }
+
+    public Integer getOrganizeID() {
+        return organizeID;
+    }
+
+    public void setOrganizeID(Integer organizeID) {
+        this.organizeID = organizeID;
+    }
+}

+ 105 - 0
src/main/java/com/caimei/entity/CmMallOrganize.java

@@ -0,0 +1,105 @@
+package com.caimei.entity;
+
+import java.io.Serializable;
+
+public class CmMallOrganize implements Serializable {
+    private Integer id;
+    private String organizeName;        //组织名称
+    private String organizeLinkName;    //组织联系人
+    private String mobile;          //手机号码
+    private String contactNumber;   //联系我们,手机或者座机号码
+    private String introduction;    //关于我们:组织介绍信息
+    private String afterSale;       //售后无忧
+    private String shoppingNotes;   //购物须知
+    private String updateTime;      //更新时间
+    private String addTime;         //添加时间
+    private String delFlag;     //0 有效 其它无效
+
+    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 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;
+    }
+
+    public String getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(String updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getAddTime() {
+        return addTime;
+    }
+
+    public void setAddTime(String addTime) {
+        this.addTime = addTime;
+    }
+
+    public String getDelFlag() {
+        return delFlag;
+    }
+
+    public void setDelFlag(String delFlag) {
+        this.delFlag = delFlag;
+    }
+}

+ 10 - 1
src/main/java/com/caimei/entity/CmOperationUser.java

@@ -5,7 +5,7 @@ import java.util.Date;
 
 public class CmOperationUser implements Serializable {
     private Integer id;
-    private Integer userOrganizeID;      //具体对应cm_user_organize表ID
+    private Integer userOrganizeID;      //具体对应cm_mall_organize表ID
     private Integer clubID;              //会所ID:隶属于哪个会所的运营人员
     private String mobile;              //手机号码
     private String linkName;            //联系人
@@ -20,6 +20,7 @@ public class CmOperationUser implements Serializable {
     private String delFlag;              //0 有效 其它无效
     private String clubStatus;          //会所状态  (90, "已上线"),(91, "已冻结")
     private Integer userID;             //用户ID:隶属于哪个用户的运营人员
+    private String sessionId;           //session标识
 
     public Integer getId() {
         return id;
@@ -148,4 +149,12 @@ public class CmOperationUser implements Serializable {
     public void setUserID(Integer userID) {
         this.userID = userID;
     }
+
+    public String getSessionId() {
+        return sessionId;
+    }
+
+    public void setSessionId(String sessionId) {
+        this.sessionId = sessionId;
+    }
 }

+ 259 - 0
src/main/java/com/caimei/entity/CmOrganizeProducts.java

@@ -0,0 +1,259 @@
+package com.caimei.entity;
+
+import java.io.Serializable;
+import java.util.List;
+
+public class CmOrganizeProducts implements Serializable {
+    private Integer id;
+    private Integer classifyID;   //对应cm_mall_products_classify商品分类表id
+    private Integer organizeID;    //组织ID,具体对应cm_mall_organize表ID
+    private Integer productID;     //商品ID,具体对应product表
+    private Double normalPrice;    //市场价
+    private Double costPrice;       //成本价
+    private Double retailPrice;     //售价
+    private Integer minBuyNumber;    //最小起订量
+    private String preferredProduct;    //是否是优选商品:0不是优选,1优选商品
+    private String commonlyProduct;     //是否是常用商品:0不是常用,1常用商品
+    private String preferentialProduct; //是否是惊喜特惠:0不是特惠,1惊喜特惠商品
+    private String validFlag;       //商品状态,1已上架,2已下架
+    private Integer preferredProductSort;       //(优选排序)排序默认为空,排序优先级1最高,空最后
+    private Integer commonlyProductSort;   //(常用排序)排序默认为空,排序优先级1最高,空最后
+    private Integer preferentialProductSort;   //(精品排序)排序默认为空,排序优先级1最高,空最后
+    private String addTime;     //添加时间
+    private String updateTime;     //更新时间
+    private String delFlag;     //是否有效状态 0 有效 其它无效
+    private String mainImage;   //主图
+    private String name;        //名称
+    private String unit;        //包装规格
+    private Integer productCount;  //商品数量
+    private Integer cartCount;   //购物车总数量
+    private Product product;    //采美商品表
+    private List<ProductImage> ProductImage;  //商品图片
+    private ProductDetailInfo productDetailInfo; //商品详情
+    private Shop shop;      //供应商信息
+    private Boolean productsChecked = false;  //商品勾选状态
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getClassifyID() {
+        return classifyID;
+    }
+
+    public void setClassifyID(Integer classifyID) {
+        this.classifyID = classifyID;
+    }
+
+    public Integer getOrganizeID() {
+        return organizeID;
+    }
+
+    public void setOrganizeID(Integer organizeID) {
+        this.organizeID = organizeID;
+    }
+
+    public Integer getProductID() {
+        return productID;
+    }
+
+    public void setProductID(Integer productID) {
+        this.productID = productID;
+    }
+
+    public Double getNormalPrice() {
+        return normalPrice;
+    }
+
+    public void setNormalPrice(Double normalPrice) {
+        this.normalPrice = normalPrice;
+    }
+
+    public Double getCostPrice() {
+        return costPrice;
+    }
+
+    public void setCostPrice(Double costPrice) {
+        this.costPrice = costPrice;
+    }
+
+    public Double getRetailPrice() {
+        return retailPrice;
+    }
+
+    public void setRetailPrice(Double retailPrice) {
+        this.retailPrice = retailPrice;
+    }
+
+    public Integer getMinBuyNumber() {
+        return minBuyNumber;
+    }
+
+    public void setMinBuyNumber(Integer 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 Integer getPreferredProductSort() {
+        return preferredProductSort;
+    }
+
+    public void setPreferredProductSort(Integer preferredProductSort) {
+        this.preferredProductSort = preferredProductSort;
+    }
+
+    public Integer getCommonlyProductSort() {
+        return commonlyProductSort;
+    }
+
+    public void setCommonlyProductSort(Integer commonlyProductSort) {
+        this.commonlyProductSort = commonlyProductSort;
+    }
+
+    public Integer getPreferentialProductSort() {
+        return preferentialProductSort;
+    }
+
+    public void setPreferentialProductSort(Integer preferentialProductSort) {
+        this.preferentialProductSort = preferentialProductSort;
+    }
+
+    public String getAddTime() {
+        return addTime;
+    }
+
+    public void setAddTime(String addTime) {
+        this.addTime = addTime;
+    }
+
+    public String getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(String updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getDelFlag() {
+        return delFlag;
+    }
+
+    public void setDelFlag(String delFlag) {
+        this.delFlag = delFlag;
+    }
+
+    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 getUnit() {
+        return unit;
+    }
+
+    public void setUnit(String unit) {
+        this.unit = unit;
+    }
+
+    public Product getProduct() {
+        return product;
+    }
+
+    public void setProduct(Product product) {
+        this.product = product;
+    }
+
+    public List<com.caimei.entity.ProductImage> getProductImage() {
+        return ProductImage;
+    }
+
+    public void setProductImage(List<com.caimei.entity.ProductImage> productImage) {
+        ProductImage = productImage;
+    }
+
+    public ProductDetailInfo getProductDetailInfo() {
+        return productDetailInfo;
+    }
+
+    public void setProductDetailInfo(ProductDetailInfo productDetailInfo) {
+        this.productDetailInfo = productDetailInfo;
+    }
+
+    public Shop getShop() {
+        return shop;
+    }
+
+    public void setShop(Shop shop) {
+        this.shop = shop;
+    }
+
+    public Integer getCartCount() {
+        return cartCount;
+    }
+
+    public void setCartCount(Integer cartCount) {
+        this.cartCount = cartCount;
+    }
+
+    public Integer getProductCount() {
+        return productCount;
+    }
+
+    public void setProductCount(Integer productCount) {
+        this.productCount = productCount;
+    }
+
+    public Boolean getProductsChecked() {
+        return productsChecked;
+    }
+
+    public void setProductsChecked(Boolean productsChecked) {
+        this.productsChecked = productsChecked;
+    }
+}

+ 87 - 0
src/main/java/com/caimei/entity/CmProductsClassify.java

@@ -0,0 +1,87 @@
+package com.caimei.entity;
+
+import java.io.Serializable;
+
+public class CmProductsClassify implements Serializable {
+    private Integer id;
+    private Integer organizeID;   //分类归属组织ID,具体对应cm_mall_organize表ID
+    private String classifyName;  //分类名称
+    private String classifyImage;  //分类图标
+    private Integer sort;    // 排序
+    private String status;   //分类使用状态:1启用,2停用
+    private String addTime;   //添加时间
+    private String updateTime;  //更新时间
+    private String delFlag;   //0 有效 其它无效
+
+    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 getClassifyName() {
+        return classifyName;
+    }
+
+    public void setClassifyName(String classifyName) {
+        this.classifyName = classifyName;
+    }
+
+    public String getClassifyImage() {
+        return classifyImage;
+    }
+
+    public void setClassifyImage(String classifyImage) {
+        this.classifyImage = classifyImage;
+    }
+
+    public Integer getSort() {
+        return sort;
+    }
+
+    public void setSort(Integer sort) {
+        this.sort = sort;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public String getAddTime() {
+        return addTime;
+    }
+
+    public void setAddTime(String addTime) {
+        this.addTime = addTime;
+    }
+
+    public String getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(String updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getDelFlag() {
+        return delFlag;
+    }
+
+    public void setDelFlag(String delFlag) {
+        this.delFlag = delFlag;
+    }
+}

+ 941 - 0
src/main/java/com/caimei/entity/Product.java

@@ -0,0 +1,941 @@
+package com.caimei.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class Product implements Serializable {
+    private Integer productID; //
+    private Integer brandID; //品牌Id(使用cm_brand品牌表brand供应商品牌已废弃)
+    private String brandName; //品牌名称
+    private Integer tinyTypeID; //三级分类Id
+    private Integer selfTypeID; //
+    private Integer shopID; //所属供应商Id
+    private String name; //名称
+    private String aliasName; //商品别名
+    private String productTitle;//等同于name用作于搜索改变商品名字样式时使用
+    private String searchKey; //搜索关键词
+    private String precisehKey; //精准搜索关键词
+    //private Float normalPrice; //市场价
+    //private Float price; //
+    //private Float highestUserLevelPrice; //最低价
+    //private Float lowestUserLevelPrice; //最高价
+    private Integer lowestUserLevelID; //最高价会员等级
+    private Float price0; //普通用户价格
+    private String price0Grade; //等级
+    private String price0Text; //普通显示文本
+    private String price0TextFlag;//0否 	1 是
+    private Float price1; //普通会员价
+    private String price1Grade; //等级
+    private String price1Text; //会员显示文本
+    private String price1TextFlag; //0否 1 是
+    private Float price8; //游客价
+    private String price8Grade; //等级
+    private String price8Text; //游客文本
+    private String price8TextFlag; //0否 1 是
+    private Float fee; //运费
+    private Integer stock; //库存
+    private String hasSkuFlag; //是否有sku:1有, 0没有
+    private String mainImage; //主图
+    private String propertiesInfo; //sku属性
+    private String addTime; //添加时间
+    private String updateTime; //添加时间
+    private Integer sellNumber = 0; //销量
+    private Integer weekSellNumber; //
+    private String beforeValidFlag; //
+    //private String validFlag; //商品状态,见表c_productstatus或枚举ProductStatus,0逻辑删除 1待审核 2已上架 3已下架 8审核未通过 9已冻结
+    private Integer favoriteTimes; //收藏量
+    private Float commentScore = 0f; //评论分数
+    private Integer commentTimes = 0; //评论次数
+    private String selfRecommendFlag = "0"; //
+    private String sysRecommendFlag = "0"; //
+    private Integer sortIndex; //排序值
+    private String productCode; //商品货号(商品编码)
+    private Float rate1; //
+    private Float rate2; //
+    private String unit; //包装规格
+    private String synToERPFlag; //是否推送到ERP,1已推送, 空或0未推送
+    private String allAreaFlag; //销售区域:1全部区域, 0指定区域
+    private String provinceIDs; //指定的销售区域
+    //private String serviceNumber; //服务起订量
+    //private Integer maxBuyNumber; //最大购买量
+    private String virtualFlag; //
+    //private Integer minBuyNumber; //最小购买量
+    //private Integer packageCount; //最小包装数量
+    private String byFlag; //运费:0买家承担, 1卖家承担
+    private Integer normalProductFlag; //普通商品标志 1是
+    private Integer wholeSaleProductFlag; //
+    private Integer promotionProductFlag; //
+    private Integer groupBuyProductFlag; //
+    private Integer step; //购买梯度数(编辑数量时加减的数量)
+    private String speCommisionFlag; //
+    private Float speCommision; //
+    private String videourl; //
+    private String props; //
+    private String providers; //
+    private Float serviceCommissionRatio; //
+    private Float reCommissionRatio; //
+    private String pushToERPName; // 推送到ERP的原商品名称 name字段的名称可能做修改已适应平台的搜索
+    private Integer prodBeans; // 商品具有的豆值
+    private Integer useBeansFlag; // 该商品是否可以使用采美豆购买
+    private Integer privateFlag; // 0开放市场 1私有市场
+    private String invisibleServiceProviderIDs; //
+    //private Float actPrice0; //普通用户活动价格
+    //private Float actPrice1; //普通会员活动价
+    private Date beginTime; //活动开始时间
+    private Date endTime; //活动结束时间
+    private String endTimeStr;	//活动结束时间字符串
+    private Integer actFlag; //是否活动商品:1是,空或0不是
+    private Integer actType;	// 活动类型 1推荐热销、2推荐上新、3团购促销  由于原来设计以及固定死了
+    //private Date onlineTime; // 上架时间
+    //private Date downlineTime; // 下架时间
+    private Integer shopIndexModuleID; // 商品所属供应商主页模块ID
+    private Integer displayOnCRMFlag;
+    private String moduleName; // 商品所属供应商主页模块名称
+    private String priceInfo;//价格信息(价格、文案,价格等级)
+    private String priceType;//价格类型(0价格、1文案,2价格等级)
+    private String category;	// 分类
+    private String freePostFlag = "0";//是否包邮 0包邮 1不包邮
+    //private Float costPrice;//固定成本价
+    //private Float costProportional;//比例成本价
+    //private String costCheckFlag; //成本价计算选中标志
+    private String company;
+    private String actionStr;
+    private String skill;
+    private String part;
+    private String featuredFlag;//供应商主推商品标志 0否 1是
+    private Integer featuredSortIndex;//供应商主推商品排序
+    private String priceStr; // 价格展示信息
+    private Integer bigTypeId; // 一级分类Id
+    private String cmbeanFlag;//是否采美豆专区商品(0 否,1 是
+    private Integer cmbeanPrice;//采美豆专区价格(采美豆)
+    private Integer cmbeanSort;//采美豆专区排序(值越大越前)
+    private String shopName;//商品供应商名称
+    private boolean isVisitor;//是否是游客(未注册以及从未下过单的普通用户)
+    private String ladderPriceFlag; //启用阶梯价格标识 0否 1是
+    private Integer minLadderBuyNumber; //最小阶梯价格购买量
+    private String giftFlag;//是否可以参加赠送(0:无法参加,1:可以参加赠送,2:已参加过赠送)
+    private Integer shopStatus;//供应商状态
+    private String visibility; //3:高可见度,2:中可见度,1:低可见度
+    private String surplusTime;//活动剩余时间
+    private String actSort;//活动排序
+    private String[] tagsList;//标签列表
+    private String recommendType;	//相关推荐类型 0自动选择; 1手动推荐
+    private String tags;// 商品标签用逗号隔开
+    private Boolean showfooter;//是否可以购买
+
+    public Integer getProductID() {
+        return productID;
+    }
+
+    public void setProductID(Integer productID) {
+        this.productID = productID;
+    }
+
+    public Integer getBrandID() {
+        return brandID;
+    }
+
+    public void setBrandID(Integer brandID) {
+        this.brandID = brandID;
+    }
+
+    public String getBrandName() {
+        return brandName;
+    }
+
+    public void setBrandName(String brandName) {
+        this.brandName = brandName;
+    }
+
+    public Integer getTinyTypeID() {
+        return tinyTypeID;
+    }
+
+    public void setTinyTypeID(Integer tinyTypeID) {
+        this.tinyTypeID = tinyTypeID;
+    }
+
+    public Integer getSelfTypeID() {
+        return selfTypeID;
+    }
+
+    public void setSelfTypeID(Integer selfTypeID) {
+        this.selfTypeID = selfTypeID;
+    }
+
+    public Integer getShopID() {
+        return shopID;
+    }
+
+    public void setShopID(Integer shopID) {
+        this.shopID = shopID;
+    }
+
+    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 getProductTitle() {
+        return productTitle;
+    }
+
+    public void setProductTitle(String productTitle) {
+        this.productTitle = productTitle;
+    }
+
+    public String getSearchKey() {
+        return searchKey;
+    }
+
+    public void setSearchKey(String searchKey) {
+        this.searchKey = searchKey;
+    }
+
+    public String getPrecisehKey() {
+        return precisehKey;
+    }
+
+    public void setPrecisehKey(String precisehKey) {
+        this.precisehKey = precisehKey;
+    }
+
+    public Integer getLowestUserLevelID() {
+        return lowestUserLevelID;
+    }
+
+    public void setLowestUserLevelID(Integer lowestUserLevelID) {
+        this.lowestUserLevelID = lowestUserLevelID;
+    }
+
+    public Float getPrice0() {
+        return price0;
+    }
+
+    public void setPrice0(Float price0) {
+        this.price0 = price0;
+    }
+
+    public String getPrice0Grade() {
+        return price0Grade;
+    }
+
+    public void setPrice0Grade(String price0Grade) {
+        this.price0Grade = price0Grade;
+    }
+
+    public String getPrice0Text() {
+        return price0Text;
+    }
+
+    public void setPrice0Text(String price0Text) {
+        this.price0Text = price0Text;
+    }
+
+    public String getPrice0TextFlag() {
+        return price0TextFlag;
+    }
+
+    public void setPrice0TextFlag(String price0TextFlag) {
+        this.price0TextFlag = price0TextFlag;
+    }
+
+    public Float getPrice1() {
+        return price1;
+    }
+
+    public void setPrice1(Float price1) {
+        this.price1 = price1;
+    }
+
+    public String getPrice1Grade() {
+        return price1Grade;
+    }
+
+    public void setPrice1Grade(String price1Grade) {
+        this.price1Grade = price1Grade;
+    }
+
+    public String getPrice1Text() {
+        return price1Text;
+    }
+
+    public void setPrice1Text(String price1Text) {
+        this.price1Text = price1Text;
+    }
+
+    public String getPrice1TextFlag() {
+        return price1TextFlag;
+    }
+
+    public void setPrice1TextFlag(String price1TextFlag) {
+        this.price1TextFlag = price1TextFlag;
+    }
+
+    public Float getPrice8() {
+        return price8;
+    }
+
+    public void setPrice8(Float price8) {
+        this.price8 = price8;
+    }
+
+    public String getPrice8Grade() {
+        return price8Grade;
+    }
+
+    public void setPrice8Grade(String price8Grade) {
+        this.price8Grade = price8Grade;
+    }
+
+    public String getPrice8Text() {
+        return price8Text;
+    }
+
+    public void setPrice8Text(String price8Text) {
+        this.price8Text = price8Text;
+    }
+
+    public String getPrice8TextFlag() {
+        return price8TextFlag;
+    }
+
+    public void setPrice8TextFlag(String price8TextFlag) {
+        this.price8TextFlag = price8TextFlag;
+    }
+
+    public Float getFee() {
+        return fee;
+    }
+
+    public void setFee(Float fee) {
+        this.fee = fee;
+    }
+
+    public Integer getStock() {
+        return stock;
+    }
+
+    public void setStock(Integer stock) {
+        this.stock = stock;
+    }
+
+    public String getHasSkuFlag() {
+        return hasSkuFlag;
+    }
+
+    public void setHasSkuFlag(String hasSkuFlag) {
+        this.hasSkuFlag = hasSkuFlag;
+    }
+
+    public String getMainImage() {
+        return mainImage;
+    }
+
+    public void setMainImage(String mainImage) {
+        this.mainImage = mainImage;
+    }
+
+    public String getPropertiesInfo() {
+        return propertiesInfo;
+    }
+
+    public void setPropertiesInfo(String propertiesInfo) {
+        this.propertiesInfo = propertiesInfo;
+    }
+
+    public String getAddTime() {
+        return addTime;
+    }
+
+    public void setAddTime(String addTime) {
+        this.addTime = addTime;
+    }
+
+    public String getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(String updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public Integer getSellNumber() {
+        return sellNumber;
+    }
+
+    public void setSellNumber(Integer sellNumber) {
+        this.sellNumber = sellNumber;
+    }
+
+    public Integer getWeekSellNumber() {
+        return weekSellNumber;
+    }
+
+    public void setWeekSellNumber(Integer weekSellNumber) {
+        this.weekSellNumber = weekSellNumber;
+    }
+
+    public String getBeforeValidFlag() {
+        return beforeValidFlag;
+    }
+
+    public void setBeforeValidFlag(String beforeValidFlag) {
+        this.beforeValidFlag = beforeValidFlag;
+    }
+
+    public Integer getFavoriteTimes() {
+        return favoriteTimes;
+    }
+
+    public void setFavoriteTimes(Integer favoriteTimes) {
+        this.favoriteTimes = favoriteTimes;
+    }
+
+    public Float getCommentScore() {
+        return commentScore;
+    }
+
+    public void setCommentScore(Float commentScore) {
+        this.commentScore = commentScore;
+    }
+
+    public Integer getCommentTimes() {
+        return commentTimes;
+    }
+
+    public void setCommentTimes(Integer commentTimes) {
+        this.commentTimes = commentTimes;
+    }
+
+    public String getSelfRecommendFlag() {
+        return selfRecommendFlag;
+    }
+
+    public void setSelfRecommendFlag(String selfRecommendFlag) {
+        this.selfRecommendFlag = selfRecommendFlag;
+    }
+
+    public String getSysRecommendFlag() {
+        return sysRecommendFlag;
+    }
+
+    public void setSysRecommendFlag(String sysRecommendFlag) {
+        this.sysRecommendFlag = sysRecommendFlag;
+    }
+
+    public Integer getSortIndex() {
+        return sortIndex;
+    }
+
+    public void setSortIndex(Integer sortIndex) {
+        this.sortIndex = sortIndex;
+    }
+
+    public String getProductCode() {
+        return productCode;
+    }
+
+    public void setProductCode(String productCode) {
+        this.productCode = productCode;
+    }
+
+    public Float getRate1() {
+        return rate1;
+    }
+
+    public void setRate1(Float rate1) {
+        this.rate1 = rate1;
+    }
+
+    public Float getRate2() {
+        return rate2;
+    }
+
+    public void setRate2(Float rate2) {
+        this.rate2 = rate2;
+    }
+
+    public String getUnit() {
+        return unit;
+    }
+
+    public void setUnit(String unit) {
+        this.unit = unit;
+    }
+
+    public String getSynToERPFlag() {
+        return synToERPFlag;
+    }
+
+    public void setSynToERPFlag(String synToERPFlag) {
+        this.synToERPFlag = synToERPFlag;
+    }
+
+    public String getAllAreaFlag() {
+        return allAreaFlag;
+    }
+
+    public void setAllAreaFlag(String allAreaFlag) {
+        this.allAreaFlag = allAreaFlag;
+    }
+
+    public String getProvinceIDs() {
+        return provinceIDs;
+    }
+
+    public void setProvinceIDs(String provinceIDs) {
+        this.provinceIDs = provinceIDs;
+    }
+
+    public String getVirtualFlag() {
+        return virtualFlag;
+    }
+
+    public void setVirtualFlag(String virtualFlag) {
+        this.virtualFlag = virtualFlag;
+    }
+
+    public String getByFlag() {
+        return byFlag;
+    }
+
+    public void setByFlag(String byFlag) {
+        this.byFlag = byFlag;
+    }
+
+    public Integer getNormalProductFlag() {
+        return normalProductFlag;
+    }
+
+    public void setNormalProductFlag(Integer normalProductFlag) {
+        this.normalProductFlag = normalProductFlag;
+    }
+
+    public Integer getWholeSaleProductFlag() {
+        return wholeSaleProductFlag;
+    }
+
+    public void setWholeSaleProductFlag(Integer wholeSaleProductFlag) {
+        this.wholeSaleProductFlag = wholeSaleProductFlag;
+    }
+
+    public Integer getPromotionProductFlag() {
+        return promotionProductFlag;
+    }
+
+    public void setPromotionProductFlag(Integer promotionProductFlag) {
+        this.promotionProductFlag = promotionProductFlag;
+    }
+
+    public Integer getGroupBuyProductFlag() {
+        return groupBuyProductFlag;
+    }
+
+    public void setGroupBuyProductFlag(Integer groupBuyProductFlag) {
+        this.groupBuyProductFlag = groupBuyProductFlag;
+    }
+
+    public Integer getStep() {
+        return step;
+    }
+
+    public void setStep(Integer step) {
+        this.step = step;
+    }
+
+    public String getSpeCommisionFlag() {
+        return speCommisionFlag;
+    }
+
+    public void setSpeCommisionFlag(String speCommisionFlag) {
+        this.speCommisionFlag = speCommisionFlag;
+    }
+
+    public Float getSpeCommision() {
+        return speCommision;
+    }
+
+    public void setSpeCommision(Float speCommision) {
+        this.speCommision = speCommision;
+    }
+
+    public String getVideourl() {
+        return videourl;
+    }
+
+    public void setVideourl(String videourl) {
+        this.videourl = videourl;
+    }
+
+    public String getProps() {
+        return props;
+    }
+
+    public void setProps(String props) {
+        this.props = props;
+    }
+
+    public String getProviders() {
+        return providers;
+    }
+
+    public void setProviders(String providers) {
+        this.providers = providers;
+    }
+
+    public Float getServiceCommissionRatio() {
+        return serviceCommissionRatio;
+    }
+
+    public void setServiceCommissionRatio(Float serviceCommissionRatio) {
+        this.serviceCommissionRatio = serviceCommissionRatio;
+    }
+
+    public Float getReCommissionRatio() {
+        return reCommissionRatio;
+    }
+
+    public void setReCommissionRatio(Float reCommissionRatio) {
+        this.reCommissionRatio = reCommissionRatio;
+    }
+
+    public String getPushToERPName() {
+        return pushToERPName;
+    }
+
+    public void setPushToERPName(String pushToERPName) {
+        this.pushToERPName = pushToERPName;
+    }
+
+    public Integer getProdBeans() {
+        return prodBeans;
+    }
+
+    public void setProdBeans(Integer prodBeans) {
+        this.prodBeans = prodBeans;
+    }
+
+    public Integer getUseBeansFlag() {
+        return useBeansFlag;
+    }
+
+    public void setUseBeansFlag(Integer useBeansFlag) {
+        this.useBeansFlag = useBeansFlag;
+    }
+
+    public Integer getPrivateFlag() {
+        return privateFlag;
+    }
+
+    public void setPrivateFlag(Integer privateFlag) {
+        this.privateFlag = privateFlag;
+    }
+
+    public String getInvisibleServiceProviderIDs() {
+        return invisibleServiceProviderIDs;
+    }
+
+    public void setInvisibleServiceProviderIDs(String invisibleServiceProviderIDs) {
+        this.invisibleServiceProviderIDs = invisibleServiceProviderIDs;
+    }
+
+    public Date getBeginTime() {
+        return beginTime;
+    }
+
+    public void setBeginTime(Date beginTime) {
+        this.beginTime = beginTime;
+    }
+
+    public Date getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(Date endTime) {
+        this.endTime = endTime;
+    }
+
+    public String getEndTimeStr() {
+        return endTimeStr;
+    }
+
+    public void setEndTimeStr(String endTimeStr) {
+        this.endTimeStr = endTimeStr;
+    }
+
+    public Integer getActFlag() {
+        return actFlag;
+    }
+
+    public void setActFlag(Integer actFlag) {
+        this.actFlag = actFlag;
+    }
+
+    public Integer getActType() {
+        return actType;
+    }
+
+    public void setActType(Integer actType) {
+        this.actType = actType;
+    }
+
+    public Integer getShopIndexModuleID() {
+        return shopIndexModuleID;
+    }
+
+    public void setShopIndexModuleID(Integer shopIndexModuleID) {
+        this.shopIndexModuleID = shopIndexModuleID;
+    }
+
+    public Integer getDisplayOnCRMFlag() {
+        return displayOnCRMFlag;
+    }
+
+    public void setDisplayOnCRMFlag(Integer displayOnCRMFlag) {
+        this.displayOnCRMFlag = displayOnCRMFlag;
+    }
+
+    public String getModuleName() {
+        return moduleName;
+    }
+
+    public void setModuleName(String moduleName) {
+        this.moduleName = moduleName;
+    }
+
+    public String getPriceInfo() {
+        return priceInfo;
+    }
+
+    public void setPriceInfo(String priceInfo) {
+        this.priceInfo = priceInfo;
+    }
+
+    public String getPriceType() {
+        return priceType;
+    }
+
+    public void setPriceType(String priceType) {
+        this.priceType = priceType;
+    }
+
+    public String getCategory() {
+        return category;
+    }
+
+    public void setCategory(String category) {
+        this.category = category;
+    }
+
+    public String getFreePostFlag() {
+        return freePostFlag;
+    }
+
+    public void setFreePostFlag(String freePostFlag) {
+        this.freePostFlag = freePostFlag;
+    }
+
+    public String getCompany() {
+        return company;
+    }
+
+    public void setCompany(String company) {
+        this.company = company;
+    }
+
+    public String getActionStr() {
+        return actionStr;
+    }
+
+    public void setActionStr(String actionStr) {
+        this.actionStr = actionStr;
+    }
+
+    public String getSkill() {
+        return skill;
+    }
+
+    public void setSkill(String skill) {
+        this.skill = skill;
+    }
+
+    public String getPart() {
+        return part;
+    }
+
+    public void setPart(String part) {
+        this.part = part;
+    }
+
+    public String getFeaturedFlag() {
+        return featuredFlag;
+    }
+
+    public void setFeaturedFlag(String featuredFlag) {
+        this.featuredFlag = featuredFlag;
+    }
+
+    public Integer getFeaturedSortIndex() {
+        return featuredSortIndex;
+    }
+
+    public void setFeaturedSortIndex(Integer featuredSortIndex) {
+        this.featuredSortIndex = featuredSortIndex;
+    }
+
+    public String getPriceStr() {
+        return priceStr;
+    }
+
+    public void setPriceStr(String priceStr) {
+        this.priceStr = priceStr;
+    }
+
+    public Integer getBigTypeId() {
+        return bigTypeId;
+    }
+
+    public void setBigTypeId(Integer bigTypeId) {
+        this.bigTypeId = bigTypeId;
+    }
+
+    public String getCmbeanFlag() {
+        return cmbeanFlag;
+    }
+
+    public void setCmbeanFlag(String cmbeanFlag) {
+        this.cmbeanFlag = cmbeanFlag;
+    }
+
+    public Integer getCmbeanPrice() {
+        return cmbeanPrice;
+    }
+
+    public void setCmbeanPrice(Integer cmbeanPrice) {
+        this.cmbeanPrice = cmbeanPrice;
+    }
+
+    public Integer getCmbeanSort() {
+        return cmbeanSort;
+    }
+
+    public void setCmbeanSort(Integer cmbeanSort) {
+        this.cmbeanSort = cmbeanSort;
+    }
+
+    public String getShopName() {
+        return shopName;
+    }
+
+    public void setShopName(String shopName) {
+        this.shopName = shopName;
+    }
+
+    public boolean isVisitor() {
+        return isVisitor;
+    }
+
+    public void setVisitor(boolean visitor) {
+        isVisitor = visitor;
+    }
+
+    public String getLadderPriceFlag() {
+        return ladderPriceFlag;
+    }
+
+    public void setLadderPriceFlag(String ladderPriceFlag) {
+        this.ladderPriceFlag = ladderPriceFlag;
+    }
+
+    public Integer getMinLadderBuyNumber() {
+        return minLadderBuyNumber;
+    }
+
+    public void setMinLadderBuyNumber(Integer minLadderBuyNumber) {
+        this.minLadderBuyNumber = minLadderBuyNumber;
+    }
+
+    public String getGiftFlag() {
+        return giftFlag;
+    }
+
+    public void setGiftFlag(String giftFlag) {
+        this.giftFlag = giftFlag;
+    }
+
+    public Integer getShopStatus() {
+        return shopStatus;
+    }
+
+    public void setShopStatus(Integer shopStatus) {
+        this.shopStatus = shopStatus;
+    }
+
+    public String getVisibility() {
+        return visibility;
+    }
+
+    public void setVisibility(String visibility) {
+        this.visibility = visibility;
+    }
+
+    public String getSurplusTime() {
+        return surplusTime;
+    }
+
+    public void setSurplusTime(String surplusTime) {
+        this.surplusTime = surplusTime;
+    }
+
+    public String getActSort() {
+        return actSort;
+    }
+
+    public void setActSort(String actSort) {
+        this.actSort = actSort;
+    }
+
+    public String[] getTagsList() {
+        return tagsList;
+    }
+
+    public void setTagsList(String[] tagsList) {
+        this.tagsList = tagsList;
+    }
+
+    public String getRecommendType() {
+        return recommendType;
+    }
+
+    public void setRecommendType(String recommendType) {
+        this.recommendType = recommendType;
+    }
+
+    public String getTags() {
+        return tags;
+    }
+
+    public void setTags(String tags) {
+        this.tags = tags;
+    }
+
+    public Boolean getShowfooter() {
+        return showfooter;
+    }
+
+    public void setShowfooter(Boolean showfooter) {
+        this.showfooter = showfooter;
+    }
+}

+ 105 - 0
src/main/java/com/caimei/entity/ProductDetailInfo.java

@@ -0,0 +1,105 @@
+package com.caimei.entity;
+
+import java.io.Serializable;
+
+public class ProductDetailInfo implements Serializable {
+    private Integer productDetailInfoID;
+    private Integer productID;  //商品Id
+    private String propValueAlias;
+    private String propValueImages;
+    private String detailInfo;     //商品详情信息
+    private String detailInfoTxt;
+    private String seoTitle;
+    private String seoKeyword;
+    private String seoDes;
+    private String serviceInfo;    //服务详情
+    private String orderInfo;      //订购方案
+
+    public Integer getProductDetailInfoID() {
+        return productDetailInfoID;
+    }
+
+    public void setProductDetailInfoID(Integer productDetailInfoID) {
+        this.productDetailInfoID = productDetailInfoID;
+    }
+
+    public Integer getProductID() {
+        return productID;
+    }
+
+    public void setProductID(Integer productID) {
+        this.productID = productID;
+    }
+
+    public String getPropValueAlias() {
+        return propValueAlias;
+    }
+
+    public void setPropValueAlias(String propValueAlias) {
+        this.propValueAlias = propValueAlias;
+    }
+
+    public String getPropValueImages() {
+        return propValueImages;
+    }
+
+    public void setPropValueImages(String propValueImages) {
+        this.propValueImages = propValueImages;
+    }
+
+    public String getDetailInfo() {
+        return detailInfo;
+    }
+
+    public void setDetailInfo(String detailInfo) {
+        this.detailInfo = detailInfo;
+    }
+
+    public String getDetailInfoTxt() {
+        return detailInfoTxt;
+    }
+
+    public void setDetailInfoTxt(String detailInfoTxt) {
+        this.detailInfoTxt = detailInfoTxt;
+    }
+
+    public String getSeoTitle() {
+        return seoTitle;
+    }
+
+    public void setSeoTitle(String seoTitle) {
+        this.seoTitle = seoTitle;
+    }
+
+    public String getSeoKeyword() {
+        return seoKeyword;
+    }
+
+    public void setSeoKeyword(String seoKeyword) {
+        this.seoKeyword = seoKeyword;
+    }
+
+    public String getSeoDes() {
+        return seoDes;
+    }
+
+    public void setSeoDes(String seoDes) {
+        this.seoDes = seoDes;
+    }
+
+    public String getServiceInfo() {
+        return serviceInfo;
+    }
+
+    public void setServiceInfo(String serviceInfo) {
+        this.serviceInfo = serviceInfo;
+    }
+
+    public String getOrderInfo() {
+        return orderInfo;
+    }
+
+    public void setOrderInfo(String orderInfo) {
+        this.orderInfo = orderInfo;
+    }
+}

+ 69 - 0
src/main/java/com/caimei/entity/ProductImage.java

@@ -0,0 +1,69 @@
+package com.caimei.entity;
+
+import java.io.Serializable;
+
+public class ProductImage implements Serializable {
+    private Integer productImageID; //
+    private Integer productID; //商品Id
+    private Integer shopID; //商品对应供应商Id
+    private String addTime; //添加时间
+    private String image; //图片
+    private String mainFlag; //是否主图:1是,空或0不是
+    private Integer sortIndex; //排序值
+
+    public Integer getProductImageID() {
+        return productImageID;
+    }
+
+    public void setProductImageID(Integer productImageID) {
+        this.productImageID = productImageID;
+    }
+
+    public Integer getProductID() {
+        return productID;
+    }
+
+    public void setProductID(Integer productID) {
+        this.productID = productID;
+    }
+
+    public Integer getShopID() {
+        return shopID;
+    }
+
+    public void setShopID(Integer shopID) {
+        this.shopID = shopID;
+    }
+
+    public String getAddTime() {
+        return addTime;
+    }
+
+    public void setAddTime(String addTime) {
+        this.addTime = addTime;
+    }
+
+    public String getImage() {
+        return image;
+    }
+
+    public void setImage(String image) {
+        this.image = image;
+    }
+
+    public String getMainFlag() {
+        return mainFlag;
+    }
+
+    public void setMainFlag(String mainFlag) {
+        this.mainFlag = mainFlag;
+    }
+
+    public Integer getSortIndex() {
+        return sortIndex;
+    }
+
+    public void setSortIndex(Integer sortIndex) {
+        this.sortIndex = sortIndex;
+    }
+}

+ 754 - 0
src/main/java/com/caimei/entity/Shop.java

@@ -0,0 +1,754 @@
+package com.caimei.entity;
+
+import java.io.Serializable;
+import java.util.List;
+
+public class Shop implements Serializable {
+    private Integer shopID; //
+    private Integer userID; //
+    private String name; //
+    private String sname;//简称
+    private String nameEn; //
+    private String site; //
+    private String logo; //
+    private Float level; //
+    private Float score; //
+    private Integer productCount; //
+    private String legalPerson; //
+    private String businessLicense; //
+    private String businessLicenseImage; //
+    private String taxCertificate; //
+    private String taxCertificateImage; //
+    private Integer townID; //
+    private Integer provinceID;
+    private Integer cityID;
+    private String address; //
+    private Float registeredCapital; //
+    private String nature; //
+    private Float 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; //
+    private String contractMobile1; //
+    private String contractQQ1; //
+    private String wechat1; //
+    private String contractEmail1; //
+    private String linkMan2; //
+    private String duty2; //
+    private String contractPhone2; //
+    private String contractMobile2; //
+    private String contractQQ2; //
+    private String wechat2; //
+    private String contractEmail2; //
+    private String scope; //
+    private String info; //
+    private String productDesc; //主打系列产品介绍
+    private Double lng = 0d; //
+    private Double lat = 0d; //
+    private String addTime; //
+    private String auditStatus; //
+    private String auditTime; //
+    private String auditNote; //
+    private Integer favoriteTimes = 0; //
+    private String validFlag; //
+    private String payFlag1; //
+    private String auditFlag1; //
+    private String payFlag2; //
+    private String auditFlag2; //
+    private String payFlag3; //
+    private String auditFlag3; //
+    private String note; //
+    private Integer status; //
+    private Integer sortIndex; //
+    private Float rate1; //
+    private Float rate2; //
+    private String masterFlag; //
+    private String erpFlag; //
+    private String shopSecret; //
+    private String masterLogo; //
+    private String cooperateFlag; //
+    private String businessScope; //
+    private Integer bail; // 是否已缴纳保证金(0 没有,1 有)
+    private String mainpro;
+    private Integer shopScore; // 供应商评分
+    private String[] businessScopeArray; // 经营范围的数组形式
+    private String socialCreditCode; // 统一社会信用代码
+    private String firstShopType;
+    private String secondShopType;
+    private String medicalPracticeLicenseImg1;
+    private String medicalPracticeLicenseImg2;
+    private String medicalPracticeLicenseImg3;
+    private Double totalPrice;
+    private List<CmOrganizeProducts> productsList;  //商品集合
+    private Boolean checked = false; //勾选状态
+    private Integer checkedCount = 0;  //商铺下商品选中数量
+
+    public Integer getShopID() {
+        return shopID;
+    }
+
+    public void setShopID(Integer shopID) {
+        this.shopID = shopID;
+    }
+
+    public Integer getUserID() {
+        return userID;
+    }
+
+    public void setUserID(Integer userID) {
+        this.userID = userID;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getSname() {
+        return sname;
+    }
+
+    public void setSname(String sname) {
+        this.sname = sname;
+    }
+
+    public String getNameEn() {
+        return nameEn;
+    }
+
+    public void setNameEn(String nameEn) {
+        this.nameEn = nameEn;
+    }
+
+    public String getSite() {
+        return site;
+    }
+
+    public void setSite(String site) {
+        this.site = site;
+    }
+
+    public String getLogo() {
+        return logo;
+    }
+
+    public void setLogo(String logo) {
+        this.logo = logo;
+    }
+
+    public Float getLevel() {
+        return level;
+    }
+
+    public void setLevel(Float level) {
+        this.level = level;
+    }
+
+    public Float getScore() {
+        return score;
+    }
+
+    public void setScore(Float score) {
+        this.score = score;
+    }
+
+    public Integer getProductCount() {
+        return productCount;
+    }
+
+    public void setProductCount(Integer productCount) {
+        this.productCount = productCount;
+    }
+
+    public String getLegalPerson() {
+        return legalPerson;
+    }
+
+    public void setLegalPerson(String legalPerson) {
+        this.legalPerson = legalPerson;
+    }
+
+    public String getBusinessLicense() {
+        return businessLicense;
+    }
+
+    public void setBusinessLicense(String businessLicense) {
+        this.businessLicense = businessLicense;
+    }
+
+    public String getBusinessLicenseImage() {
+        return businessLicenseImage;
+    }
+
+    public void setBusinessLicenseImage(String businessLicenseImage) {
+        this.businessLicenseImage = businessLicenseImage;
+    }
+
+    public String getTaxCertificate() {
+        return taxCertificate;
+    }
+
+    public void setTaxCertificate(String taxCertificate) {
+        this.taxCertificate = taxCertificate;
+    }
+
+    public String getTaxCertificateImage() {
+        return taxCertificateImage;
+    }
+
+    public void setTaxCertificateImage(String taxCertificateImage) {
+        this.taxCertificateImage = taxCertificateImage;
+    }
+
+    public Integer getTownID() {
+        return townID;
+    }
+
+    public void setTownID(Integer townID) {
+        this.townID = townID;
+    }
+
+    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 String getAddress() {
+        return address;
+    }
+
+    public void setAddress(String address) {
+        this.address = address;
+    }
+
+    public Float getRegisteredCapital() {
+        return registeredCapital;
+    }
+
+    public void setRegisteredCapital(Float registeredCapital) {
+        this.registeredCapital = registeredCapital;
+    }
+
+    public String getNature() {
+        return nature;
+    }
+
+    public void setNature(String nature) {
+        this.nature = nature;
+    }
+
+    public Float getTurnover() {
+        return turnover;
+    }
+
+    public void setTurnover(Float turnover) {
+        this.turnover = turnover;
+    }
+
+    public String getLinkMan() {
+        return linkMan;
+    }
+
+    public void setLinkMan(String linkMan) {
+        this.linkMan = linkMan;
+    }
+
+    public String getContractPhone() {
+        return contractPhone;
+    }
+
+    public void setContractPhone(String contractPhone) {
+        this.contractPhone = contractPhone;
+    }
+
+    public String getContractMobile() {
+        return contractMobile;
+    }
+
+    public void setContractMobile(String contractMobile) {
+        this.contractMobile = contractMobile;
+    }
+
+    public String getFax() {
+        return fax;
+    }
+
+    public void setFax(String fax) {
+        this.fax = fax;
+    }
+
+    public String getZipCode() {
+        return zipCode;
+    }
+
+    public void setZipCode(String zipCode) {
+        this.zipCode = zipCode;
+    }
+
+    public String getLinkMan1() {
+        return linkMan1;
+    }
+
+    public void setLinkMan1(String linkMan1) {
+        this.linkMan1 = linkMan1;
+    }
+
+    public String getDuty1() {
+        return duty1;
+    }
+
+    public void setDuty1(String duty1) {
+        this.duty1 = duty1;
+    }
+
+    public String getContractPhone1() {
+        return contractPhone1;
+    }
+
+    public void setContractPhone1(String contractPhone1) {
+        this.contractPhone1 = contractPhone1;
+    }
+
+    public String getContractMobile1() {
+        return contractMobile1;
+    }
+
+    public void setContractMobile1(String contractMobile1) {
+        this.contractMobile1 = contractMobile1;
+    }
+
+    public String getContractQQ1() {
+        return contractQQ1;
+    }
+
+    public void setContractQQ1(String contractQQ1) {
+        this.contractQQ1 = contractQQ1;
+    }
+
+    public String getWechat1() {
+        return wechat1;
+    }
+
+    public void setWechat1(String wechat1) {
+        this.wechat1 = wechat1;
+    }
+
+    public String getContractEmail1() {
+        return contractEmail1;
+    }
+
+    public void setContractEmail1(String contractEmail1) {
+        this.contractEmail1 = contractEmail1;
+    }
+
+    public String getLinkMan2() {
+        return linkMan2;
+    }
+
+    public void setLinkMan2(String linkMan2) {
+        this.linkMan2 = linkMan2;
+    }
+
+    public String getDuty2() {
+        return duty2;
+    }
+
+    public void setDuty2(String duty2) {
+        this.duty2 = duty2;
+    }
+
+    public String getContractPhone2() {
+        return contractPhone2;
+    }
+
+    public void setContractPhone2(String contractPhone2) {
+        this.contractPhone2 = contractPhone2;
+    }
+
+    public String getContractMobile2() {
+        return contractMobile2;
+    }
+
+    public void setContractMobile2(String contractMobile2) {
+        this.contractMobile2 = contractMobile2;
+    }
+
+    public String getContractQQ2() {
+        return contractQQ2;
+    }
+
+    public void setContractQQ2(String contractQQ2) {
+        this.contractQQ2 = contractQQ2;
+    }
+
+    public String getWechat2() {
+        return wechat2;
+    }
+
+    public void setWechat2(String wechat2) {
+        this.wechat2 = wechat2;
+    }
+
+    public String getContractEmail2() {
+        return contractEmail2;
+    }
+
+    public void setContractEmail2(String contractEmail2) {
+        this.contractEmail2 = contractEmail2;
+    }
+
+    public String getScope() {
+        return scope;
+    }
+
+    public void setScope(String scope) {
+        this.scope = scope;
+    }
+
+    public String getInfo() {
+        return info;
+    }
+
+    public void setInfo(String info) {
+        this.info = info;
+    }
+
+    public String getProductDesc() {
+        return productDesc;
+    }
+
+    public void setProductDesc(String productDesc) {
+        this.productDesc = productDesc;
+    }
+
+    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 String getAuditStatus() {
+        return auditStatus;
+    }
+
+    public void setAuditStatus(String auditStatus) {
+        this.auditStatus = auditStatus;
+    }
+
+    public String getAuditTime() {
+        return auditTime;
+    }
+
+    public void setAuditTime(String auditTime) {
+        this.auditTime = auditTime;
+    }
+
+    public String getAuditNote() {
+        return auditNote;
+    }
+
+    public void setAuditNote(String auditNote) {
+        this.auditNote = auditNote;
+    }
+
+    public Integer getFavoriteTimes() {
+        return favoriteTimes;
+    }
+
+    public void setFavoriteTimes(Integer favoriteTimes) {
+        this.favoriteTimes = favoriteTimes;
+    }
+
+    public String getValidFlag() {
+        return validFlag;
+    }
+
+    public void setValidFlag(String validFlag) {
+        this.validFlag = validFlag;
+    }
+
+    public String getPayFlag1() {
+        return payFlag1;
+    }
+
+    public void setPayFlag1(String payFlag1) {
+        this.payFlag1 = payFlag1;
+    }
+
+    public String getAuditFlag1() {
+        return auditFlag1;
+    }
+
+    public void setAuditFlag1(String auditFlag1) {
+        this.auditFlag1 = auditFlag1;
+    }
+
+    public String getPayFlag2() {
+        return payFlag2;
+    }
+
+    public void setPayFlag2(String payFlag2) {
+        this.payFlag2 = payFlag2;
+    }
+
+    public String getAuditFlag2() {
+        return auditFlag2;
+    }
+
+    public void setAuditFlag2(String auditFlag2) {
+        this.auditFlag2 = auditFlag2;
+    }
+
+    public String getPayFlag3() {
+        return payFlag3;
+    }
+
+    public void setPayFlag3(String payFlag3) {
+        this.payFlag3 = payFlag3;
+    }
+
+    public String getAuditFlag3() {
+        return auditFlag3;
+    }
+
+    public void setAuditFlag3(String auditFlag3) {
+        this.auditFlag3 = auditFlag3;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public void setNote(String note) {
+        this.note = note;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
+    public Integer getSortIndex() {
+        return sortIndex;
+    }
+
+    public void setSortIndex(Integer sortIndex) {
+        this.sortIndex = sortIndex;
+    }
+
+    public Float getRate1() {
+        return rate1;
+    }
+
+    public void setRate1(Float rate1) {
+        this.rate1 = rate1;
+    }
+
+    public Float getRate2() {
+        return rate2;
+    }
+
+    public void setRate2(Float rate2) {
+        this.rate2 = rate2;
+    }
+
+    public String getMasterFlag() {
+        return masterFlag;
+    }
+
+    public void setMasterFlag(String masterFlag) {
+        this.masterFlag = masterFlag;
+    }
+
+    public String getErpFlag() {
+        return erpFlag;
+    }
+
+    public void setErpFlag(String erpFlag) {
+        this.erpFlag = erpFlag;
+    }
+
+    public String getShopSecret() {
+        return shopSecret;
+    }
+
+    public void setShopSecret(String shopSecret) {
+        this.shopSecret = shopSecret;
+    }
+
+    public String getMasterLogo() {
+        return masterLogo;
+    }
+
+    public void setMasterLogo(String masterLogo) {
+        this.masterLogo = masterLogo;
+    }
+
+    public String getCooperateFlag() {
+        return cooperateFlag;
+    }
+
+    public void setCooperateFlag(String cooperateFlag) {
+        this.cooperateFlag = cooperateFlag;
+    }
+
+    public String getBusinessScope() {
+        return businessScope;
+    }
+
+    public void setBusinessScope(String businessScope) {
+        this.businessScope = businessScope;
+    }
+
+    public Integer getBail() {
+        return bail;
+    }
+
+    public void setBail(Integer bail) {
+        this.bail = bail;
+    }
+
+    public String getMainpro() {
+        return mainpro;
+    }
+
+    public void setMainpro(String mainpro) {
+        this.mainpro = mainpro;
+    }
+
+    public Integer getShopScore() {
+        return shopScore;
+    }
+
+    public void setShopScore(Integer shopScore) {
+        this.shopScore = shopScore;
+    }
+
+    public String[] getBusinessScopeArray() {
+        return businessScopeArray;
+    }
+
+    public void setBusinessScopeArray(String[] businessScopeArray) {
+        this.businessScopeArray = businessScopeArray;
+    }
+
+    public String getSocialCreditCode() {
+        return socialCreditCode;
+    }
+
+    public void setSocialCreditCode(String socialCreditCode) {
+        this.socialCreditCode = socialCreditCode;
+    }
+
+    public String getFirstShopType() {
+        return firstShopType;
+    }
+
+    public void setFirstShopType(String firstShopType) {
+        this.firstShopType = firstShopType;
+    }
+
+    public String getSecondShopType() {
+        return secondShopType;
+    }
+
+    public void setSecondShopType(String secondShopType) {
+        this.secondShopType = secondShopType;
+    }
+
+    public String getMedicalPracticeLicenseImg1() {
+        return medicalPracticeLicenseImg1;
+    }
+
+    public void setMedicalPracticeLicenseImg1(String medicalPracticeLicenseImg1) {
+        this.medicalPracticeLicenseImg1 = medicalPracticeLicenseImg1;
+    }
+
+    public String getMedicalPracticeLicenseImg2() {
+        return medicalPracticeLicenseImg2;
+    }
+
+    public void setMedicalPracticeLicenseImg2(String medicalPracticeLicenseImg2) {
+        this.medicalPracticeLicenseImg2 = medicalPracticeLicenseImg2;
+    }
+
+    public String getMedicalPracticeLicenseImg3() {
+        return medicalPracticeLicenseImg3;
+    }
+
+    public void setMedicalPracticeLicenseImg3(String medicalPracticeLicenseImg3) {
+        this.medicalPracticeLicenseImg3 = medicalPracticeLicenseImg3;
+    }
+
+    public List<CmOrganizeProducts> getProductsList() {
+        return productsList;
+    }
+
+    public void setProductsList(List<CmOrganizeProducts> productsList) {
+        this.productsList = productsList;
+    }
+
+    public Double getTotalPrice() {
+        return totalPrice;
+    }
+
+    public void setTotalPrice(Double totalPrice) {
+        this.totalPrice = totalPrice;
+    }
+
+    public Boolean getChecked() {
+        return checked;
+    }
+
+    public void setChecked(Boolean checked) {
+        this.checked = checked;
+    }
+
+    public Integer getCheckedCount() {
+        return checkedCount;
+    }
+
+    public void setCheckedCount(Integer checkedCount) {
+        this.checkedCount = checkedCount;
+    }
+}

+ 98 - 89
src/main/java/com/caimei/entity/WxJsonModel.java

@@ -4,93 +4,102 @@ import com.alibaba.fastjson.JSONObject;
 
 import java.io.Serializable;
 
-public class WxJsonModel implements Serializable{
-	
-	private static final long serialVersionUID = 1L;
-	
-	private String code;  //状态码 1成功 -1失败
-	private String msg;	//提示信息
-	private Object data;		//返回结果
-	
-
-	public static WxJsonModel newInstance() {
-		WxJsonModel jsonModel = new WxJsonModel();
-		return jsonModel.success();
-	}
-
-	public WxJsonModel unLogin() {
-		this.setMsg("请先登录");
-		this.setCode("1002");
-		return this;
-	}
-	
-	public WxJsonModel success(){
-		this.code="1";
-		this.msg="操作成功";
-		return this;
-	}
-	
-	public WxJsonModel success(Object data){
-		this.code="1";
-		this.msg="操作成功";
-		this.data=data;
-		return this;
-	}
-
-	public WxJsonModel success(String msg, Object data){
-		this.code="1";
-		this.msg=msg;
-		this.data=data;
-		return this;
-	}
-
-	public WxJsonModel error(){
-		this.code="-1";
-		this.msg="操作失败";
-		return this;
-	}
-	public WxJsonModel error(String msg){
-		this.code="-1";
-		this.msg=msg;
-		return this;
-	}
-	public WxJsonModel error(String code, String msg){
-		this.code=code;
-		this.msg=msg;
-		return this;
-	}
-
-	public String getCode() {
-		return code;
-	}
-
-	public void setCode(String code) {
-		this.code = code;
-	}
-
-	public String getMsg() {
-		return msg;
-	}
-
-	public void setMsg(String msg) {
-		this.msg = msg;
-	}
-
-	public Object getData() {
-		return data;
-	}
-
-	public void setData(Object data) {
-		this.data = data;
-	}
-
-	@Override
-	public String toString() {
-		return "WxJsonModel [code=" + code + ", msg=" + msg + ", data=" + data + "]";
-	}
-	
-	public String toJsonString() {
-		return JSONObject.toJSONString(this);
-	}
-	
+public class WxJsonModel implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private String code;  //状态码 1成功 -1失败
+    private String msg;    //提示信息
+    private Object data;        //返回结果
+
+
+    public static WxJsonModel newInstance() {
+        WxJsonModel jsonModel = new WxJsonModel();
+        return jsonModel.success();
+    }
+
+    public WxJsonModel unLogin() {
+        this.setMsg("请先登录");
+        this.setCode("1002");
+        return this;
+    }
+
+    public WxJsonModel success() {
+        this.code = "1";
+        this.msg = "操作成功";
+        return this;
+    }
+
+    public WxJsonModel success(Object data) {
+        this.code = "1";
+        this.msg = "操作成功";
+        this.data = data;
+        return this;
+    }
+
+    public WxJsonModel success(String msg, Object data) {
+        this.code = "1";
+        this.msg = msg;
+        this.data = data;
+        return this;
+    }
+
+    public WxJsonModel error() {
+        this.code = "-1";
+        this.msg = "操作失败";
+        return this;
+    }
+
+    public WxJsonModel error(String msg) {
+        this.code = "-1";
+        this.msg = msg;
+        return this;
+    }
+
+    public WxJsonModel error(String code, String msg) {
+        this.code = code;
+        this.msg = msg;
+        return this;
+    }
+
+    public WxJsonModel error(String code, Object data, String msg) {
+        this.code = code;
+        this.msg = msg;
+        this.data = data;
+        return this;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
+    public Object getData() {
+        return data;
+    }
+
+    public void setData(Object data) {
+        this.data = data;
+    }
+
+    @Override
+    public String toString() {
+        return "WxJsonModel [code=" + code + ", msg=" + msg + ", data=" + data + "]";
+    }
+
+    public String toJsonString() {
+        return JSONObject.toJSONString(this);
+    }
+
 }

+ 161 - 0
src/main/java/com/caimei/entity/brand.java

@@ -0,0 +1,161 @@
+package com.caimei.entity;
+
+import java.io.Serializable;
+import java.util.List;
+
+public class brand implements Serializable {
+    private Integer id;
+    private String name;         //品牌名称
+    private String logo;         //品牌logo
+    private String attest;       //认证机构
+    private String url;          //认证网址
+    private String introduction; //品牌介绍
+    private String deviceName;   //产品/设备名称
+    private String model;        //型号
+    private String efficacy;     //功 效
+    private String delFlag;      //删除标记 0 否,其余是
+    private String certificate;  //品牌证书
+    private String certifiedPhoto;  //认证照片
+    private List<hospital> hospitals; //医院信息
+    private Integer sort;  //排序值
+    private String securityLink;   //防伪链接
+
+    public String getSecurityLink() {
+        return securityLink;
+    }
+
+    public void setSecurityLink(String securityLink) {
+        this.securityLink = securityLink;
+    }
+
+    public Integer getSort() {
+        return sort;
+    }
+
+    public void setSort(Integer sort) {
+        this.sort = sort;
+    }
+
+    public String getCertifiedPhoto() {
+        return certifiedPhoto;
+    }
+
+    public void setCertifiedPhoto(String certifiedPhoto) {
+        this.certifiedPhoto = certifiedPhoto;
+    }
+
+    public String getCertificate() {
+        return certificate;
+    }
+
+    public void setCertificate(String certificate) {
+        this.certificate = certificate;
+    }
+
+    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 getLogo() {
+        return logo;
+    }
+
+    public void setLogo(String logo) {
+        this.logo = logo;
+    }
+
+    public String getAttest() {
+        return attest;
+    }
+
+    public void setAttest(String attest) {
+        this.attest = attest;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    public String getIntroduction() {
+        return introduction;
+    }
+
+    public void setIntroduction(String introduction) {
+        this.introduction = introduction;
+    }
+
+    public String getDeviceName() {
+        return deviceName;
+    }
+
+    public void setDeviceName(String deviceName) {
+        this.deviceName = deviceName;
+    }
+
+    public String getModel() {
+        return model;
+    }
+
+    public void setModel(String model) {
+        this.model = model;
+    }
+
+    public String getEfficacy() {
+        return efficacy;
+    }
+
+    public void setEfficacy(String efficacy) {
+        this.efficacy = efficacy;
+    }
+
+    public String getDelFlag() {
+        return delFlag;
+    }
+
+    public void setDelFlag(String delFlag) {
+        this.delFlag = delFlag;
+    }
+
+    public List<hospital> getHospitals() {
+        return hospitals;
+    }
+
+    public void setHospitals(List<hospital> hospitals) {
+        this.hospitals = hospitals;
+    }
+
+    @Override
+    public String toString() {
+        return "brand{" +
+                "id=" + id +
+                ", name='" + name + '\'' +
+                ", logo='" + logo + '\'' +
+                ", attest='" + attest + '\'' +
+                ", url='" + url + '\'' +
+                ", introduction='" + introduction + '\'' +
+                ", deviceName='" + deviceName + '\'' +
+                ", model='" + model + '\'' +
+                ", efficacy='" + efficacy + '\'' +
+                ", delFlag='" + delFlag + '\'' +
+                ", certificate='" + certificate + '\'' +
+                ", certifiedPhoto='" + certifiedPhoto + '\'' +
+                ", hospitals=" + hospitals +
+                '}';
+    }
+}

+ 242 - 0
src/main/java/com/caimei/entity/hospital.java

@@ -0,0 +1,242 @@
+package com.caimei.entity;
+
+import java.io.Serializable;
+import java.util.List;
+
+public class hospital implements Serializable {
+    private Integer id;
+    private String name;                //医院名称
+    private String provinceCityDistrict;//医院地址省市区(地址前部分)
+    private String address;             //医院详细地址
+    private String logo;                //医院logo
+    private String businessLicense;     //营业执照
+    private String practicePermit;      //执业许可证
+    private String environmentalMap1;    //医院环境图1
+    private String environmentalMap2;    //医院环境图2
+    private String environmentalMap3;    //医院环境图...
+    private String environmentalMap4;    //医院环境图
+    private String environmentalMap5;    //医院环境图
+    private String environmentalMap6;    //医院环境图
+    private String environmentalMap7;    //医院环境图
+    private String environmentalMap8;    //医院环境图
+    private String environmentalMap9;    //医院环境图
+    private String environmentalMap10;    //医院环境图
+    private String establishTime;       //成立时间
+    private String introduction;        //医院简介
+    private String delFlag;             //删除标记 0 否,其余是
+    private String creationVip;         //是不是创始会员 1是的, 0不是的
+    private List<brand> brands;         //品牌
+    private Integer sort;  //排序值
+
+    public Integer getSort() {
+        return sort;
+    }
+
+    public void setSort(Integer sort) {
+        this.sort = sort;
+    }
+
+    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 getProvinceCityDistrict() {
+        return provinceCityDistrict;
+    }
+
+    public void setProvinceCityDistrict(String provinceCityDistrict) {
+        this.provinceCityDistrict = provinceCityDistrict;
+    }
+
+    public String getAddress() {
+        return address;
+    }
+
+    public void setAddress(String address) {
+        this.address = address;
+    }
+
+    public String getLogo() {
+        return logo;
+    }
+
+    public void setLogo(String logo) {
+        this.logo = logo;
+    }
+
+    public String getBusinessLicense() {
+        return businessLicense;
+    }
+
+    public void setBusinessLicense(String businessLicense) {
+        this.businessLicense = businessLicense;
+    }
+
+    public String getPracticePermit() {
+        return practicePermit;
+    }
+
+    public void setPracticePermit(String practicePermit) {
+        this.practicePermit = practicePermit;
+    }
+
+    public String getEnvironmentalMap1() {
+        return environmentalMap1;
+    }
+
+    public void setEnvironmentalMap1(String environmentalMap1) {
+        this.environmentalMap1 = environmentalMap1;
+    }
+
+    public String getEnvironmentalMap2() {
+        return environmentalMap2;
+    }
+
+    public void setEnvironmentalMap2(String environmentalMap2) {
+        this.environmentalMap2 = environmentalMap2;
+    }
+
+    public String getEnvironmentalMap3() {
+        return environmentalMap3;
+    }
+
+    public void setEnvironmentalMap3(String environmentalMap3) {
+        this.environmentalMap3 = environmentalMap3;
+    }
+
+    public String getEnvironmentalMap4() {
+        return environmentalMap4;
+    }
+
+    public void setEnvironmentalMap4(String environmentalMap4) {
+        this.environmentalMap4 = environmentalMap4;
+    }
+
+    public String getEnvironmentalMap5() {
+        return environmentalMap5;
+    }
+
+    public void setEnvironmentalMap5(String environmentalMap5) {
+        this.environmentalMap5 = environmentalMap5;
+    }
+
+    public String getEnvironmentalMap6() {
+        return environmentalMap6;
+    }
+
+    public void setEnvironmentalMap6(String environmentalMap6) {
+        this.environmentalMap6 = environmentalMap6;
+    }
+
+    public String getEnvironmentalMap7() {
+        return environmentalMap7;
+    }
+
+    public void setEnvironmentalMap7(String environmentalMap7) {
+        this.environmentalMap7 = environmentalMap7;
+    }
+
+    public String getEnvironmentalMap8() {
+        return environmentalMap8;
+    }
+
+    public void setEnvironmentalMap8(String environmentalMap8) {
+        this.environmentalMap8 = environmentalMap8;
+    }
+
+    public String getEnvironmentalMap9() {
+        return environmentalMap9;
+    }
+
+    public void setEnvironmentalMap9(String environmentalMap9) {
+        this.environmentalMap9 = environmentalMap9;
+    }
+
+    public String getEnvironmentalMap10() {
+        return environmentalMap10;
+    }
+
+    public void setEnvironmentalMap10(String environmentalMap10) {
+        this.environmentalMap10 = environmentalMap10;
+    }
+
+    public String getEstablishTime() {
+        return establishTime;
+    }
+
+    public void setEstablishTime(String establishTime) {
+        this.establishTime = establishTime;
+    }
+
+    public String getIntroduction() {
+        return introduction;
+    }
+
+    public void setIntroduction(String introduction) {
+        this.introduction = introduction;
+    }
+
+    public String getDelFlag() {
+        return delFlag;
+    }
+
+    public void setDelFlag(String delFlag) {
+        this.delFlag = delFlag;
+    }
+
+    public String getCreationVip() {
+        return creationVip;
+    }
+
+    public void setCreationVip(String creationVip) {
+        this.creationVip = creationVip;
+    }
+
+    public List<brand> getBrands() {
+        return brands;
+    }
+
+    public void setBrands(List<brand> brands) {
+        this.brands = brands;
+    }
+
+    @Override
+    public String toString() {
+        return "hospital{" +
+                "id=" + id +
+                ", name='" + name + '\'' +
+                ", provinceCityDistrict='" + provinceCityDistrict + '\'' +
+                ", address='" + address + '\'' +
+                ", logo='" + logo + '\'' +
+                ", businessLicense='" + businessLicense + '\'' +
+                ", practicePermit='" + practicePermit + '\'' +
+                ", environmentalMap1='" + environmentalMap1 + '\'' +
+                ", environmentalMap2='" + environmentalMap2 + '\'' +
+                ", environmentalMap3='" + environmentalMap3 + '\'' +
+                ", environmentalMap4='" + environmentalMap4 + '\'' +
+                ", environmentalMap5='" + environmentalMap5 + '\'' +
+                ", environmentalMap6='" + environmentalMap6 + '\'' +
+                ", environmentalMap7='" + environmentalMap7 + '\'' +
+                ", environmentalMap8='" + environmentalMap8 + '\'' +
+                ", environmentalMap9='" + environmentalMap9 + '\'' +
+                ", environmentalMap10='" + environmentalMap10 + '\'' +
+                ", establishTime='" + establishTime + '\'' +
+                ", introduction='" + introduction + '\'' +
+                ", delFlag='" + delFlag + '\'' +
+                ", creationVip='" + creationVip + '\'' +
+                ", brands=" + brands +
+                '}';
+    }
+}

+ 25 - 0
src/main/java/com/caimei/mapper/products/DetailsMapper.java

@@ -0,0 +1,25 @@
+package com.caimei.mapper.products;
+
+import com.caimei.entity.*;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+@Mapper
+public interface DetailsMapper {
+    CmOrganizeProducts findProduct(Integer id);
+
+    Product product(Integer productID);
+
+    List<ProductImage> findAllProductImage(Integer productID);
+
+    ProductDetailInfo findProductDetail(Integer productID);
+
+    Shop findShop(Integer shopID);
+
+    void saveCart(CmMallCart cmMallCart);
+
+    CmMallCart findCartProduct(CmMallCart cmMallCart);
+
+    void updateCart(CmMallCart cart);
+}

+ 26 - 0
src/main/java/com/caimei/mapper/products/HomePageMapper.java

@@ -0,0 +1,26 @@
+package com.caimei.mapper.products;
+
+import com.caimei.entity.*;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+@Mapper
+public interface HomePageMapper {
+
+    List<CmProductsClassify> findClassify(Integer organizeID);
+
+    List<CmOrganizeProducts> findProducts(Integer organizeID);
+
+    Integer cartQuantity(Integer userID);
+
+    List<CmOrganizeProducts> classify(CmOrganizeProducts organizeProducts);
+
+    List<CmOrganizeProducts> preferred(CmOrganizeProducts organizeProducts);
+
+    List<hospital> member();
+
+    List<brand> findId(Integer id);
+
+    CmMallOrganize afterSale(Integer organizeID);
+}

+ 21 - 0
src/main/java/com/caimei/mapper/products/ShoppingMapper.java

@@ -0,0 +1,21 @@
+package com.caimei.mapper.products;
+
+import com.caimei.entity.CmMallCart;
+import com.caimei.entity.CmOrganizeProducts;
+import com.caimei.entity.Shop;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface ShoppingMapper {
+
+    List<Shop> findAllShop(Integer userID);
+
+    List<CmOrganizeProducts> findAllProducts(@Param("shopID") Integer shopID, @Param("userID") Integer userID);
+
+    void updateNumber(CmMallCart cmMallCart);
+
+    void deleteCart(@Param("userID") Integer userID, @Param("productID") Integer productID);
+}

+ 2 - 0
src/main/java/com/caimei/mapper/user/LoginMapper.java

@@ -16,4 +16,6 @@ public interface LoginMapper {
     CmOperationUser query(CmOperationUser operationUser);
 
     void updateOperationUser(CmOperationUser user);
+
+    String cellPhone(Integer userOrganizeID);
 }

+ 1 - 1
src/main/java/com/caimei/mapper/user/PersonalMapper.java

@@ -30,5 +30,5 @@ public interface PersonalMapper {
 
     Address findDefaultAddress(Integer userID);
 
-    Integer ableUserMoney(Integer userId);
+    Double ableUserMoney(Integer userId);
 }

+ 10 - 0
src/main/java/com/caimei/service/products/DetailsService.java

@@ -0,0 +1,10 @@
+package com.caimei.service.products;
+
+import com.caimei.entity.CmMallCart;
+import com.caimei.entity.CmOrganizeProducts;
+
+public interface DetailsService {
+    CmOrganizeProducts productDetails(Integer id, Integer userID);
+
+    Integer saveCart(CmMallCart cmMallCart);
+}

+ 20 - 0
src/main/java/com/caimei/service/products/HomePageService.java

@@ -0,0 +1,20 @@
+package com.caimei.service.products;
+
+import com.caimei.entity.CmMallOrganize;
+import com.caimei.entity.CmOrganizeProducts;
+import com.caimei.entity.hospital;
+
+import java.util.List;
+import java.util.Map;
+
+public interface HomePageService {
+    Map<String, Object> information(Integer organizeID, Integer userID);
+
+    List<CmOrganizeProducts> classify(CmOrganizeProducts organizeProducts);
+
+    List<CmOrganizeProducts> preferred(CmOrganizeProducts organizeProducts);
+
+    List<hospital> member();
+
+    CmMallOrganize afterSale(Integer organizeID);
+}

+ 13 - 0
src/main/java/com/caimei/service/products/ShoppingService.java

@@ -0,0 +1,13 @@
+package com.caimei.service.products;
+
+import com.caimei.entity.CmMallCart;
+
+import java.util.Map;
+
+public interface ShoppingService {
+    Map<String, Object> findAllCart(Integer userID, Integer index, Integer pageSize);
+
+    void updateNumber(CmMallCart cmMallCart);
+
+    void deleteCart(Integer userID,String productIDs);
+}

+ 94 - 0
src/main/java/com/caimei/service/products/impl/DetailsServiceImpl.java

@@ -0,0 +1,94 @@
+package com.caimei.service.products.impl;
+
+import com.caimei.entity.*;
+import com.caimei.mapper.products.DetailsMapper;
+import com.caimei.mapper.products.HomePageMapper;
+import com.caimei.service.products.DetailsService;
+import com.caimei.utils.AppUtils;
+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.Date;
+import java.util.List;
+
+@Service
+public class DetailsServiceImpl implements DetailsService {
+    @Autowired
+    private DetailsMapper detailsMapper;
+    @Autowired
+    private HomePageMapper homePageMapper;
+    @Value("${miniprogram.domain}")
+    private String domain;
+
+    @Override
+    public CmOrganizeProducts productDetails(Integer id, Integer userID) {
+        //商品信息
+        CmOrganizeProducts organizeProducts = detailsMapper.findProduct(id);
+        Product product = detailsMapper.product(organizeProducts.getProductID());
+        String[] split = null;
+        String tags = "";
+        //商品标签
+        if (product.getTags() != null) {
+            tags = product.getTags();
+            tags = tags.replace(" ", ",");
+            tags = tags.replace("、", ",");
+            tags = tags.replace(",", ",");
+            if (tags.contains(",")) {
+                split = tags.split(",");
+                List<String> list = new ArrayList();
+                for (String s : split) {
+                    if (s != null && !s.equals("")) list.add(s);
+                    split = list.toArray(new String[list.size()]);
+                }
+            }
+        }
+        product.setTagsList(split);
+        product.setMainImage(AppUtils.getImageURL("product", product.getMainImage(), 0, domain));
+        if (product.getStock() == null || product.getStock() == 0) product.setStock(99);
+        organizeProducts.setProduct(product);
+        //商品图片
+        List<ProductImage> productImage = detailsMapper.findAllProductImage(organizeProducts.getProductID());
+        for (ProductImage image : productImage) {
+            String imageURL = AppUtils.getImageURL("product", image.getImage(), 0, domain);
+            image.setImage(imageURL);
+        }
+        organizeProducts.setProductImage(productImage);
+        //商品详情
+        ProductDetailInfo productDetailInfo = detailsMapper.findProductDetail(organizeProducts.getProductID());
+        organizeProducts.setProductDetailInfo(productDetailInfo);
+        //供应商信息
+        Shop shop = detailsMapper.findShop(product.getShopID());
+        if (shop.getBusinessScope() != null && shop.getBusinessScope().contains("/")) {
+            String[] businessScopeArray = shop.getBusinessScope().split("/");
+            shop.setBusinessScopeArray(businessScopeArray);
+        }
+        shop.setLogo(AppUtils.getImageURL("shopLogo", shop.getLogo(), 0, domain));
+        shop.setBusinessLicenseImage(AppUtils.getImageURL("shopLogo", shop.getBusinessLicenseImage(), 0, domain));
+        organizeProducts.setShop(shop);
+        //购物车数量
+        Integer count = homePageMapper.cartQuantity(userID);
+        if (count == null) count = 0;
+        organizeProducts.setCartCount(count);
+        return organizeProducts;
+    }
+
+    @Override
+    public Integer saveCart(CmMallCart cmMallCart) {
+        CmMallCart cart = detailsMapper.findCartProduct(cmMallCart);
+        if (cart != null) {
+            int count = cart.getProductCount() + cmMallCart.getProductCount();
+            cart.setProductCount(count);
+            cart.setAddTime(new Date());
+            detailsMapper.updateCart(cart);
+        } else {
+            cmMallCart.setAddTime(new Date());
+            cmMallCart.setDelFlag("0");
+            detailsMapper.saveCart(cmMallCart);
+        }
+        Integer cartQuantity = homePageMapper.cartQuantity(cmMallCart.getUserID());
+        if (cartQuantity == null) cartQuantity = 0;
+        return cartQuantity;
+    }
+}

+ 78 - 0
src/main/java/com/caimei/service/products/impl/HomePageServiceImpl.java

@@ -0,0 +1,78 @@
+package com.caimei.service.products.impl;
+
+import com.caimei.entity.*;
+import com.caimei.mapper.products.HomePageMapper;
+import com.caimei.service.products.HomePageService;
+import com.caimei.utils.AppUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class HomePageServiceImpl implements HomePageService {
+    protected static final Logger logger = LoggerFactory.getLogger(HomePageServiceImpl.class);
+    @Autowired
+    private HomePageMapper homePageMapper;
+    @Value("${miniprogram.domain}")
+    private String domain;
+
+    @Override
+    public Map<String, Object> information(Integer organizeID, Integer userID) {
+        logger.info("------------HomePageServiceImpl.information.organizeID:" + organizeID + ",userID:" + userID);
+        Map<String, Object> map = new HashMap();
+        //商品分类
+        List<CmProductsClassify> productsClassify = homePageMapper.findClassify(organizeID);
+        //常用商品
+        List<CmOrganizeProducts> organizeProducts = homePageMapper.findProducts(organizeID);
+        for (CmOrganizeProducts product : organizeProducts) {
+            product.setMainImage(AppUtils.getImageURL("product", product.getMainImage(), 0, domain));
+        }
+        //购物车数量
+        Integer count = homePageMapper.cartQuantity(userID);
+        if (count == null) count = 0;
+        logger.info("------------HomePageServiceImpl.information.count:" + count);
+        map.put("productsClassify", productsClassify);
+        map.put("organizeProducts", organizeProducts);
+        map.put("count", count);
+        return map;
+    }
+
+    @Override
+    public List<CmOrganizeProducts> classify(CmOrganizeProducts organizeProducts) {
+        List<CmOrganizeProducts> classify = homePageMapper.classify(organizeProducts);
+        for (CmOrganizeProducts products : classify) {
+            products.setMainImage(AppUtils.getImageURL("product", products.getMainImage(), 0, domain));
+        }
+        return classify;
+    }
+
+    @Override
+    public List<CmOrganizeProducts> preferred(CmOrganizeProducts organizeProducts) {
+        List<CmOrganizeProducts> preferred = homePageMapper.preferred(organizeProducts);
+        for (CmOrganizeProducts products : preferred) {
+            products.setMainImage(AppUtils.getImageURL("product", products.getMainImage(), 0, domain));
+        }
+        return preferred;
+    }
+
+    @Override
+    public List<hospital> member() {
+        List<hospital> member = homePageMapper.member();
+        for (hospital hospital : member) {
+            List<brand> brands = homePageMapper.findId(hospital.getId());
+            hospital.setBrands(brands);
+        }
+        return member;
+    }
+
+    @Override
+    public CmMallOrganize afterSale(Integer organizeID) {
+        return homePageMapper.afterSale(organizeID);
+    }
+}

+ 77 - 0
src/main/java/com/caimei/service/products/impl/ShoppingServiceImpl.java

@@ -0,0 +1,77 @@
+package com.caimei.service.products.impl;
+
+import com.caimei.entity.CmMallCart;
+import com.caimei.entity.CmOrganizeProducts;
+import com.caimei.entity.Page;
+import com.caimei.entity.Shop;
+import com.caimei.mapper.products.HomePageMapper;
+import com.caimei.mapper.products.ShoppingMapper;
+import com.caimei.service.products.ShoppingService;
+import com.caimei.utils.AppUtils;
+import com.github.pagehelper.PageHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class ShoppingServiceImpl implements ShoppingService {
+    protected static final Logger logger = LoggerFactory.getLogger(ShoppingServiceImpl.class);
+    @Autowired
+    private ShoppingMapper shoppingMapper;
+    @Autowired
+    private HomePageMapper homePageMapper;
+    @Value("${miniprogram.domain}")
+    private String domain;
+
+    @Override
+    public Map<String, Object> findAllCart(Integer userID, Integer index, Integer pageSize) {
+        Map<String, Object> map = new HashMap();
+        PageHelper.startPage(index, pageSize);
+        List<Shop> shopList = shoppingMapper.findAllShop(userID);
+        if (shopList != null && shopList.size() > 0) {
+            for (Shop shop : shopList) {
+                List<CmOrganizeProducts> productsList = shoppingMapper.findAllProducts(shop.getShopID(), userID);
+                shop.setProductsList(productsList);
+                Double totalPrice = 0d;
+                for (CmOrganizeProducts products : productsList) {
+                    products.setMainImage(AppUtils.getImageURL("product", products.getMainImage(), 0, domain));
+                    if (products.getValidFlag().equals("1")) {
+                        totalPrice += (products.getRetailPrice() * products.getProductCount());
+                    }
+                }
+                shop.setTotalPrice(totalPrice);
+            }
+        }
+        Page<Shop> page = new Page<>(shopList);
+        Integer cartQuantity = homePageMapper.cartQuantity(userID);
+        if (cartQuantity == null) cartQuantity = 0;
+        logger.info("------------ShoppingServiceImpl.findAllCart.cartQuantity:"+cartQuantity);
+        map.put("page", page);
+        map.put("cartQuantity", cartQuantity);
+        return map;
+    }
+
+    @Override
+    public void updateNumber(CmMallCart cmMallCart) {
+        shoppingMapper.updateNumber(cmMallCart);
+    }
+
+    @Override
+    public void deleteCart(Integer userID, String productIDs) {
+        String[] split = {productIDs};
+        if (productIDs.contains(",")) {
+            split = productIDs.split(",");
+        }
+        for (String productID : split) {
+            if (productID != null && !productID.equals("")) {
+                shoppingMapper.deleteCart(userID, Integer.valueOf(productID));
+            }
+        }
+    }
+}

+ 6 - 1
src/main/java/com/caimei/service/user/LoginService.java

@@ -1,6 +1,9 @@
 package com.caimei.service.user;
 
 import com.caimei.entity.CmOperationUser;
+import com.caimei.entity.WxJsonModel;
+
+import javax.servlet.http.HttpServletRequest;
 
 public interface LoginService {
 
@@ -8,5 +11,7 @@ public interface LoginService {
 
     CmOperationUser isEnabled(String invitationCode, Integer userOrganizeID);
 
-    void update(CmOperationUser operationUser);
+    WxJsonModel update(CmOperationUser operationUser, HttpServletRequest request);
+
+    String cellPhone(Integer userOrganizeID);
 }

+ 25 - 1
src/main/java/com/caimei/service/user/impl/LoginServiceImpl.java

@@ -1,11 +1,15 @@
 package com.caimei.service.user.impl;
 
 import com.caimei.entity.CmOperationUser;
+import com.caimei.entity.WxJsonModel;
 import com.caimei.mapper.user.LoginMapper;
 import com.caimei.service.user.LoginService;
+import com.caimei.utils.SessionHelper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
 import java.util.Date;
 
 @Service
@@ -26,12 +30,19 @@ public class LoginServiceImpl implements LoginService {
     }
 
     @Override
-    public void update(CmOperationUser operationUser) {
+    public WxJsonModel update(CmOperationUser operationUser, HttpServletRequest request) {
+        WxJsonModel res = WxJsonModel.newInstance();
+        CmOperationUser cmOperationUser = loginMapper.doLogin(operationUser.getOpenid(), operationUser.getUserOrganizeID());
+        //判断是否已有绑定用户
+        if (cmOperationUser != null) {
+            return res.error("您已授权,无需重复登录");
+        }
         CmOperationUser user = loginMapper.query(operationUser);
         //判断是否存在已下线的会所用户
         if (user != null) {
             user.setOpenid("");
             user.setLinkName("");
+            user.setBindTime(null);
             user.setDelFlag("1");
             user.setStatus("1");
             user.setUpdateTime(new Date());
@@ -41,5 +52,18 @@ public class LoginServiceImpl implements LoginService {
         operationUser.setBindTime(new Date());
         operationUser.setUpdateTime(new Date());
         loginMapper.update(operationUser);
+        //传入session,返回用户信息,更新sessionId
+        CmOperationUser user1 = loginMapper.doLogin(operationUser.getOpenid(), operationUser.getUserOrganizeID());
+        HttpSession session = SessionHelper.getSession();
+        String sessionId = session.getId();
+        session.setAttribute("openid", operationUser.getOpenid());
+        session.setAttribute("organizeID", operationUser.getUserOrganizeID());
+        user1.setSessionId(sessionId);
+        return res.success(user1);
+    }
+
+    @Override
+    public String cellPhone(Integer userOrganizeID) {
+        return loginMapper.cellPhone(userOrganizeID);
     }
 }

+ 28 - 6
src/main/java/com/caimei/service/user/impl/PersonalServiceImpl.java

@@ -1,9 +1,12 @@
 package com.caimei.service.user.impl;
 
 import com.caimei.entity.*;
+import com.caimei.mapper.products.HomePageMapper;
 import com.caimei.mapper.user.PersonalMapper;
 import com.caimei.service.user.PersonalService;
 import com.github.pagehelper.PageHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -15,12 +18,27 @@ import java.util.Map;
 
 @Service
 public class PersonalServiceImpl implements PersonalService {
+    protected static final Logger logger = LoggerFactory.getLogger(PersonalServiceImpl.class);
+
     @Autowired
     private PersonalMapper personalMapper;
+    @Autowired
+    private HomePageMapper homePageMapper;
 
     @Override
     public Club myCentre(CmOperationUser operationUser) {
-        return personalMapper.myCentre(operationUser);
+        Club club = personalMapper.myCentre(operationUser);
+        if (club != null) {
+            Double ableUserMoney = club.getAbleUserMoney();
+            String userMoney = String.format("%.2f", ableUserMoney);
+            club.setUserMoney(userMoney);
+            //购物车数量
+            Integer count = homePageMapper.cartQuantity(club.getUserID());
+            if (count == null) count = 0;
+            logger.info("------------PersonalServiceImpl.myCentre.count:" + count);
+            club.setCartCount(count);
+        }
+        return club;
     }
 
     @Override
@@ -40,10 +58,12 @@ public class PersonalServiceImpl implements PersonalService {
         PageHelper.startPage(index, pageSize);
         List<CmUserBalanceRecord> list = personalMapper.touchBalance(balanceRecord);
         Page<CmUserBalanceRecord> page = new Page<>(list);
-        Integer ableUserMoney = personalMapper.ableUserMoney(balanceRecord.getUserId());
+        Double ableUserMoney = personalMapper.ableUserMoney(balanceRecord.getUserId());
+        if (ableUserMoney == null) ableUserMoney = 0d;
+        String userMoney = String.format("%.2f", ableUserMoney);
         Map<String, Object> map = new HashMap();
         map.put("page", page);
-        map.put("ableUserMoney", ableUserMoney);
+        map.put("ableUserMoney", userMoney);
         return map;
     }
 
@@ -68,9 +88,11 @@ public class PersonalServiceImpl implements PersonalService {
         List<Address> addressList = personalMapper.findAddress(userID);
         for (Address address : addressList) {
             Address cantonal = personalMapper.findCantonal(address.getTownID());
-            address.setProvince(cantonal.getProvince());
-            address.setCity(cantonal.getCity());
-            address.setTown(cantonal.getTown());
+            if (cantonal != null) {
+                address.setProvince(cantonal.getProvince());
+                address.setCity(cantonal.getCity());
+                address.setTown(cantonal.getTown());
+            }
         }
         return addressList;
     }

+ 155 - 0
src/main/java/com/caimei/utils/AppUtils.java

@@ -0,0 +1,155 @@
+/**
+ *
+ */
+package com.caimei.utils;
+
+import org.apache.commons.lang3.RandomStringUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.struts2.ServletActionContext;
+import javax.servlet.http.HttpServletRequest;
+import java.util.Random;
+
+/**
+ * 图片工具类
+ */
+public class AppUtils {
+
+	public static String getImageURL(String dirName, String src, String domain) {
+		return getImageURL(dirName, src, 0,domain);
+	}
+
+	/***
+	 * 获取图片地址
+	 *
+	 * @param src
+	 *            保存在数据库中的图片文件名
+	 * @param type
+	 *            图片的前缀 (如 type = 200 那么则获取的图片是 200_XXX的图片)
+	 * @param dirName
+	 *            图片保存的文件夹名 如 (league)
+	 * @param domain
+	 * 			   加上域名拼成完整路径
+	 * @return
+	 */
+	public static String getImageURL(String dirName, String src, int type, String domain) {
+
+
+		//正式环境 域名 http --- https处理
+		if (domain != null && !"".equals(domain) && domain.startsWith("http:") && domain.toLowerCase().lastIndexOf("test")== -1 && domain.toLowerCase().lastIndexOf("localhost")== -1) {
+			domain = domain.replace("http:", "https:");
+		}
+
+		//正式环境 图片地址 http --- https处理
+		if(src != null && src.startsWith("https:")){
+			//非正式环境 使用http
+			if (domain !=null && !"".equals(domain) && domain.toLowerCase().lastIndexOf("test")>-1 || domain.toLowerCase().lastIndexOf("localhost")>-1){
+				src = src.replace("https:","http:");
+			}
+			return src;
+		}
+
+		//正式环境 图片地址  http --- https处理
+		if(src != null && src.startsWith("http:")){
+			//非正式环境 使用http
+			if (domain !=null && !"".equals(domain) && domain.toLowerCase().lastIndexOf("test")==-1 && domain.toLowerCase().lastIndexOf("localhost")==-1){
+				src = src.replace("http:","https:");
+			}
+			return src;
+		}
+		type = 0 ;
+		dirName = dirName.trim();
+		if (dirName == null) dirName = "";
+		if(src == null || src.equalsIgnoreCase("null")) src = "";
+		if (src.indexOf(",") > 0) {
+			String tmp = src;
+			src = tmp.substring(0, tmp.indexOf(","));
+		}
+		String image = "/public/3.0/img/default/none.jpg";
+		if (dirName.equals("user")) {
+			image = "/public/3.0/img/default/HeaderImg.png";
+		} else if (dirName.equals("club")) {
+			image = "/public/3.0/img/default/default_club.jpg";
+		} else if (dirName.equals("shopLogo")) {
+			image = "/public/3.0/img/default/suppliver.jpg";
+		}else if (dirName.equals("caiMeiImage")) {
+			image = "/public/3.0/img/default/caiMeiImage.jpg";
+		}else {
+			image = "/public/3.0/img/default/none.jpg";
+		}
+		if (src != null && !src.equals("")) {
+			if (type != 0 || dirName.equals("product")) {
+				src = src.replace("\\", "/");
+				String srcActual = src;
+				String subDirName = "";
+				int index = src.lastIndexOf("/");
+
+				if (index != -1) {
+					subDirName = src.substring(0, index + 1);
+					srcActual = src.substring(index + 1);
+				}
+				boolean b = src.startsWith("/uploadFile");
+				if(b){
+					image = src;
+				}else{
+					image = "/uploadFile/" + dirName + "/" + subDirName
+							+ (type == 0 ? "" : type + "_") + srcActual;
+				}
+			} else {
+				boolean b = src.startsWith("/uploadFile");
+				if(b){
+					image = src;
+				}else{
+					image = "/uploadFile/" + dirName + "/" + src;
+				}
+			}
+		}else {
+			if(StringUtils.isEmpty(image)) {
+				image = "/public/3.0/img/default/none.jpg";
+			}
+		}
+		return domain + image;
+	}
+
+	public static String getRandomString(int i) {
+		String s = "23456789ABCDEFGHIJKLMNPQRSTUVWXYZ";
+		String s1 = "";
+		Random random = new Random();
+		for (int j = 0; j < i; j++) {
+			String s2 = (new StringBuilder(String.valueOf(s.charAt(random
+					.nextInt(s.length()))))).toString();
+			s1 = (new StringBuilder(String.valueOf(s1))).append(s2).toString();
+		}
+
+		return s1;
+	}
+
+	/**
+	 * 随机生成8位大写字母与数字组成的字符串
+	 * @return
+	 */
+	public static String generateRandomCode() {
+		// 8位允许字母与数字的字符串
+		return RandomStringUtils.random(8, true, true).toUpperCase();
+	}
+
+	/**
+	 * 随机生成指定位数字母与数字组成的字符串
+	 * @param length 长度
+	 * @return
+	 */
+	public static String generateRandomCode(int length) {
+		// 允许字母与数字的字符串
+		return RandomStringUtils.random(length, true, true);
+	}
+
+
+
+	public static String getClusterRequestIPInfo() {
+		HttpServletRequest appRequest = ServletActionContext.getRequest();
+		if (appRequest.getHeader("X-Real-IP") != null) {
+			return appRequest.getHeader("X-Real-IP");
+		}
+		return appRequest.getRemoteAddr();
+	}
+
+}

+ 4 - 1
src/main/resources/dev/application-dev.yml

@@ -42,4 +42,7 @@ logging:
 
 miniprogram:
   AppId: wxd3cadbba8bf55f47
-  AppSecret: 811a6ab8105e0bdf24cd78f6e6f009a7
+  AppSecret: 811a6ab8105e0bdf24cd78f6e6f009a7
+  #邀请码有效时长  /天
+  ValidTime: 7
+  domain: https://www.caimei365.com

+ 87 - 0
src/main/resources/mapper/DetailsMapper.xml

@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.caimei.mapper.products.DetailsMapper">
+    <select id="findProduct" parameterType="int" resultType="com.caimei.entity.CmOrganizeProducts">
+        SELECT
+          *
+        FROM
+          cm_mall_organize_products
+        WHERE
+          id = #{id}
+          AND delFlag = '0'
+    </select>
+
+    <select id="product" resultType="com.caimei.entity.Product" parameterType="int">
+        SELECT
+          p.*,
+          cb.name AS brandName
+        FROM
+          product p
+          LEFT JOIN cm_brand cb ON p.brandID = cb.id
+        WHERE
+          productID = #{productID}
+    </select>
+
+    <select id="findAllProductImage" parameterType="int" resultType="com.caimei.entity.ProductImage">
+        SELECT
+          *
+        FROM
+          productimage
+        WHERE
+          productID = #{productID}
+        ORDER BY
+          mainFlag DESC
+    </select>
+
+    <select id="findProductDetail" resultType="com.caimei.entity.ProductDetailInfo" parameterType="int">
+        SELECT
+          *
+        FROM
+          productdetailinfo
+        WHERE
+          productID = #{productID}
+    </select>
+
+    <select id="findShop" parameterType="int" resultType="com.caimei.entity.Shop">
+        SELECT
+          *
+        FROM
+          shop
+        WHERE
+          shopID = #{shopID}
+    </select>
+
+    <insert id="saveCart" parameterType="com.caimei.entity.CmMallCart">
+        INSERT INTO cm_mall_cart (
+          productID, userID, productCount, addTime,
+          delFlag
+        )
+        VALUES
+          (#{productID},#{userID},#{productCount},#{addTime},
+          #{delFlag})
+    </insert>
+
+    <select id="findCartProduct" parameterType="com.caimei.entity.CmMallCart" resultType="com.caimei.entity.CmMallCart">
+        SELECT
+          *
+        FROM
+          cm_mall_cart
+        WHERE
+          productID = #{productID}
+          AND userID = #{userID}
+          AND delFlag = '0'
+    </select>
+
+    <update id="updateCart" parameterType="com.caimei.entity.CmMallCart">
+        UPDATE
+          cm_mall_cart
+        SET
+          productCount = #{productCount},
+          addTime = #{addTime}
+        WHERE
+          id = #{id}
+    </update>
+
+</mapper>

+ 160 - 0
src/main/resources/mapper/HomePageMapper.xml

@@ -0,0 +1,160 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.caimei.mapper.products.HomePageMapper">
+    <select id="findClassify" resultType="com.caimei.entity.CmProductsClassify" parameterType="int">
+        SELECT
+          *
+        FROM
+          cm_mall_products_classify
+        WHERE
+          organizeID = #{organizeID}
+          AND STATUS = '1'
+          AND delFlag = '0'
+        ORDER BY
+          IF(ISNULL(sort),1,0) ASC,
+          sort ASC,
+          addTime DESC,
+          id DESC
+    </select>
+
+    <select id="findProducts" resultType="com.caimei.entity.CmOrganizeProducts" parameterType="int">
+        SELECT
+          p.mainImage,
+          p.name,
+          cop.retailPrice,
+          cop.id,
+          cop.organizeID
+        FROM
+          cm_mall_organize_products cop
+          LEFT JOIN product p ON cop.productID = p.productID
+        WHERE
+          cop.organizeID = #{organizeID}
+          AND cop.commonlyProduct = '1'
+          AND cop.delFlag = '0'
+          AND cop.validFlag='1'
+          AND p.productID IS NOT NULL
+        ORDER BY
+          IF(ISNULL(cop.commonlyProductSort),1,0) ASC,
+          cop.commonlyProductSort ASC,
+          cop.addTime DESC,
+          cop.id DESC
+        LIMIT
+          5
+    </select>
+
+    <select id="cartQuantity" resultType="int" parameterType="int">
+        SELECT
+          COUNT(*)
+        FROM
+          (
+            SELECT
+              COUNT(*)
+            FROM
+              cm_mall_cart
+            WHERE
+              userID = #{userID}
+              AND delFlag = '0'
+            GROUP BY
+              productID
+          ) a
+    </select>
+
+    <select id="classify" resultType="com.caimei.entity.CmOrganizeProducts"
+            parameterType="com.caimei.entity.CmOrganizeProducts">
+        SELECT
+          cmop.*,
+          p.mainImage,
+          p.name,
+          p.unit
+        FROM
+          cm_mall_organize_products cmop
+          LEFT JOIN product p ON cmop.productID = p.productID
+        WHERE
+          cmop.classifyID = #{classifyID}
+          AND cmop.organizeID= #{organizeID}
+          AND cmop.validFlag = '1'
+          AND cmop.delFlag = '0'
+          AND p.productID IS NOT NULL
+        ORDER BY
+          cmop.addTime DESC,
+          cmop.id DESC
+    </select>
+
+    <select id="preferred" parameterType="int" resultType="com.caimei.entity.CmOrganizeProducts">
+        SELECT
+        cmop.*,
+        p.mainImage,
+        p.name,
+        p.unit
+        FROM
+        cm_mall_organize_products cmop
+        LEFT JOIN product p ON cmop.productID = p.productID
+        <where>
+            <if test="preferredProduct != null and preferredProduct != ''">
+                AND cmop.preferredProduct = '1'
+            </if>
+            <if test="commonlyProduct != null and commonlyProduct != ''">
+                AND cmop.commonlyProduct = '1'
+            </if>
+            <if test="preferentialProduct != null and preferentialProduct != ''">
+                AND cmop.preferentialProduct = '1'
+            </if>
+            AND cmop.organizeID = #{organizeID}
+            AND cmop.validFlag = '1'
+            AND cmop.delFlag = '0'
+            AND p.productID IS NOT NULL
+        </where>
+        <if test="preferredProduct != null and preferredProduct != ''">
+            ORDER BY IF(ISNULL(cmop.preferredProductSort),1,0) ASC,
+            cmop.preferredProductSort ASC,cmop.addTime DESC,cmop.id DESC
+        </if>
+        <if test="commonlyProduct != null and commonlyProduct != ''">
+            ORDER BY IF(ISNULL(cmop.commonlyProductSort),1,0) ASC,
+            cmop.commonlyProductSort ASC,cmop.addTime DESC,cmop.id DESC
+        </if>
+        <if test="preferentialProduct != null and preferentialProduct != ''">
+            ORDER BY IF(ISNULL(cmop.preferentialProductSort),1,0) ASC,
+            cmop.preferentialProductSort ASC,cmop.addTime DESC,cmop.id DESC
+        </if>
+    </select>
+
+    <select id="member" resultType="com.caimei.entity.hospital">
+        SELECT
+          zh.*
+        FROM
+          zplm_hospital zh
+          LEFT JOIN zplm_hospital_brand zhb ON zhb.hospitalID = zh.id  AND zhb.delFlag="0"
+          LEFT JOIN zplm_brand zb ON zhb.brandID = zb.id  AND zb.delFlag="0"
+        WHERE
+          zh.delFlag="0"
+        GROUP BY
+          zh.id
+        ORDER BY
+          zh.sort DESC,COUNT(zhb.brandID) DESC,zh.id DESC
+    </select>
+
+    <select id="findId" resultType="com.caimei.entity.brand" parameterType="int">
+        SELECT
+          b.*
+        FROM
+          zplm_brand b,
+          zplm_hospital_brand hb
+        WHERE
+          b.`id` = hb.brandID
+          AND hb.hospitalID = #{hospitalID}
+          AND b.delFlag = "0"
+          AND hb.delFlag = "0"
+    </select>
+
+    <select id="afterSale" resultType="com.caimei.entity.CmMallOrganize" parameterType="int">
+        SELECT
+          *
+        FROM
+          cm_mall_organize
+        WHERE
+          id = #{organizeID}
+          AND delFlag = '0'
+    </select>
+</mapper>

+ 16 - 6
src/main/resources/mapper/LoginMapper.xml

@@ -7,7 +7,7 @@
         SELECT
           cou.*
         FROM
-          cm_operation_user cou
+          cm_mall_operation_user cou
           LEFT JOIN USER u ON u.userID = cou.userID
         WHERE
           cou.openid = #{openid}
@@ -21,7 +21,7 @@
           cou.*,
           u.clubStatus
         FROM
-          cm_operation_user cou
+          cm_mall_operation_user cou
           LEFT JOIN USER u ON u.userID = cou.userID
         WHERE
           cou.invitationCode = #{invitationCode}
@@ -30,7 +30,7 @@
 
     <update id="update" parameterType="com.caimei.entity.CmOperationUser">
         UPDATE
-          cm_operation_user
+          cm_mall_operation_user
         SET
           nickName = #{nickName},
           openid = #{openid},
@@ -44,7 +44,7 @@
 
     <update id="updateOperationUser" parameterType="com.caimei.entity.CmOperationUser">
         UPDATE
-          cm_operation_user
+          cm_mall_operation_user
         SET
           nickName = #{nickName},
           openid = #{openid},
@@ -52,7 +52,7 @@
           status = #{status},
           delFlag = #{delFlag}
         WHERE
-          openid = #{openid}
+          id = #{id}
           AND userOrganizeID = #{userOrganizeID}
     </update>
 
@@ -60,7 +60,7 @@
         SELECT
           cou.*
         FROM
-          cm_operation_user cou
+          cm_mall_operation_user cou
           LEFT JOIN USER u ON u.userID = cou.userID
         WHERE
           cou.openid = #{openid}
@@ -68,4 +68,14 @@
           AND cou.delFlag = '0'
           AND u.clubStatus = '91'
     </select>
+
+    <select id="cellPhone" resultType="string">
+        SELECT
+          contactNumber
+        FROM
+          cm_mall_organize
+        WHERE
+          id = #{userOrganizeID}
+          AND delFlag = '0'
+    </select>
 </mapper>

+ 5 - 5
src/main/resources/mapper/PersonalMapper.xml

@@ -13,10 +13,10 @@
           cuo.contactNumber,
           cuo.introduction
         FROM
-          cm_operation_user cou
+          cm_mall_operation_user cou
           LEFT JOIN USER u ON u.userID = cou.userID
           LEFT JOIN club c ON u.clubID = c.clubID
-          LEFT JOIN cm_user_organize cuo ON cuo.id=cou.userOrganizeID
+          LEFT JOIN cm_mall_organize cuo ON cuo.id=cou.userOrganizeID
         WHERE
           cou.openid = #{openid}
           AND cou.userOrganizeID = #{userOrganizeID}
@@ -29,8 +29,8 @@
         FROM
         cm_user_balance_record cubr
         <where>
-            <if test="balanceType != null and balanceType != ''">
-                AND cubr.balanceType = #{balanceType}
+            <if test="type != null and type != ''">
+                AND cubr.type = #{type}
             </if>
             AND cubr.addDate <![CDATA[ >= ]]> #{startTime}
             AND cubr.addDate <![CDATA[ <= ]]> #{endTime}
@@ -40,7 +40,7 @@
         ORDER BY cubr.addDate DESC
     </select>
 
-    <select id="ableUserMoney" resultType="int">
+    <select id="ableUserMoney" resultType="Double">
         SELECT ableUserMoney FROM USER WHERE userID = #{userID}
     </select>
 

+ 59 - 0
src/main/resources/mapper/ShoppingMapper.xml

@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.caimei.mapper.products.ShoppingMapper">
+    <select id="findAllShop" resultType="com.caimei.entity.Shop" parameterType="int">
+        SELECT
+          s.*
+        FROM
+          cm_mall_cart cmc
+          LEFT JOIN cm_mall_organize_products cmop ON cmop.id = cmc.productID
+          LEFT JOIN product p ON cmop.productID = p.productID
+          LEFT JOIN shop s ON p.shopID = s.shopID
+        WHERE
+          cmc.userID = #{userID}
+          AND cmc.delFlag = '0'
+        GROUP BY
+          s.shopID
+        ORDER BY
+          MAX(cmc.addTime) DESC
+    </select>
+
+    <select id="findAllProducts" resultType="com.caimei.entity.CmOrganizeProducts" parameterType="int">
+        SELECT
+          cmop.*,
+          p.mainImage,
+          p.name,
+          p.unit,
+          cmc.productCount
+        FROM
+          cm_mall_cart cmc
+          LEFT JOIN cm_mall_organize_products cmop ON cmop.id = cmc.productID
+          LEFT JOIN product p ON cmop.productID = p.productID
+        WHERE
+          p.shopID = #{shopID}
+          AND cmc.userID = #{userID}
+          AND cmc.delFlag = '0'
+        ORDER BY
+          cmc.addTime DESC
+    </select>
+
+    <update id="updateNumber" parameterType="com.caimei.entity.CmMallCart">
+        UPDATE
+          cm_mall_cart
+        SET
+          productCount = #{productCount}
+        WHERE
+          userID = #{userID}
+          AND productID = #{productID}
+    </update>
+
+    <delete id="deleteCart" parameterType="com.caimei.entity.CmMallCart">
+        DELETE FROM
+          cm_mall_cart
+        WHERE
+          userID = #{userID}
+          AND productID = #{productID}
+    </delete>
+</mapper>

+ 5 - 2
src/main/resources/prod/application-prod.yml

@@ -7,7 +7,7 @@ spring:
     #数据源连接--start
   datasource:
     driverClassName: com.mysql.jdbc.Driver
-    url: jdbc:mysql://10.104.172.219:3306/caimei_newuser?characterEncoding=UTF8
+    url: jdbc:mysql://10.104.172.219:3306/caimei?characterEncoding=UTF8
     username: developer
     password: diKtPYZ'wToI&9#L
     #数据源连接--end
@@ -44,4 +44,7 @@ logging:
 
 miniprogram:
   AppId: wxd3cadbba8bf55f47
-  AppSecret: 811a6ab8105e0bdf24cd78f6e6f009a7
+  AppSecret: 811a6ab8105e0bdf24cd78f6e6f009a7
+  #邀请码有效时长  /天
+  ValidTime: 7
+  domain: https://www.caimei365.com

+ 1 - 0
src/main/resources/public/qzGP5lbiSR.txt

@@ -0,0 +1 @@
+39a2195d6a1f11b2617efc3eb87976bd

+ 4 - 1
src/main/resources/test/application-test.yml

@@ -43,4 +43,7 @@ logging:
 
 miniprogram:
   AppId: wxd3cadbba8bf55f47
-  AppSecret: 811a6ab8105e0bdf24cd78f6e6f009a7
+  AppSecret: 811a6ab8105e0bdf24cd78f6e6f009a7
+  #邀请码有效时长  /天
+  ValidTime: 7
+  domain: https://www-b.caimei365.com