diff --git a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminGrouponController.java b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminGrouponController.java index 4eaf4bc6..92bc7797 100644 --- a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminGrouponController.java +++ b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminGrouponController.java @@ -51,7 +51,7 @@ public class AdminGrouponController { List> records = new ArrayList<>(); for (LitemallGroupon groupon : grouponList) { Map RecordData = new HashMap<>(); - List subGrouponList = grouponService.queryJoiners(groupon.getId()); + List subGrouponList = grouponService.queryJoinRecord(groupon.getId()); LitemallGrouponRules rules = rulesService.queryById(groupon.getRulesId()); LitemallGoods goods = goodsService.findById(rules.getGoodsId()); diff --git a/litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallGrouponRulesService.java b/litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallGrouponRulesService.java index d0be94e2..963d7bc9 100644 --- a/litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallGrouponRulesService.java +++ b/litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallGrouponRulesService.java @@ -8,6 +8,7 @@ import org.linlinjava.litemall.db.domain.LitemallGrouponRulesExample; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.time.LocalDateTime; import java.util.List; @Service @@ -19,8 +20,16 @@ public class LitemallGrouponRulesService { return mapper.insertSelective(rules); } + /** + * 根据ID查找对应团购项 + * + * @param id + * @return + */ public LitemallGrouponRules queryById(Integer id) { - return mapper.selectByPrimaryKey(id); + LitemallGrouponRulesExample example = new LitemallGrouponRulesExample(); + example.or().andIdEqualTo(id).andDeletedEqualTo(false); + return mapper.selectOneByExample(example); } /** @@ -35,6 +44,13 @@ public class LitemallGrouponRulesService { return mapper.selectByExample(example); } + /** + * 获取首页团购活动列表 + * + * @param offset + * @param limit + * @return + */ public List queryByIndex(int offset, int limit) { LitemallGrouponRulesExample example = new LitemallGrouponRulesExample(); example.or().andDeletedEqualTo(false); @@ -43,6 +59,27 @@ public class LitemallGrouponRulesService { return mapper.selectByExample(example); } + /** + * 判断某个团购活动是否已经过期 + * + * @return + */ + public boolean isExpired(LitemallGrouponRules rules) { + if (rules == null || rules.getExpireTime().isBefore(LocalDateTime.now())) + return false; + return true; + } + + /** + * 获取团购活动列表 + * + * @param goodsId + * @param page + * @param size + * @param sort + * @param order + * @return + */ public List querySelective(String goodsId, Integer page, Integer size, String sort, String order) { LitemallGrouponRulesExample example = new LitemallGrouponRulesExample(); LitemallGrouponRulesExample.Criteria criteria = example.createCriteria(); diff --git a/litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallGrouponService.java b/litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallGrouponService.java index 186eaf0c..bb26412a 100644 --- a/litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallGrouponService.java +++ b/litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallGrouponService.java @@ -16,17 +16,11 @@ public class LitemallGrouponService { LitemallGrouponMapper mapper; /** - * 查询用户所有参与的团购 + * 获取用户发起的团购记录 * * @param userId * @return */ - public List queryByUserId(Integer userId) { - LitemallGrouponExample example = new LitemallGrouponExample(); - example.or().andUserIdEqualTo(userId).andDeletedEqualTo(false); - return mapper.selectByExample(example); - } - public List queryMyGroupon(Integer userId) { LitemallGrouponExample example = new LitemallGrouponExample(); example.or().andUserIdEqualTo(userId).andCreatorUserIdEqualTo(userId).andGrouponIdEqualTo(0).andDeletedEqualTo(false).andPayedEqualTo(true); @@ -34,6 +28,12 @@ public class LitemallGrouponService { return mapper.selectByExample(example); } + /** + * 获取用户参与的团购记录 + * + * @param userId + * @return + */ public List queryMyJoinGroupon(Integer userId) { LitemallGrouponExample example = new LitemallGrouponExample(); example.or().andUserIdEqualTo(userId).andGrouponIdNotEqualTo(0).andDeletedEqualTo(false).andPayedEqualTo(true); @@ -41,13 +41,25 @@ public class LitemallGrouponService { return mapper.selectByExample(example); } + /** + * 根据OrderId查询团购记录 + * + * @param orderId + * @return + */ public LitemallGroupon queryByOrderId(Integer orderId) { LitemallGrouponExample example = new LitemallGrouponExample(); example.or().andOrderIdEqualTo(orderId).andDeletedEqualTo(false); return mapper.selectOneByExample(example); } - public List queryJoiners(Integer id) { + /** + * 获取某个团购活动参与的记录 + * + * @param id + * @return + */ + public List queryJoinRecord(Integer id) { LitemallGrouponExample example = new LitemallGrouponExample(); example.or().andGrouponIdEqualTo(id).andDeletedEqualTo(false).andPayedEqualTo(true); example.orderBy("add_time desc"); @@ -61,7 +73,9 @@ public class LitemallGrouponService { * @return */ public LitemallGroupon queryById(Integer id) { - return mapper.selectByPrimaryKey(id); + LitemallGrouponExample example = new LitemallGrouponExample(); + example.or().andIdEqualTo(id).andDeletedEqualTo(false).andPayedEqualTo(true); + return mapper.selectOneByExample(example); } /** @@ -76,18 +90,6 @@ public class LitemallGrouponService { return (int) mapper.countByExample(example); } - /** - * 返回某个团购活动参与人数 - * - * @param rulesId - * @return - */ - public int countRules(Integer rulesId) { - LitemallGrouponExample example = new LitemallGrouponExample(); - example.or().andRulesIdEqualTo(rulesId).andDeletedEqualTo(false); - return (int) mapper.countByExample(example); - } - public void update(LitemallGroupon groupon) { mapper.updateByPrimaryKey(groupon); } @@ -102,6 +104,17 @@ public class LitemallGrouponService { return mapper.insertSelective(groupon); } + + /** + * 查询所有发起的团购记录 + * + * @param rulesId + * @param page + * @param size + * @param sort + * @param order + * @return + */ public List querySelective(String rulesId, Integer page, Integer size, String sort, String order) { LitemallGrouponExample example = new LitemallGrouponExample(); LitemallGrouponExample.Criteria criteria = example.createCriteria(); diff --git a/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/service/HomeCacheManager.java b/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/service/HomeCacheManager.java index 5b491114..def17a02 100644 --- a/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/service/HomeCacheManager.java +++ b/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/service/HomeCacheManager.java @@ -8,6 +8,7 @@ import java.util.Map; * 简单缓存的数据 */ public class HomeCacheManager { + public static final boolean ENABLE = true; public static final String INDEX = "index"; public static final String CATALOG = "catalog"; public static final String GOODS = "goods"; @@ -45,6 +46,9 @@ public class HomeCacheManager { * @return */ public static boolean hasData(String cacheKey) { + if (!ENABLE) + return false; + Map cacheData = cacheDataList.get(cacheKey); if (cacheData == null) { return false; diff --git a/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxGrouponController.java b/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxGrouponController.java index 01ae4054..ad2f8c85 100644 --- a/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxGrouponController.java +++ b/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxGrouponController.java @@ -14,6 +14,7 @@ import org.springframework.web.bind.annotation.RestController; import javax.validation.constraints.NotNull; import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -105,7 +106,7 @@ public class WxGrouponController { linkGrouponId = groupon.getGrouponId(); } - List groupons = grouponService.queryJoiners(linkGrouponId); + List groupons = grouponService.queryJoinRecord(linkGrouponId); UserVo joiner; for (LitemallGroupon grouponItem : groupons) { diff --git a/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxOrderController.java b/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxOrderController.java index f0a77816..c604470a 100644 --- a/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxOrderController.java +++ b/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxOrderController.java @@ -282,6 +282,19 @@ public class WxOrderController { Integer grouponRulesId = JacksonUtil.parseInteger(body, "grouponRulesId"); Integer grouponLinkId = JacksonUtil.parseInteger(body, "grouponLinkId"); + //如果是团购项目,验证活动是否有效 + if (grouponRulesId != null && grouponRulesId > 0) { + LitemallGrouponRules rules = grouponRulesService.queryById(grouponRulesId); + //找不到记录 + if (rules == null) { + return ResponseUtil.badArgument(); + } + //团购活动已经过期 + if (grouponRulesService.isExpired(rules)) { + return ResponseUtil.fail(402, "团购活动已经过期!"); + } + } + if (cartId == null || addressId == null || couponId == null) { return ResponseUtil.badArgument(); } @@ -414,6 +427,7 @@ public class WxOrderController { //参与者 if (grouponLinkId != null && grouponLinkId > 0) { + //参与的团购记录 LitemallGroupon baseGroupon = grouponService.queryById(grouponLinkId); groupon.setCreatorUserId(baseGroupon.getCreatorUserId()); groupon.setGrouponId(grouponLinkId);