Commit 39135af3 authored by Menethil's avatar Menethil
Browse files

添加团购

parent 84afede4
......@@ -31,9 +31,9 @@ public class QCodeService {
FileInputStream inputStream = new FileInputStream(file);
//将商品图片,商品名字,商城名字画到模版图中
byte[] imageData = drawPicture(inputStream, goodPicUrl, goodName, SystemConfig.getMallName());
MultipartFile multipartFile = new MockMultipartFile(file.getName(), file.getName(), "image/jpeg", imageData);
ByteArrayInputStream inputStream2 = new ByteArrayInputStream(imageData);
//存储分享图
storageService.store(multipartFile, getKeyName(groupon.getId().toString()));
storageService.store(inputStream2, imageData.length, "image/jpeg", getKeyName(groupon.getId().toString()));
} catch (WxErrorException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
......
......@@ -71,11 +71,11 @@ public class LitemallGroupon {
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column litemall_groupon.user_type
* This field corresponds to the database column litemall_groupon.creator_user_id
*
* @mbg.generated
*/
private Boolean userType;
private Integer creatorUserId;
/**
*
......@@ -253,26 +253,26 @@ public class LitemallGroupon {
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column litemall_groupon.user_type
* This method returns the value of the database column litemall_groupon.creator_user_id
*
* @return the value of litemall_groupon.user_type
* @return the value of litemall_groupon.creator_user_id
*
* @mbg.generated
*/
public Boolean getUserType() {
return userType;
public Integer getCreatorUserId() {
return creatorUserId;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column litemall_groupon.user_type
* This method sets the value of the database column litemall_groupon.creator_user_id
*
* @param userType the value for litemall_groupon.user_type
* @param creatorUserId the value for litemall_groupon.creator_user_id
*
* @mbg.generated
*/
public void setUserType(Boolean userType) {
this.userType = userType;
public void setCreatorUserId(Integer creatorUserId) {
this.creatorUserId = creatorUserId;
}
/**
......@@ -436,7 +436,7 @@ public class LitemallGroupon {
sb.append(", grouponId=").append(grouponId);
sb.append(", rulesId=").append(rulesId);
sb.append(", userId=").append(userId);
sb.append(", userType=").append(userType);
sb.append(", creatorUserId=").append(creatorUserId);
sb.append(", addTime=").append(addTime);
sb.append(", expireTime=").append(expireTime);
sb.append(", shareUrl=").append(shareUrl);
......@@ -470,7 +470,7 @@ public class LitemallGroupon {
&& (this.getGrouponId() == null ? other.getGrouponId() == null : this.getGrouponId().equals(other.getGrouponId()))
&& (this.getRulesId() == null ? other.getRulesId() == null : this.getRulesId().equals(other.getRulesId()))
&& (this.getUserId() == null ? other.getUserId() == null : this.getUserId().equals(other.getUserId()))
&& (this.getUserType() == null ? other.getUserType() == null : this.getUserType().equals(other.getUserType()))
&& (this.getCreatorUserId() == null ? other.getCreatorUserId() == null : this.getCreatorUserId().equals(other.getCreatorUserId()))
&& (this.getAddTime() == null ? other.getAddTime() == null : this.getAddTime().equals(other.getAddTime()))
&& (this.getExpireTime() == null ? other.getExpireTime() == null : this.getExpireTime().equals(other.getExpireTime()))
&& (this.getShareUrl() == null ? other.getShareUrl() == null : this.getShareUrl().equals(other.getShareUrl()))
......@@ -494,7 +494,7 @@ public class LitemallGroupon {
result = prime * result + ((getGrouponId() == null) ? 0 : getGrouponId().hashCode());
result = prime * result + ((getRulesId() == null) ? 0 : getRulesId().hashCode());
result = prime * result + ((getUserId() == null) ? 0 : getUserId().hashCode());
result = prime * result + ((getUserType() == null) ? 0 : getUserType().hashCode());
result = prime * result + ((getCreatorUserId() == null) ? 0 : getCreatorUserId().hashCode());
result = prime * result + ((getAddTime() == null) ? 0 : getAddTime().hashCode());
result = prime * result + ((getExpireTime() == null) ? 0 : getExpireTime().hashCode());
result = prime * result + ((getShareUrl() == null) ? 0 : getShareUrl().hashCode());
......@@ -528,7 +528,7 @@ public class LitemallGroupon {
grouponId("groupon_id", "grouponId", "INTEGER"),
rulesId("rules_id", "rulesId", "INTEGER"),
userId("user_id", "userId", "INTEGER"),
userType("user_type", "userType", "BIT"),
creatorUserId("creator_user_id", "creatorUserId", "INTEGER"),
addTime("add_time", "addTime", "TIMESTAMP"),
expireTime("expire_time", "expireTime", "TIMESTAMP"),
shareUrl("share_url", "shareUrl", "VARCHAR"),
......
......@@ -526,63 +526,63 @@ public class LitemallGrouponExample {
return (Criteria) this;
}
public Criteria andUserTypeIsNull() {
addCriterion("user_type is null");
public Criteria andCreatorUserIdIsNull() {
addCriterion("creator_user_id is null");
return (Criteria) this;
}
public Criteria andUserTypeIsNotNull() {
addCriterion("user_type is not null");
public Criteria andCreatorUserIdIsNotNull() {
addCriterion("creator_user_id is not null");
return (Criteria) this;
}
public Criteria andUserTypeEqualTo(Boolean value) {
addCriterion("user_type =", value, "userType");
public Criteria andCreatorUserIdEqualTo(Integer value) {
addCriterion("creator_user_id =", value, "creatorUserId");
return (Criteria) this;
}
public Criteria andUserTypeNotEqualTo(Boolean value) {
addCriterion("user_type <>", value, "userType");
public Criteria andCreatorUserIdNotEqualTo(Integer value) {
addCriterion("creator_user_id <>", value, "creatorUserId");
return (Criteria) this;
}
public Criteria andUserTypeGreaterThan(Boolean value) {
addCriterion("user_type >", value, "userType");
public Criteria andCreatorUserIdGreaterThan(Integer value) {
addCriterion("creator_user_id >", value, "creatorUserId");
return (Criteria) this;
}
public Criteria andUserTypeGreaterThanOrEqualTo(Boolean value) {
addCriterion("user_type >=", value, "userType");
public Criteria andCreatorUserIdGreaterThanOrEqualTo(Integer value) {
addCriterion("creator_user_id >=", value, "creatorUserId");
return (Criteria) this;
}
public Criteria andUserTypeLessThan(Boolean value) {
addCriterion("user_type <", value, "userType");
public Criteria andCreatorUserIdLessThan(Integer value) {
addCriterion("creator_user_id <", value, "creatorUserId");
return (Criteria) this;
}
public Criteria andUserTypeLessThanOrEqualTo(Boolean value) {
addCriterion("user_type <=", value, "userType");
public Criteria andCreatorUserIdLessThanOrEqualTo(Integer value) {
addCriterion("creator_user_id <=", value, "creatorUserId");
return (Criteria) this;
}
public Criteria andUserTypeIn(List<Boolean> values) {
addCriterion("user_type in", values, "userType");
public Criteria andCreatorUserIdIn(List<Integer> values) {
addCriterion("creator_user_id in", values, "creatorUserId");
return (Criteria) this;
}
public Criteria andUserTypeNotIn(List<Boolean> values) {
addCriterion("user_type not in", values, "userType");
public Criteria andCreatorUserIdNotIn(List<Integer> values) {
addCriterion("creator_user_id not in", values, "creatorUserId");
return (Criteria) this;
}
public Criteria andUserTypeBetween(Boolean value1, Boolean value2) {
addCriterion("user_type between", value1, value2, "userType");
public Criteria andCreatorUserIdBetween(Integer value1, Integer value2) {
addCriterion("creator_user_id between", value1, value2, "creatorUserId");
return (Criteria) this;
}
public Criteria andUserTypeNotBetween(Boolean value1, Boolean value2) {
addCriterion("user_type not between", value1, value2, "userType");
public Criteria andCreatorUserIdNotBetween(Integer value1, Integer value2) {
addCriterion("creator_user_id not between", value1, value2, "creatorUserId");
return (Criteria) this;
}
......
......@@ -25,6 +25,18 @@ public class LitemallGrouponService {
return mapper.selectByExample(example);
}
public List<LitemallGroupon> queryMyGroupon(Integer userId) {
LitemallGrouponExample example = new LitemallGrouponExample();
example.or().andUserIdEqualTo(userId).andCreatorUserIdEqualTo(userId).andGrouponIdEqualTo(0).andDeletedEqualTo(false);
return mapper.selectByExample(example);
}
public List<LitemallGroupon> queryMyJoinGroupon(Integer userId) {
LitemallGrouponExample example = new LitemallGrouponExample();
example.or().andUserIdEqualTo(userId).andGrouponIdNotEqualTo(0).andDeletedEqualTo(false);
return mapper.selectByExample(example);
}
public LitemallGroupon queryByOrderId(Integer orderId) {
LitemallGrouponExample example = new LitemallGrouponExample();
example.or().andOrderIdEqualTo(orderId).andDeletedEqualTo(false);
......
......@@ -11,7 +11,7 @@
<result column="groupon_id" jdbcType="INTEGER" property="grouponId" />
<result column="rules_id" jdbcType="INTEGER" property="rulesId" />
<result column="user_id" jdbcType="INTEGER" property="userId" />
<result column="user_type" jdbcType="BIT" property="userType" />
<result column="creator_user_id" jdbcType="INTEGER" property="creatorUserId" />
<result column="add_time" jdbcType="TIMESTAMP" property="addTime" />
<result column="expire_time" jdbcType="TIMESTAMP" property="expireTime" />
<result column="share_url" jdbcType="VARCHAR" property="shareUrl" />
......@@ -90,8 +90,8 @@
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
-->
id, order_id, groupon_id, rules_id, user_id, user_type, add_time, expire_time, share_url,
payed, deleted, version
id, order_id, groupon_id, rules_id, user_id, creator_user_id, add_time, expire_time,
share_url, payed, deleted, version
</sql>
<select id="selectByExample" parameterType="org.linlinjava.litemall.db.domain.LitemallGrouponExample" resultMap="BaseResultMap">
<!--
......@@ -128,8 +128,8 @@
</foreach>
</when>
<otherwise>
id, order_id, groupon_id, rules_id, user_id, user_type, add_time, expire_time, share_url,
payed, deleted, version
id, order_id, groupon_id, rules_id, user_id, creator_user_id, add_time, expire_time,
share_url, payed, deleted, version
</otherwise>
</choose>
from litemall_groupon
......@@ -188,8 +188,8 @@
</foreach>
</when>
<otherwise>
id, order_id, groupon_id, rules_id, user_id, user_type, add_time, expire_time, share_url,
payed, deleted, version
id, order_id, groupon_id, rules_id, user_id, creator_user_id, add_time, expire_time,
share_url, payed, deleted, version
</otherwise>
</choose>
from litemall_groupon
......@@ -222,11 +222,11 @@
SELECT LAST_INSERT_ID()
</selectKey>
insert into litemall_groupon (order_id, groupon_id, rules_id,
user_id, user_type, add_time,
user_id, creator_user_id, add_time,
expire_time, share_url, payed,
deleted, version)
values (#{orderId,jdbcType=INTEGER}, #{grouponId,jdbcType=INTEGER}, #{rulesId,jdbcType=INTEGER},
#{userId,jdbcType=INTEGER}, #{userType,jdbcType=BIT}, #{addTime,jdbcType=TIMESTAMP},
#{userId,jdbcType=INTEGER}, #{creatorUserId,jdbcType=INTEGER}, #{addTime,jdbcType=TIMESTAMP},
#{expireTime,jdbcType=TIMESTAMP}, #{shareUrl,jdbcType=VARCHAR}, #{payed,jdbcType=BIT},
#{deleted,jdbcType=BIT}, #{version,jdbcType=INTEGER})
</insert>
......@@ -252,8 +252,8 @@
<if test="userId != null">
user_id,
</if>
<if test="userType != null">
user_type,
<if test="creatorUserId != null">
creator_user_id,
</if>
<if test="addTime != null">
add_time,
......@@ -287,8 +287,8 @@
<if test="userId != null">
#{userId,jdbcType=INTEGER},
</if>
<if test="userType != null">
#{userType,jdbcType=BIT},
<if test="creatorUserId != null">
#{creatorUserId,jdbcType=INTEGER},
</if>
<if test="addTime != null">
#{addTime,jdbcType=TIMESTAMP},
......@@ -342,8 +342,8 @@
<if test="record.userId != null">
user_id = #{record.userId,jdbcType=INTEGER},
</if>
<if test="record.userType != null">
user_type = #{record.userType,jdbcType=BIT},
<if test="record.creatorUserId != null">
creator_user_id = #{record.creatorUserId,jdbcType=INTEGER},
</if>
<if test="record.addTime != null">
add_time = #{record.addTime,jdbcType=TIMESTAMP},
......@@ -379,7 +379,7 @@
groupon_id = #{record.grouponId,jdbcType=INTEGER},
rules_id = #{record.rulesId,jdbcType=INTEGER},
user_id = #{record.userId,jdbcType=INTEGER},
user_type = #{record.userType,jdbcType=BIT},
creator_user_id = #{record.creatorUserId,jdbcType=INTEGER},
add_time = #{record.addTime,jdbcType=TIMESTAMP},
expire_time = #{record.expireTime,jdbcType=TIMESTAMP},
share_url = #{record.shareUrl,jdbcType=VARCHAR},
......@@ -409,8 +409,8 @@
<if test="userId != null">
user_id = #{userId,jdbcType=INTEGER},
</if>
<if test="userType != null">
user_type = #{userType,jdbcType=BIT},
<if test="creatorUserId != null">
creator_user_id = #{creatorUserId,jdbcType=INTEGER},
</if>
<if test="addTime != null">
add_time = #{addTime,jdbcType=TIMESTAMP},
......@@ -443,7 +443,7 @@
groupon_id = #{grouponId,jdbcType=INTEGER},
rules_id = #{rulesId,jdbcType=INTEGER},
user_id = #{userId,jdbcType=INTEGER},
user_type = #{userType,jdbcType=BIT},
creator_user_id = #{creatorUserId,jdbcType=INTEGER},
add_time = #{addTime,jdbcType=TIMESTAMP},
expire_time = #{expireTime,jdbcType=TIMESTAMP},
share_url = #{shareUrl,jdbcType=VARCHAR},
......@@ -483,8 +483,8 @@
</foreach>
</when>
<otherwise>
id, order_id, groupon_id, rules_id, user_id, user_type, add_time, expire_time, share_url,
payed, deleted, version
id, order_id, groupon_id, rules_id, user_id, creator_user_id, add_time, expire_time,
share_url, payed, deleted, version
</otherwise>
</choose>
from litemall_groupon
......
package org.linlinjava.litemall.wx.web;
import org.linlinjava.litemall.core.qcode.QCodeService;
import org.linlinjava.litemall.core.util.JacksonUtil;
import org.linlinjava.litemall.core.util.ResponseUtil;
import org.linlinjava.litemall.db.domain.LitemallGoods;
import org.linlinjava.litemall.db.domain.LitemallGroupon;
import org.linlinjava.litemall.db.domain.LitemallGrouponRules;
import org.linlinjava.litemall.db.service.LitemallGoodsService;
import org.linlinjava.litemall.db.service.LitemallGrouponRulesService;
import org.linlinjava.litemall.db.service.LitemallGrouponService;
import org.linlinjava.litemall.db.domain.*;
import org.linlinjava.litemall.db.service.*;
import org.linlinjava.litemall.db.util.OrderUtil;
import org.linlinjava.litemall.wx.annotation.LoginUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
......@@ -34,7 +29,11 @@ public class WxGrouponController {
@Autowired
private LitemallGoodsService goodsService;
@Autowired
private QCodeService qCodeService;
private LitemallOrderService orderService;
@Autowired
private LitemallOrderGoodsService orderGoodsService;
@Autowired
private LitemallUserService userService;
@GetMapping("detail")
public Object detail(@LoginUser Integer userId, @NotNull Integer grouponId) {
......@@ -65,83 +64,75 @@ public class WxGrouponController {
return ResponseUtil.ok(groupInfo);
}
@GetMapping("query")
public Object query(@NotNull Integer goodsId) {
LitemallGoods goods = goodsService.findById(goodsId);
if (goods == null) {
return ResponseUtil.fail(-1, "未找到对应的商品");
}
List<LitemallGrouponRules> rules = rulesService.queryByGoodsId(goodsId);
return ResponseUtil.ok(rules);
}
@RequestMapping("join")
public Object join(@LoginUser Integer userId, @RequestBody String body) {
@GetMapping("my")
public Object my(@LoginUser Integer userId, @RequestParam(defaultValue = "0") Integer showType) {
if (userId == null) {
return ResponseUtil.unlogin();
}
Integer rulesId = JacksonUtil.parseInteger(body, "rulesId");
LitemallGrouponRules rules = rulesService.queryById(rulesId);
if (rules == null) {
return ResponseUtil.fail(-1, "未找到对应的团购规则");
List<LitemallGroupon> myGroupons;
if (showType == 0) {
myGroupons = grouponService.queryMyGroupon(userId);
} else {
myGroupons = grouponService.queryMyJoinGroupon(userId);
}
Integer grouponId = JacksonUtil.parseInteger(body, "grouponId");
LitemallGroupon groupon = grouponService.queryById(grouponId);
if (groupon == null) {
return ResponseUtil.fail(-1, "未找到对应的团购活动");
List<Map<String, Object>> grouponVoList = new ArrayList<>(myGroupons.size());
LitemallOrder order;
LitemallGrouponRules rules;
LitemallUser creator;
for (LitemallGroupon groupon : myGroupons) {
order = orderService.findById(groupon.getOrderId());
rules = rulesService.queryById(groupon.getRulesId());
creator = userService.findById(groupon.getCreatorUserId());
Map<String, Object> grouponVo = new HashMap<>();
//填充团购信息
grouponVo.put("id", groupon.getId());
grouponVo.put("groupon", groupon);
grouponVo.put("rules", rules);
grouponVo.put("creator", creator.getNickname());
grouponVo.put("isCreator", creator.getId() == userId && groupon.getGrouponId() == 0);
//填充订单信息
grouponVo.put("orderId", order.getId());
grouponVo.put("orderSn", order.getOrderSn());
grouponVo.put("actualPrice", order.getActualPrice());
grouponVo.put("orderStatusText", OrderUtil.orderStatusText(order));
grouponVo.put("handleOption", OrderUtil.build(order));
List<LitemallOrderGoods> orderGoodsList = orderGoodsService.queryByOid(order.getId());
List<Map<String, Object>> orderGoodsVoList = new ArrayList<>(orderGoodsList.size());
for (LitemallOrderGoods orderGoods : orderGoodsList) {
Map<String, Object> orderGoodsVo = new HashMap<>();
orderGoodsVo.put("id", orderGoods.getId());
orderGoodsVo.put("goodsName", orderGoods.getGoodsName());
orderGoodsVo.put("number", orderGoods.getNumber());
orderGoodsVo.put("picUrl", orderGoods.getPicUrl());
orderGoodsVoList.add(orderGoodsVo);
}
grouponVo.put("goodsList", orderGoodsVoList);
grouponVoList.add(grouponVo);
}
LitemallGroupon groupon2 = new LitemallGroupon();
groupon2.setUserId(userId);
groupon2.setRulesId(rulesId);
groupon2.setShareUrl("");
//参与者
groupon2.setUserType(false);
groupon2.setGrouponId(grouponId);
groupon2.setAddTime(LocalDateTime.now());
//过期时间与创建一致
groupon2.setExpireTime(groupon.getExpireTime());
Map<String, Object> result = new HashMap<>();
result.put("count", grouponVoList.size());
result.put("data", grouponVoList);
grouponService.createGroupon(groupon);
return ResponseUtil.ok();
return ResponseUtil.ok(result);
}
@GetMapping("create")
public Object create(@LoginUser Integer userId, @NotNull Integer rulesId) {
if (userId == null) {
return ResponseUtil.unlogin();
}
LitemallGrouponRules rules = rulesService.queryById(rulesId);
if (rules == null) {
return ResponseUtil.fail(-1, "未找到对应的团购规则");
@GetMapping("query")
public Object query(@NotNull Integer goodsId) {
LitemallGoods goods = goodsService.findById(goodsId);
if (goods == null) {
return ResponseUtil.fail(-1, "未找到对应的商品");
}
LitemallGroupon groupon = new LitemallGroupon();
groupon.setUserId(userId);
groupon.setRulesId(rulesId);
//发起者
groupon.setUserType(true);
groupon.setGrouponId(0);
groupon.setAddTime(LocalDateTime.now());
groupon.setExpireTime(LocalDateTime.now().plusDays(2));
grouponService.createGroupon(groupon);
qCodeService.createGrouponShareImage(rules.getGoodsName(), rules.getPicUrl(), groupon);
groupon.setShareUrl(qCodeService.getShareImageUrl(groupon.getId().toString()));
grouponService.update(groupon);
List<LitemallGrouponRules> rules = rulesService.queryByGoodsId(goodsId);
return ResponseUtil.ok();
return ResponseUtil.ok(rules);
}
@RequestMapping("list")
......
......@@ -401,10 +401,11 @@ public class WxOrderController {
//参与者
if (grouponLinkId != null && grouponLinkId > 0) {
groupon.setUserType(false);
LitemallGroupon baseGroupon = grouponService.queryById(grouponLinkId);
groupon.setCreatorUserId(baseGroupon.getCreatorUserId());
groupon.setGrouponId(grouponLinkId);
} else {
groupon.setUserType(true);
groupon.setCreatorUserId(userId);
groupon.setGrouponId(0);
}
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment