Browse Source

添加团购

Menethil 7 years ago
parent
commit
39135af382

+ 2 - 2
litemall-core/src/main/java/org/linlinjava/litemall/core/qcode/QCodeService.java

@@ -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) {

+ 14 - 14
litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallGroupon.java

@@ -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"),

+ 24 - 24
litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallGrouponExample.java

@@ -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;
         }
 

+ 12 - 0
litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallGrouponService.java

@@ -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);

+ 21 - 21
litemall-db/src/main/resources/org/linlinjava/litemall/db/dao/LitemallGrouponMapper.xml

@@ -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

+ 65 - 74
litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxGrouponController.java

@@ -1,24 +1,19 @@
 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")

+ 3 - 2
litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxOrderController.java

@@ -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);
                 }