admin
2021-01-08 7e389247b3b2877c12f1eaae6e33c9c33e91d2dd
活动添加后台完善
19个文件已修改
4个文件已添加
15561 ■■■■■ 已修改文件
facade-lucky/src/main/java/com/ks/lucky/pojo/DO/LuckyActivityAwards.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
facade-lucky/src/main/java/com/ks/lucky/pojo/DO/LuckySponsors.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
facade-lucky/src/main/java/com/ks/lucky/remote/service/LuckyActivityAwardMaterialService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
facade-lucky/src/main/java/com/ks/lucky/remote/service/LuckyActivityAwardService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
facade-lucky/src/main/java/com/ks/lucky/remote/service/LuckyActivityService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
facade-lucky/src/main/java/com/ks/lucky/remote/service/LuckyActivitySponsorInfoService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
facade-lucky/src/main/java/com/ks/lucky/remote/service/LuckySponsorAdService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-daylucky/src/main/java/com/ks/daylucky/controller/admin/AdminActivityController.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-daylucky/src/main/java/com/ks/daylucky/pojo/DO/ActivityExtraInfo.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-daylucky/src/main/java/com/ks/daylucky/pojo/VO/admin/ActivityAdminVo.java 318 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-daylucky/src/main/java/com/ks/daylucky/util/factory/vo/LuckyActivityFactory.java 165 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-daylucky/src/main/resources/static/activity-add.html 455 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-daylucky/src/main/resources/static/js/common.js 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-daylucky/src/main/resources/static/js/lodash.js 14400 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-daylucky/src/main/resources/static/sponsor-ad-alipaylife.html 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-lucky/src/main/java/com/ks/lucky/service/impl/LuckyActivityAwardManager.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-lucky/src/main/java/com/ks/lucky/service/impl/LuckyActivitySponsorInfoManager.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-lucky/src/main/java/com/ks/lucky/service/impl/remote/LuckyActivityAwardMaterialServiceImpl.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-lucky/src/main/java/com/ks/lucky/service/impl/remote/LuckyActivityAwardServiceImpl.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-lucky/src/main/java/com/ks/lucky/service/impl/remote/LuckyActivityServiceImpl.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-lucky/src/main/java/com/ks/lucky/service/impl/remote/LuckyActivitySponsorInfoServiceImpl.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-lucky/src/main/java/com/ks/lucky/service/impl/remote/LuckySponsorAdServiceImpl.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-lucky/src/test/java/com/ks/lucky/ActivityTest.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
facade-lucky/src/main/java/com/ks/lucky/pojo/DO/LuckyActivityAwards.java
@@ -1,5 +1,6 @@
package com.ks.lucky.pojo.DO;
import com.ks.lucky.pojo.DTO.ActivityAwardParams;
import org.springframework.data.annotation.Transient;
import org.yeshi.utils.generater.mybatis.Table;
facade-lucky/src/main/java/com/ks/lucky/pojo/DO/LuckySponsors.java
@@ -19,8 +19,15 @@
    private Long id;
    public LuckySponsors(Long id) {
        this.id = id;
    }
    public LuckySponsors() {
    }
    @NotEmpty(message = "账号不能为空")
    @Pattern(regexp = "^(\\w|@|_|\\.){3,64}$",message = "账号只能包含英文、数字、@、_")
    @Pattern(regexp = "^(\\w|@|_|\\.){3,64}$", message = "账号只能包含英文、数字、@、_")
    private String account;
    @NotEmpty(message = "密码不能为空")
facade-lucky/src/main/java/com/ks/lucky/remote/service/LuckyActivityAwardMaterialService.java
@@ -18,7 +18,7 @@
     * @param awardMaterial
     * @throws LuckyActivityAwardMaterialException
     */
    public void addAwardMaterial(@Valid LuckyActivityAwardMaterial awardMaterial) throws ParamsException,LuckyActivityAwardMaterialException;
    public String addAwardMaterial(@Valid LuckyActivityAwardMaterial awardMaterial) throws ParamsException,LuckyActivityAwardMaterialException;
    /**
facade-lucky/src/main/java/com/ks/lucky/remote/service/LuckyActivityAwardService.java
@@ -2,6 +2,7 @@
import com.ks.lib.common.exception.ParamsException;
import com.ks.lucky.exception.LuckyActivityAwardException;
import com.ks.lucky.exception.LuckyActivityAwardMaterialException;
import com.ks.lucky.pojo.DO.LuckyActivityAwards;
import javax.validation.Valid;
@@ -18,7 +19,7 @@
     * @param award
     * @throws LuckyActivityAwardException
     */
    public Long addAward(@Valid LuckyActivityAwards award) throws ParamsException,LuckyActivityAwardException;
    public Long addAward(@Valid LuckyActivityAwards award) throws ParamsException, LuckyActivityAwardException, LuckyActivityAwardMaterialException;
    /**
facade-lucky/src/main/java/com/ks/lucky/remote/service/LuckyActivityService.java
@@ -1,7 +1,7 @@
package com.ks.lucky.remote.service;
import com.ks.lib.common.exception.ParamsException;
import com.ks.lucky.exception.LuckyActivityException;
import com.ks.lucky.exception.*;
import com.ks.lucky.pojo.DO.LuckyActivity;
import javax.validation.Valid;
@@ -11,6 +11,8 @@
 * 抽奖活动服务
 */
public interface LuckyActivityService {
    public Long addActivity(LuckyActivity activity) throws ParamsException, LuckyActivityException, LuckyActivitySponsorInfoException, LuckyActivityAwardException, LuckyActivityOpenInfoException, LuckySponsorAdException, LuckyActivityAwardMaterialException;
    /**
     * 获取有效的活动列表
@@ -27,6 +29,7 @@
    /**
     * 获取有效的活动列表
     *
     * @param appId
     * @param sponsorId
     * @param stateList
@@ -51,6 +54,7 @@
    /**
     * 有效的活动计数
     *
     * @param appId
     * @param sponsorId
     * @param stateList
@@ -59,8 +63,6 @@
     * @return
     */
    public long countActivity(Long appId, Long sponsorId, List<Integer> stateList, String key, List<Long> excludeActivityIds);
    /**
facade-lucky/src/main/java/com/ks/lucky/remote/service/LuckyActivitySponsorInfoService.java
@@ -2,6 +2,7 @@
import com.ks.lib.common.exception.ParamsException;
import com.ks.lucky.exception.LuckyActivitySponsorInfoException;
import com.ks.lucky.exception.LuckySponsorAdException;
import com.ks.lucky.pojo.DO.LuckyActivitySponsorInfo;
import javax.validation.Valid;
@@ -18,7 +19,7 @@
     * @param sponsorInfo
     * @throws LuckyActivitySponsorInfoException
     */
    public Long addSponsorInfo(@Valid LuckyActivitySponsorInfo sponsorInfo) throws ParamsException,LuckyActivitySponsorInfoException;
    public Long addSponsorInfo(@Valid LuckyActivitySponsorInfo sponsorInfo) throws ParamsException, LuckyActivitySponsorInfoException, LuckySponsorAdException;
    /**
     * 修改赞助信息
facade-lucky/src/main/java/com/ks/lucky/remote/service/LuckySponsorAdService.java
@@ -68,7 +68,7 @@
     * @param ad
     * @throws LuckySponsorAdException
     */
    public void addSponsorAd(@Valid LuckySponsorAd ad) throws ParamsException,LuckySponsorAdException;
    public String addSponsorAd(@Valid LuckySponsorAd ad) throws ParamsException,LuckySponsorAdException;
    /**
service-daylucky/src/main/java/com/ks/daylucky/controller/admin/AdminActivityController.java
New file
@@ -0,0 +1,78 @@
package com.ks.daylucky.controller.admin;
import com.google.gson.Gson;
import com.ks.daylucky.pojo.DO.ActivityExtraInfo;
import com.ks.daylucky.pojo.VO.admin.ActivityAdminVo;
import com.ks.daylucky.service.ActivityExtraInfoService;
import com.ks.daylucky.util.factory.vo.LuckyActivityFactory;
import com.ks.lib.common.exception.ParamsException;
import com.ks.lucky.exception.*;
import com.ks.lucky.pojo.DO.LuckyActivity;
import com.ks.lucky.remote.service.LuckyActivityService;
import net.sf.json.JSONObject;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.yeshi.utils.JsonUtil;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
@Controller
@RequestMapping("/admin/activity")
public class AdminActivityController {
    @Reference(version = "1.0.0")
    private LuckyActivityService luckyActivityService;
    @Resource
    private ActivityExtraInfoService activityExtraInfoService;
    /**
     * 添加活动
     *
     * @param request
     * @param data
     * @return
     */
    @ResponseBody
    @RequestMapping("addActivity")
    public String addActivity(HttpServletRequest request, String data) {
        ActivityAdminVo vo = new Gson().fromJson(data, ActivityAdminVo.class);
        Long sponsorId = 1L;
        Long appId = 4L;
        LuckyActivity activity = LuckyActivityFactory.create(sponsorId, vo);
        activity.setAppId(appId);
        try {
            Long activityId = luckyActivityService.addActivity(activity);
            ActivityExtraInfo extraInfo = LuckyActivityFactory.getActivityExtra(vo.getOpenInfo());
            extraInfo.setActivityId(activityId);
            activityExtraInfoService.add(extraInfo);
            JSONObject result = new JSONObject();
            result.put("id", activityId);
            return JsonUtil.loadTrueResult(result);
        } catch (ParamsException e) {
            e.printStackTrace();
            return JsonUtil.loadFalseResult("参数不完整");
        } catch (LuckyActivityException e) {
            e.printStackTrace();
        } catch (LuckyActivitySponsorInfoException e) {
            e.printStackTrace();
        } catch (LuckyActivityAwardException e) {
            e.printStackTrace();
        } catch (LuckyActivityOpenInfoException e) {
            e.printStackTrace();
        } catch (LuckySponsorAdException e) {
            e.printStackTrace();
        } catch (LuckyActivityAwardMaterialException e) {
            e.printStackTrace();
        }
        return JsonUtil.loadFalseResult("添加出错");
    }
}
service-daylucky/src/main/java/com/ks/daylucky/pojo/DO/ActivityExtraInfo.java
@@ -11,9 +11,19 @@
    private Long activityId;
    //活动分享图
    private String shareImageLink;
    //活动有效天数
    private Integer validDay;
    private Date createTime;
    private Date updateTime;
    public Integer getValidDay() {
        return validDay;
    }
    public void setValidDay(Integer validDay) {
        this.validDay = validDay;
    }
    public Long getActivityId() {
        return activityId;
    }
service-daylucky/src/main/java/com/ks/daylucky/pojo/VO/admin/ActivityAdminVo.java
New file
@@ -0,0 +1,318 @@
package com.ks.daylucky.pojo.VO.admin;
import java.math.BigDecimal;
import java.util.List;
public class ActivityAdminVo {
    private Long id;
    private ActivityBean activity;
    private JoinInfoBean joinInfo;
    private OpenInfoBean openInfo;
    private List<AwardInfoBean> awardInfo;
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public ActivityBean getActivity() {
        return activity;
    }
    public void setActivity(ActivityBean activity) {
        this.activity = activity;
    }
    public JoinInfoBean getJoinInfo() {
        return joinInfo;
    }
    public void setJoinInfo(JoinInfoBean joinInfo) {
        this.joinInfo = joinInfo;
    }
    public OpenInfoBean getOpenInfo() {
        return openInfo;
    }
    public void setOpenInfo(OpenInfoBean openInfo) {
        this.openInfo = openInfo;
    }
    public List<AwardInfoBean> getAwardInfo() {
        return awardInfo;
    }
    public void setAwardInfo(List<AwardInfoBean> awardInfo) {
        this.awardInfo = awardInfo;
    }
    public static class ActivityBean {
        /**
         * poster : https://daylucky-1255749512.cos.ap-nanjing.myqcloud.com/image/activity/poster/4dad5e05-9fa8-4f47-8b40-f5b5255ee4fc.png
         */
        private String poster;
        private List<BannerBean> bannerList;
        public List<BannerBean> getBannerList() {
            return bannerList;
        }
        public void setBannerList(List<BannerBean> bannerList) {
            this.bannerList = bannerList;
        }
        public String getPoster() {
            return poster;
        }
        public void setPoster(String poster) {
            this.poster = poster;
        }
        public static class BannerBean {
            private String id;
            private String url;
            public String getUrl() {
                return url;
            }
            public void setUrl(String url) {
                this.url = url;
            }
            public String getId() {
                return id;
            }
            public void setId(String id) {
                this.id = id;
            }
        }
    }
    public static class JoinInfoBean {
        /**
         * adInfo : {"data":{"icon":"https://daylucky-1255749512.cos.ap-nanjing.myqcloud.com/image/activity/sponsorad/79e3c033-ac7c-4b7d-9aa2-5dbce85ee6ea.png","name":"2133322222","sceneId":"213213321","desc":""},"type":"alipayLife"}
         * must : 0
         * desc : 参与条件说明
         */
        private AdInfoBean adInfo;
        private Integer must;
        private String desc;
        public AdInfoBean getAdInfo() {
            return adInfo;
        }
        public void setAdInfo(AdInfoBean adInfo) {
            this.adInfo = adInfo;
        }
        public Integer getMust() {
            return must;
        }
        public void setMust(Integer must) {
            this.must = must;
        }
        public String getDesc() {
            return desc;
        }
        public void setDesc(String desc) {
            this.desc = desc;
        }
        public static class AdInfoBean {
            /**
             * data : {"icon":"https://daylucky-1255749512.cos.ap-nanjing.myqcloud.com/image/activity/sponsorad/79e3c033-ac7c-4b7d-9aa2-5dbce85ee6ea.png","name":"2133322222","sceneId":"213213321","desc":""}
             * type : alipayLife
             */
            private DataBean data;
            private String type;
            public DataBean getData() {
                return data;
            }
            public void setData(DataBean data) {
                this.data = data;
            }
            public String getType() {
                return type;
            }
            public void setType(String type) {
                this.type = type;
            }
            public static class DataBean {
                /**
                 * icon : https://daylucky-1255749512.cos.ap-nanjing.myqcloud.com/image/activity/sponsorad/79e3c033-ac7c-4b7d-9aa2-5dbce85ee6ea.png
                 * name : 2133322222
                 * sceneId : 213213321
                 * desc :
                 */
                private String icon;
                private String name;
                private String sceneId;
                private String desc;
                public String getIcon() {
                    return icon;
                }
                public void setIcon(String icon) {
                    this.icon = icon;
                }
                public String getName() {
                    return name;
                }
                public void setName(String name) {
                    this.name = name;
                }
                public String getSceneId() {
                    return sceneId;
                }
                public void setSceneId(String sceneId) {
                    this.sceneId = sceneId;
                }
                public String getDesc() {
                    return desc;
                }
                public void setDesc(String desc) {
                    this.desc = desc;
                }
            }
        }
    }
    public static class OpenInfoBean {
        /**
         * minPersonCount : 1000
         * day : 2
         */
        private Integer minPersonCount;
        private Integer day;
        public Integer getMinPersonCount() {
            return minPersonCount;
        }
        public void setMinPersonCount(Integer minPersonCount) {
            this.minPersonCount = minPersonCount;
        }
        public Integer getDay() {
            return day;
        }
        public void setDay(Integer day) {
            this.day = day;
        }
    }
    public static class AwardInfoBean {
        /**
         * title : 奖项一
         * data : {"total":"100","count":"1000","type":2}
         * selected : true
         */
        private String title;
        private DataBeanX data;
        private String type;
        private boolean selected;
        public String getType() {
            return type;
        }
        public void setType(String type) {
            this.type = type;
        }
        public String getTitle() {
            return title;
        }
        public void setTitle(String title) {
            this.title = title;
        }
        public DataBeanX getData() {
            return data;
        }
        public void setData(DataBeanX data) {
            this.data = data;
        }
        public boolean isSelected() {
            return selected;
        }
        public void setSelected(boolean selected) {
            this.selected = selected;
        }
        public static class DataBeanX {
            /**
             * total : 100
             * count : 1000
             * type : 2
             */
            private BigDecimal total;
            private Integer count;
            private int type;
            public BigDecimal getTotal() {
                return total;
            }
            public void setTotal(BigDecimal total) {
                this.total = total;
            }
            public Integer getCount() {
                return count;
            }
            public void setCount(Integer count) {
                this.count = count;
            }
            public int getType() {
                return type;
            }
            public void setType(int type) {
                this.type = type;
            }
        }
    }
}
service-daylucky/src/main/java/com/ks/daylucky/util/factory/vo/LuckyActivityFactory.java
New file
@@ -0,0 +1,165 @@
package com.ks.daylucky.util.factory.vo;
import com.google.gson.Gson;
import com.ks.daylucky.pojo.DO.ActivityExtraInfo;
import com.ks.daylucky.pojo.VO.admin.ActivityAdminVo;
import com.ks.lucky.pojo.DO.*;
import com.ks.lucky.pojo.DTO.ActivityAwardParams;
import com.ks.lucky.pojo.DTO.sponsorad.AlipayLifeAdInfo;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.List;
public class LuckyActivityFactory {
    public static LuckyActivity create(Long sponsorId, ActivityAdminVo vo) {
        LuckyActivity activity = createActivity(sponsorId, vo.getActivity());
        activity.setAwardsList(createAwards(vo.getAwardInfo()));
        activity.setSponsorInfo(createSponsorInfo(sponsorId, vo.getJoinInfo()));
        activity.setOpenInfo(createOpenInfo(vo.getOpenInfo()));
        return activity;
    }
    /**
     * 附加信息
     *
     * @param bean
     * @return
     */
    public static ActivityExtraInfo getActivityExtra(ActivityAdminVo.OpenInfoBean bean) {
        ActivityExtraInfo info = new ActivityExtraInfo();
        info.setValidDay(bean.getDay());
        return info;
    }
    /**
     * 主活动
     *
     * @param sponsorId
     * @param bean
     * @return
     */
    private static LuckyActivity createActivity(Long sponsorId, ActivityAdminVo.ActivityBean bean) {
        LuckyActivity activity = new LuckyActivity();
        activity.setSponsorId(sponsorId);
        activity.setMaterialPoster(bean.getPoster());
        activity.setMaxPersonCount(100000);
        activity.setBannerList(createBannerList(bean));
        return activity;
    }
    /**
     * 奖项信息
     *
     * @param awardInfo
     * @return
     */
    private static List<LuckyActivityAwards> createAwards(List<ActivityAdminVo.AwardInfoBean> awardInfo) {
        List<LuckyActivityAwards> awardsList = new ArrayList<>();
        int level = 0;
        for (ActivityAdminVo.AwardInfoBean bean : awardInfo) {
            LuckyActivityAwards awards = new LuckyActivityAwards();
            awards.setMaterial(createAwardMaterial(bean));
            awards.setLevel(level++);
            awards.setCount(bean.getData().getCount());
            awards.setAwardWay(bean.getData().getType());
            //支付宝红包
            if (bean.getType().equalsIgnoreCase(LuckyActivityAwardMaterial.ActivityAwardMaterialType.alipayRedPackage.name())) {
                String awardName = null;
                switch (bean.getData().getType()) {
                    case LuckyActivityAwards.AWARD_WAY_DIVIDE:
                        BigDecimal percent = bean.getData().getTotal().divide(new BigDecimal(bean.getData().getCount()), 2, RoundingMode.FLOOR);
                        awardName = String.format("固定金额红包%s元×%s份", percent, bean.getData().getCount());
                        break;
                    case LuckyActivityAwards.AWARD_WAY_RANDOM:
                        awardName = String.format("随机金额红包共%s元,%s份", bean.getData().getTotal(), bean.getData().getCount());
                        break;
                }
                awards.setAwardName(awardName);
                ActivityAwardParams params = new ActivityAwardParams(ActivityAwardParams.ActivityAwardTypeEnum.alipayRedPackage, bean.getData().getTotal());
                awards.setAwardParams(new Gson().toJson(params));
            }
            awardsList.add(awards);
        }
        return awardsList;
    }
    /**
     * 赞助信息
     *
     * @param sponsorId
     * @param bean
     * @return
     */
    private static LuckyActivitySponsorInfo createSponsorInfo(Long sponsorId, ActivityAdminVo.JoinInfoBean bean) {
        LuckyActivitySponsorInfo sponsorInfo = new LuckyActivitySponsorInfo();
        sponsorInfo.setSponsorId(sponsorId);
        sponsorInfo.setAd(createSponsorAd(sponsorId, bean));
        sponsorInfo.setSponsors(new LuckySponsors(sponsorId));
        return sponsorInfo;
    }
    /**
     * 开奖信息
     *
     * @param bean
     * @return
     */
    private static LuckyActivityOpenInfo createOpenInfo(ActivityAdminVo.OpenInfoBean bean) {
        LuckyActivityOpenInfo openInfo = new LuckyActivityOpenInfo();
        openInfo.setOpenType(LuckyActivityOpenInfo.OPEN_TYPE_PERSON_AND_TIME);
        openInfo.setMinPersonCount(bean.getMinPersonCount());
        return openInfo;
    }
    private static List<LuckyActivityImage> createBannerList(ActivityAdminVo.ActivityBean bean) {
        List<LuckyActivityImage> list = new ArrayList<>();
        int count = bean.getBannerList().size();
        for (ActivityAdminVo.ActivityBean.BannerBean banner : bean.getBannerList()) {
            LuckyActivityImage image = new LuckyActivityImage();
            image.setId(banner.getId());
            image.setUrl(banner.getUrl());
            image.setType(LuckyActivityImage.LuckyImageType.banner);
            image.setWeight(count--);
            list.add(image);
        }
        return list;
    }
    private static LuckySponsorAd createSponsorAd(Long sponsorId, ActivityAdminVo.JoinInfoBean bean) {
        LuckySponsorAd ad = new LuckySponsorAd();
        //关注支付宝生活号
        if (bean.getAdInfo().getType().equalsIgnoreCase(LuckySponsorAd.SponsorAdType.alipayLife.name())) {
            AlipayLifeAdInfo alipayLifeAdInfo = new AlipayLifeAdInfo();
            alipayLifeAdInfo.setMustAttention(bean.getMust() > 0);
            alipayLifeAdInfo.setName(bean.getAdInfo().getData().getName());
            alipayLifeAdInfo.setIcon(bean.getAdInfo().getData().getIcon());
            alipayLifeAdInfo.setDesc(bean.getAdInfo().getData().getDesc());
            alipayLifeAdInfo.setSceneId(bean.getAdInfo().getData().getSceneId());
            ad.setAlipayLifeAdInfo(alipayLifeAdInfo);
        }
        ad.setAdType(LuckySponsorAd.SponsorAdType.valueOf(bean.getAdInfo().getType()));
        ad.setSponsorId(sponsorId);
        return ad;
    }
    private static LuckyActivityAwardMaterial createAwardMaterial(ActivityAdminVo.AwardInfoBean bean) {
        LuckyActivityAwardMaterial material = new LuckyActivityAwardMaterial();
        material.setType(LuckyActivityAwardMaterial.ActivityAwardMaterialType.valueOf(bean.getType()));
        return material;
    }
}
service-daylucky/src/main/resources/static/activity-add.html
@@ -20,6 +20,8 @@
    <!--[if lt IE 9]>
    <script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script>
    <script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
    <script src="js/http.js"></script>
    <![endif]-->
    <style>
@@ -137,7 +139,7 @@
                            </div>
                        </div>
                        <button class="layui-btn layui-btn-radius layui-btn-normal"
                        <button class="layui-btn layui-btn-radius layui-btn-normal hidden"
                                id="saveActivityInfo" lay-submit="">保存
                        </button>
@@ -192,7 +194,7 @@
                            </div>
                        </div>
                    </div>
                    <button class="layui-btn layui-btn-radius layui-btn-normal" id="saveAwardInfo" lay-submit="">保存
                    <button class="layui-btn layui-btn-radius layui-btn-normal hidden" id="saveAwardInfo" lay-submit="">保存
                    </button>
@@ -259,7 +261,7 @@
                              autocomplete="off" class="layui-textarea" maxlength="256"></textarea></div>
                    </div>
                    <button class="layui-btn layui-btn-radius layui-btn-normal" id="saveJoinInfo"
                    <button class="layui-btn layui-btn-radius layui-btn-normal hidden" id="saveJoinInfo"
                            lay-filter="save-activity" lay-submit="">保存
                    </button>
                </form>
@@ -307,8 +309,7 @@
                        </div>
                    </div>
                    <button class="layui-btn layui-btn-radius layui-btn-normal" id="saveOpenInfo"
                            lay-filter="save-activity" lay-submit="">保存
                    <button class="layui-btn layui-btn-radius layui-btn-normal hidden" id="saveOpenInfo" lay-submit="">保存
                    </button>
                </form>
            </div>
@@ -316,133 +317,148 @@
        <button class="layui-btn layui-btn-warm layui-btn-lg" v-on:click="submit">立即提交</button>
    </div>
</div>
<script src="js/lodash.js"></script>
<script src="js/common.js"></script>
<script>
    //验证管理器
    var validManager = {
        //验证抽奖信息
        verifyActivityInfo() {
            const field = common.layuiForm.val('form-activity-info');
            if (!$("#poster").attr("src")) {
                common.notify.error("请选择封面图片");
                return false;
            }
            //判断条件
            if (field.showBanner == 1 && $(".banner").find("img").length == 0) {
                common.notify.error("请选择banner图片");
                return false;
            }
            if (field.showBanner == 1 && $(".banner").find("img").length > 3) {
                common.notify.error("banner图最多3张");
                return false;
            }
            return true;
        },
        //验证奖品信息
        verifyAwardInfo() {
            console.log("verifyAwardInfo");
            if (app.tempAwardsList == null || app.tempAwardsList.length == 0) {
                common.notify.error("请添加奖项");
                return false;
            }
            var hasAward = false;
            for (var i = 0; i < app.tempAwardsList.length; i++) {
                if (app.tempAwardsList[i].data && app.tempAwardsList[i].data.type) {
                    hasAward = true;
                    break;
                }
            }
            if (!hasAward) {
                common.notify.error("请选择奖项类型");
                return false;
            }
            const field = common.layuiForm.val('form-award-info');
            return true;
        },
        //验证参与信息
        verifyJoinInfo() {
            const field = common.layuiForm.val('form-join-info');
            console.log(field);
            if (!app.joinInfo.adInfo.data) {
                common.notify.error("请选择参与条件-跳转链路");
                return false;
            }
            return true;
        },
        //验证开奖条件
        verifyOpenInfo() {
            const field = common.layuiForm.val('form-open-info');
            console.log(field);
            if (parseInt(field.minPersonCount) < 1000 || parseInt(field.minPersonCount) > 10000) {
                common.notify.error("至少参与人数的范围为:1000-10000");
                return false;
            }
            if (parseInt(field.day) < 1 || parseInt(field.day) > 7) {
                common.notify.error("活动有效期的范围为:1-7");
                return false;
            }
            return true;
        },
        verify(es) {
            for (var i = 0; i < es.length; i++) {
                if (!es[i]()) {
                    return false;
                }
            }
            return true;
        },
        verifyAll() {
            return this.verify([this.verifyActivityInfo, this.verifyAwardInfo, this.verifyJoinInfo, this.verifyOpenInfo]);
        }
    };
    var formManager = {
        //保存到临时变量
        saveActivityInfoToTemp() {
            app.temp.activity = app.activity;
        },
        saveAwardInfoToTemp() {
            app.temp.awardInfo = app.tempAwardsList;
        },
        saveJoinInfoToTemp() {
            //赋值
            const field = common.layuiForm.val('form-join-info');
            var joinInfo = app.joinInfo;
            joinInfo.must = field.must;
            joinInfo.desc = field.desc;
            app.temp.joinInfo = joinInfo;
        },
        saveOpenInfoToTemp() {
            const field = common.layuiForm.val('form-open-info');
            var openInfo = app.openInfo;
            for (key in field) {
                openInfo[key] = field[key];
            }
            app.temp.openInfo = openInfo;
        },
        saveToTemp() {
            this.saveActivityInfoToTemp();
            this.saveAwardInfoToTemp();
            this.saveJoinInfoToTemp();
            this.saveOpenInfoToTemp();
<script>;
//验证管理器
var validManager = {
    //验证抽奖信息
    verifyActivityInfo() {
        console.log("验证抽奖信息");
        const field = common.layuiForm.val('form-activity-info');
        if (!$("#poster").attr("src")) {
            common.notify.error("请选择封面图片");
            return false;
        }
    };
        //判断条件
        if (field.showBanner == 1 && $(".banner").find("img").length == 0) {
            common.notify.error("请选择banner图片");
            return false;
        }
        if (field.showBanner == 1 && $(".banner").find("img").length > 3) {
            common.notify.error("banner图最多3张");
            return false;
        }
        return true;
    },
    //验证奖品信息
    verifyAwardInfo() {
        console.log("验证奖品信息");
        if (app.tempAwardsList == null || app.tempAwardsList.length == 0) {
            common.notify.error("请添加奖项");
            return false;
        }
        var hasAward = false;
        for (var i = 0; i < app.tempAwardsList.length; i++) {
            if (app.tempAwardsList[i].data && app.tempAwardsList[i].data.type) {
                hasAward = true;
                break;
            }
        }
        if (!hasAward) {
            common.notify.error("请选择奖项类型");
            return false;
        }
        const field = common.layuiForm.val('form-award-info');
        return true;
    },
    //验证参与信息
    verifyJoinInfo() {
        console.log("验证参与条件");
        const field = common.layuiForm.val('form-join-info');
        console.log(field);
        if (!app.joinInfo.adInfo.data) {
            common.notify.error("请选择参与条件-跳转链路");
            return false;
        }
        return true;
    },
    //验证开奖条件
    verifyOpenInfo() {
        console.log("验证开奖条件");
        const field = common.layuiForm.val('form-open-info');
        console.log(field);
        alert(parseInt(field.minPersonCount));
        alert(parseInt(field.day));
        if (!parseInt(field.minPersonCount)) {
            common.notify.error("请填写正确的参与人数");
            return false;
        }
        if (!parseInt(field.day)) {
            common.notify.error("请填写正确的天数");
            return false;
        }
        if (parseInt(field.minPersonCount) < 1000 || parseInt(field.minPersonCount) > 10000) {
            common.notify.error("至少参与人数的范围为:1000-10000");
            return false;
        }
        if (parseInt(field.day) < 1 || parseInt(field.day) > 7) {
            common.notify.error("活动有效期的范围为:1-7");
            return false;
        }
        return true;
    },
    verify(es) {
        for (var i = 0; i < es.length; i++) {
            if (!es[i]()) {
                return false;
            }
        }
        return true;
    },
    verifyAll() {
        return this.verify([this.verifyActivityInfo, this.verifyAwardInfo, this.verifyJoinInfo, this.verifyOpenInfo]);
    }
};
var formManager = {
    //保存到临时变量
    saveActivityInfoToTemp() {
        app.temp.activity = app.activity;
    },
    saveAwardInfoToTemp() {
        app.temp.awardInfo = app.tempAwardsList;
    },
    saveJoinInfoToTemp() {
        //赋值
        const field = common.layuiForm.val('form-join-info');
        var joinInfo = app.joinInfo;
        joinInfo.must = field.must;
        joinInfo.desc = field.desc;
        app.temp.joinInfo = joinInfo;
    },
    saveOpenInfoToTemp() {
        const field = common.layuiForm.val('form-open-info');
        var openInfo = app.openInfo;
        for (key in field) {
            openInfo[key] = field[key];
        }
        app.temp.openInfo = openInfo;
    },
    saveToTemp() {
        this.saveActivityInfoToTemp();
        this.saveAwardInfoToTemp();
        this.saveJoinInfoToTemp();
        this.saveOpenInfoToTemp();
    }
};
</script>
@@ -450,25 +466,40 @@
    //文件上传初始化
    var uploadPoster;
    var uploadBanner;
    var posterFileList;
    var bannerFileList;
    common.initLayui(function () {
        //layui相关初始化成功
        app.initData();
        uploadPoster = common.initUploadImagePlugin({
        const uploadPosterParams = {
            elem: "#choicePoster",
            showElem: "#poster",
            uploadUrl: "/admin/upload/image?from=activity",
            dir: 'poster',
            field: "image",
            choose(obj) {
                var files = posterFileList = obj.pushFile();
                obj.preview(function (index, file, result) {
                    $("#poster").attr("src", result);
                });
            },
            uploadSuccess: function (res) {
                app.posterUploadSuccess(res.data);
                //重置文件传输
                for (key in posterFileList) {
                    delete posterFileList[key];
                }
            }
        });
        };
        uploadPoster = common.initUploadImagePlugin(uploadPosterParams);
        var bannerUrlList = new Array();
        uploadBanner = common.initUploadImagePlugin({
        var uploadBannerParams = {
            elem: "#choiceBanner",
            uploadUrl: "/admin/upload/image?from=activity",
            dir: 'banner',
@@ -496,12 +527,18 @@
                    count++;
                }
                bannerUrlList.push(res.data);
            },
            allDone: function (res) {
                //文件上传完毕
                if (bannerUrlList.length == count) {
                    app.bannerUploadSuccess(bannerUrlList);
                app.bannerUploadSuccess(bannerUrlList);
                for (key in bannerFileList) {
                    delete bannerFileList[key];
                }
            }
        });
        }
        uploadBanner = common.initUploadImagePlugin(uploadBannerParams);
        console.log(uploadBanner);
    });
@@ -520,8 +557,10 @@
        data: {
            activity: {},
            tempAwardsList: [],
            openInfo: {},
            joinInfo: {adInfo: {}},
            openInfo: {
            },
            joinInfo: {
                adInfo: {}},
            temp: {//临时数据,用于提交到服务端
            },
@@ -547,26 +586,35 @@
            this.addAward();
        },
        methods: {
            //设置数据
            setTempData(temp) {
                //活动信息赋值(深拷贝)
                this.activity = _.cloneDeep(temp.activity);
                this.tempAwardsList = _.cloneDeep(temp.awardInfo);
                this.openInfo = _.cloneDeep(temp.openInfo);
                this.joinInfo = _.cloneDeep(temp.joinInfo);
            },
            //初始化数据
            initData() {
                $this = this;
                /**************初始化抽奖信息************/
                if (this.activity.poster)
                    $("#poster").attr("src", this.activity.poster);
                if (this.activity.banner && this.activity.banner.length > 0) {
                    for (var i = 0; i < this.activity.banner.length; i++) {
                        var url = this.activity.banner[i].img;
                        var item = getBannerItemHtml(url);
                        item.find("i").on('click', function () {
                            //删除当前数据
                            app.activity.banner.splice(i, 1);
                            item.remove();
                        });
                        $(".banner").append(item);
                    }
                //删除所有选择的文件
                for (key in posterFileList) {
                    delete posterFileList[key];
                }
                //选择banner
                for (key in bannerFileList) {
                    delete bannerFileList[key];
                }
                $(".banner").empty();
                if (this.activity.poster)
                    $("#poster").attr("src", this.activity.poster);
                //选择banner监听
                common.layuiForm.on('radio(banner)', function (data) {
                    if (data.value == 1) {
                        $(".banner-container").css("display", "block");
@@ -575,11 +623,31 @@
                    }
                });
                if (this.activity.bannerList && this.activity.bannerList.length > 0) {
                    for (var i = 0; i < this.activity.bannerList.length; i++) {
                        var url = this.activity.bannerList[i].url;
                        var item = getBannerItemHtml(url);
                        item.find("i").on('click', function () {
                            //删除当前数据
                            app.activity.bannerList.splice(i, 1);
                            item.remove();
                        });
                        $(".banner").append(item);
                    }
                    //设置选项
                    $("input[name=showBanner][value=1]").prop("checked", "true");
                } else {
                    console.log("选择banner");
                    $("input[name=showBanner][value=0]").prop("checked", "true");
                }
                common.layuiForm.on('submit(form-activity-info)',
                    function (data) {
                        field = common.layuiForm.val('form-activity-info');
                        if (!validManager.verifyActivityInfo())
                        if (!validManager.verifyActivityInfo()) {
                            app.finishSubmit();
                            return false;
                        }
                        // 数据暂存
                        app.tempField.activity = field;
                        //有封面图
@@ -595,8 +663,14 @@
                common.layuiForm.on('submit(form-award-info)',
                    function (data) {
                        console.log("提交奖品信息");
                        if (!validManager.verifyAwardInfo())
                        if (!validManager.verifyAwardInfo()) {
                            app.finishSubmit();
                            return false;
                        }
                        //暂存
                        formManager.saveAwardInfoToTemp()
                        //赋值
                        $("#saveJoinInfo").click();
@@ -607,28 +681,46 @@
                common.layuiForm.on('submit(form-join-info)',
                    function (data) {
                        console.log("提交参与条件");
                        if (!validManager.verifyJoinInfo())
                        if (!validManager.verifyJoinInfo()) {
                            app.finishSubmit();
                            return false;
                        $("#saveOpenInfo").click();
                        }
                        //暂存
                        formManager.saveJoinInfoToTemp();
                        $("form[lay-filter=form-open-info]").submit()
                        return false;
                    });
                //初始化表单的值
                common.layuiForm.val("form-join-info", this.joinInfo);
                /**************初始化开奖条件************/
                common.layuiForm.on('submit(form-open-info)',
                    function (data) {
                        console.log("提交开奖条件");
                        if (!validManager.verifyOpenInfo())
                        if (!validManager.verifyOpenInfo()) {
                            app.finishSubmit();
                            return false;
                        }
                        //暂存
                        formManager.saveOpenInfoToTemp();
                        app.finishSubmit(true);
                        return false;
                    });
                common.layuiForm.val("form-open-info", this.openInfo);
                common.layuiForm.render();
            },
            //封面图上传成功
            posterUploadSuccess(res) {
                console.log("封面图上传成功");
                console.log(res);
                if (res) {//上传了文件
                    $("#poster").attr("src", res);
                    this.activity.poster = res;
                }
                //上传文件
                var bannerEmpty = true;
                for (key in bannerFileList) {
@@ -657,32 +749,23 @@
                        this.activity.bannerList.push(banner);
                    }
                }
                //暂存活动信息
                formManager.saveActivityInfoToTemp();
                //提交奖项
                $("#saveAwardInfo").click();
            },
            //添加
            requestAdd: function () {
                //组装数据
                if (this.data.awardsList.length == 0) {
                    return;
                }
                if (this.data.poster == null || this.data.poster.length == 0) {
                    return;
                }
            requestAdd: function (data) {
                var params = {
                    activity: this.data.activity,
                    awardsList: this.data.awardsList,
                    openInfo: this.data.openInfo,
                    adInfo: this.data.adInfo,
                    data: data,
                }
                this.activity.poster = this.data.poster;
                //发异步,把数据提交给php
                ksapp.post('/admin/api/app/add', params, function (res) {
                ksapp.post('/admin/activity/addActivity', params, function (res) {
                    if (res.code == 0) {
                        layer.alert("增加成功", {
                                icon: 6
@@ -706,17 +789,24 @@
                if (!validManager.verifyAll()) {
                    return;
                }
                var loading = layer.load(0, {shade: false});
                app.submitLoading = loading;
                //触发表单提交
                $("#saveActivityInfo").click();
                //保存临时变量
                formManager.saveToTemp();
                console.log("临时变量")
                //将数据提交到服务器
                var temp = this.temp;
                console.log(this.temp);
            },
            finishSubmit: function (finish) {
                console.log(JSON.stringify(this.temp));
                if (app.submitLoading) {
                    layer.close(app.submitLoading)
                }
                //所有数据已经取完
                if (finish) {
                    console.log("获取到的结果");
                    console.log(this.temp);
                    app.setTempData(this.temp);
                    app.initData();
                    //this.requestAdd(JSON.stringify(this.temp));
                }
            },
            /**
@@ -837,9 +927,10 @@
                    title: params.title,
                    width: 500,
                    height: 400,
                    content: params.url + "?data=" + encodeURIComponent(JSON.stringify(award)),
                    content: params.url + "?data=" + escape(JSON.stringify(award)),
                    submit(res) {
                        var award = app.tempAwardsList[index];
                        award.type = "alipayRedPackage";
                        var data = award.data;
                        data.total = res.total;
                        data.count = res.count;
service-daylucky/src/main/resources/static/js/common.js
@@ -61,9 +61,11 @@
        }
        ,
        getQueryString(name) {
            console.log(window.location.search)
            var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
            var r = window.location.search.substr(1).match(reg);
            if (r != null) return unescape(r[2]);
            if (r != null)
                return unescape(decodeURI(r[2]));
            return null;
        }
        ,
@@ -74,6 +76,7 @@
                dir: params.dir
            }
            //普通图片上传
            var layerIndex;
            var uploadInst = common.layuiUpload.render({
                elem: params.elem,
                //自动上传图片
@@ -94,7 +97,18 @@
                        $(params.showElem).attr('src', result); //图片链接(base64)
                    });
                },
                before: function (obj) {
                    if (params.showLoading)
                        layerIndex = layer.load(0, {shade: false});
                },
                allDone: function (obj) {
                    if (params.allDone) {
                        params.allDone(obj);
                    }
                },
                done: function (res, index, upload) { //上传后的回调
                    if (layerIndex)
                        layer.close(layerIndex);
                    console.log("上传成功");
                    console.log(res);
                    if (res.code == 0) {
@@ -104,6 +118,7 @@
                    }
                },
                error: function () {
                    layer.close(index);
                    layer.alert("图片上传失败", {icon: 5}, null);
                    if (params.uploadFail) {
                        params.uploadFail();
service-daylucky/src/main/resources/static/js/lodash.js
New file
Diff too large
service-daylucky/src/main/resources/static/sponsor-ad-alipaylife.html
@@ -126,6 +126,7 @@
            uploadUrl: "/admin/upload/image?from=activity",
            dir: 'sponsorad',
            field: "image",
            showLoading:true,
            uploadSuccess: function (res) {
                app.uploadSuccess(res.data);
            }
@@ -153,7 +154,8 @@
            sceneId: ""
        },
        created: function () {
            var data = JSON.parse(decodeURIComponent(common.getQueryString("data")));
            console.log("得到的值为:"+common.getQueryString("data"));
            var data = JSON.parse(common.getQueryString("data"));
            this.icon = data.icon;
            this.name = data.name;
            this.desc = data.desc;
service-lucky/src/main/java/com/ks/lucky/service/impl/LuckyActivityAwardManager.java
@@ -1,11 +1,14 @@
package com.ks.lucky.service.impl;
import com.ks.lib.common.exception.ParamsException;
import com.ks.lucky.dao.LuckyActivityAwardMaterialDao;
import com.ks.lucky.exception.LuckyActivityAwardException;
import com.ks.lucky.exception.LuckyActivityAwardMaterialException;
import com.ks.lucky.mapper.LuckyActivityAwardsMapper;
import com.ks.lucky.pojo.DO.LuckyActivityAwardMaterial;
import com.ks.lucky.pojo.DO.LuckyActivityAwards;
import com.ks.lucky.query.ActivityAwardQuery;
import com.ks.lucky.remote.service.LuckyActivityAwardMaterialService;
import com.ks.lucky.util.annotation.RedisCache;
import com.ks.lucky.util.annotation.RedisCacheEvict;
import org.springframework.stereotype.Component;
@@ -28,6 +31,9 @@
    @Resource
    private LuckyActivityAwardMaterialDao luckyActivityAwardMaterialDao;
    @Resource
    private LuckyActivityAwardMaterialService luckyActivityAwardMaterialService;
    /**
     * 添加奖项
     *
@@ -35,7 +41,7 @@
     * @throws LuckyActivityAwardException
     */
    @Validated
    public void addAward(LuckyActivityAwards award) throws LuckyActivityAwardException {
    public void addAward(LuckyActivityAwards award) throws LuckyActivityAwardException, LuckyActivityAwardMaterialException, ParamsException {
        if (award.getCreateTime() == null) {
            award.setCreateTime(new Date());
        }
@@ -48,6 +54,12 @@
            throw new LuckyActivityAwardException(LuckyActivityAwardException.CODE_EXIST, "同等级的奖项已经存在");
        }
        if (award.getMaterial() != null && award.getMaterial().getId() == null) {
            String id = luckyActivityAwardMaterialService.addAwardMaterial(award.getMaterial());
            award.getMaterial().setId(id);
            award.setMaterialId(id);
        }
        luckyActivityAwardsMapper.insertSelective(award);
    }
service-lucky/src/main/java/com/ks/lucky/service/impl/LuckyActivitySponsorInfoManager.java
@@ -1,13 +1,16 @@
package com.ks.lucky.service.impl;
import com.ks.lib.common.exception.ParamsException;
import com.ks.lucky.dao.LuckySponsorAdDao;
import com.ks.lucky.exception.LuckyActivitySponsorInfoException;
import com.ks.lucky.exception.LuckySponsorAdException;
import com.ks.lucky.mapper.LuckyActivitySponsorInfoMapper;
import com.ks.lucky.mapper.LuckySponsorsMapper;
import com.ks.lucky.pojo.DO.LuckyActivitySponsorInfo;
import com.ks.lucky.pojo.DO.LuckySponsorAd;
import com.ks.lucky.pojo.DO.LuckySponsors;
import com.ks.lucky.query.ActivitySponsorInfoQuery;
import com.ks.lucky.remote.service.LuckySponsorAdService;
import com.ks.lucky.util.annotation.RedisCache;
import com.ks.lucky.util.annotation.RedisCacheEvict;
import org.springframework.stereotype.Component;
@@ -30,6 +33,9 @@
    private LuckySponsorAdDao luckySponsorAdDao;
    @Resource
    private LuckySponsorAdService luckySponsorAdService;
    @Resource
    private LuckySponsorsMapper luckySponsorsMapper;
@@ -40,7 +46,7 @@
     * @throws LuckyActivitySponsorInfoException
     */
    @Validated
    public void addSponsorInfo(LuckyActivitySponsorInfo sponsorInfo) throws LuckyActivitySponsorInfoException {
    public void addSponsorInfo(LuckyActivitySponsorInfo sponsorInfo) throws LuckyActivitySponsorInfoException, LuckySponsorAdException, ParamsException {
        ActivitySponsorInfoQuery query = new ActivitySponsorInfoQuery();
        query.activityId = sponsorInfo.getActivityId();
        query.start = 0;
@@ -54,6 +60,17 @@
        if (sponsorInfo.getCreateTime() == null) {
            sponsorInfo.setCreateTime(new Date());
        }
        if (sponsorInfo.getAd() != null) {
            if (sponsorInfo.getAd().getId() == null) {
                //添加广告
                String id = luckySponsorAdService.addSponsorAd(sponsorInfo.getAd());
                sponsorInfo.getAd().setId(id);
                sponsorInfo.setSponsorAdId(id);
            }
        }
        luckyActivitySponsorInfoMapper.insertSelective(sponsorInfo);
    }
service-lucky/src/main/java/com/ks/lucky/service/impl/remote/LuckyActivityAwardMaterialServiceImpl.java
@@ -10,6 +10,7 @@
import javax.annotation.Resource;
import java.util.Date;
import java.util.UUID;
@Service(version = "1.0.0")
public class LuckyActivityAwardMaterialServiceImpl implements LuckyActivityAwardMaterialService {
@@ -20,11 +21,17 @@
    @Validated
    @Override
    public void addAwardMaterial(LuckyActivityAwardMaterial awardMaterial) throws ParamsException,LuckyActivityAwardMaterialException {
    public String addAwardMaterial(LuckyActivityAwardMaterial awardMaterial) throws ParamsException, LuckyActivityAwardMaterialException {
        if (awardMaterial.getCreateTime() == null) {
            awardMaterial.setCreateTime(new Date());
        }
        if (awardMaterial.getId() == null) {
            awardMaterial.setId(UUID.randomUUID().toString());
        }
        luckyActivityAwardMaterialDao.save(awardMaterial);
        return awardMaterial.getId();
    }
    @Override
service-lucky/src/main/java/com/ks/lucky/service/impl/remote/LuckyActivityAwardServiceImpl.java
@@ -2,6 +2,7 @@
import com.ks.lib.common.exception.ParamsException;
import com.ks.lucky.exception.LuckyActivityAwardException;
import com.ks.lucky.exception.LuckyActivityAwardMaterialException;
import com.ks.lucky.pojo.DO.LuckyActivityAwards;
import com.ks.lucky.remote.service.LuckyActivityAwardService;
import com.ks.lucky.service.impl.LuckyActivityAwardManager;
@@ -19,7 +20,7 @@
    @Validated
    @Override
    public Long addAward(LuckyActivityAwards award) throws ParamsException, LuckyActivityAwardException {
    public Long addAward(LuckyActivityAwards award) throws ParamsException, LuckyActivityAwardException, LuckyActivityAwardMaterialException {
        luckyActivityAwardManager.addAward(award);
        return award.getId();
    }
service-lucky/src/main/java/com/ks/lucky/service/impl/remote/LuckyActivityServiceImpl.java
@@ -1,8 +1,7 @@
package com.ks.lucky.service.impl.remote;
import com.ks.lib.common.exception.ParamsException;
import com.ks.lucky.exception.LuckyActivityException;
import com.ks.lucky.exception.LuckyMQException;
import com.ks.lucky.exception.*;
import com.ks.lucky.mapper.LuckyActivityMapper;
import com.ks.lucky.pojo.DO.*;
import com.ks.lucky.query.ActivityDaoQuery;
@@ -57,6 +56,34 @@
        }
    }
    @Validated
    @Transactional(rollbackFor = Exception.class)
    @Override
    public Long addActivity(LuckyActivity activity) throws ParamsException, LuckyActivityException, LuckyActivitySponsorInfoException, LuckyActivityAwardException, LuckyActivityOpenInfoException, LuckySponsorAdException, LuckyActivityAwardMaterialException {
        Long activityId = createActivity(activity);
        //添加banner图片
        if (activity.getBannerList() != null) {
            for (LuckyActivityImage image : activity.getBannerList()) {
                image.setActivityId(activityId);
                luckyActivityImageService.add(image);
            }
        }
        //添加赞助活动
        activity.getSponsorInfo().setActivityId(activityId);
        luckyActivitySponsorInfoManager.addSponsorInfo(activity.getSponsorInfo());
        //添加奖项
        for (LuckyActivityAwards awards : activity.getAwardsList()) {
            awards.setActivityId(activityId);
            luckyActivityAwardManager.addAward(awards);
        }
        //添加开奖信息
        activity.getOpenInfo().setActivityId(activityId);
        luckyActivityOpenInfoManager.addOpenInfo(activity.getOpenInfo());
        return activityId;
    }
    @Override
    public List<LuckyActivity> getActivityList(Long appId, Long sponsorId, List<Integer> stateList, String key, int page, int pageSize) {
        ActivityDaoQuery query = new ActivityDaoQuery();
service-lucky/src/main/java/com/ks/lucky/service/impl/remote/LuckyActivitySponsorInfoServiceImpl.java
@@ -2,6 +2,7 @@
import com.ks.lib.common.exception.ParamsException;
import com.ks.lucky.exception.LuckyActivitySponsorInfoException;
import com.ks.lucky.exception.LuckySponsorAdException;
import com.ks.lucky.pojo.DO.LuckyActivitySponsorInfo;
import com.ks.lucky.remote.service.LuckyActivitySponsorInfoService;
import com.ks.lucky.service.impl.LuckyActivitySponsorInfoManager;
@@ -19,7 +20,7 @@
    @Validated
    @Override
    public Long addSponsorInfo(LuckyActivitySponsorInfo sponsorInfo) throws ParamsException, LuckyActivitySponsorInfoException {
    public Long addSponsorInfo(LuckyActivitySponsorInfo sponsorInfo) throws ParamsException, LuckyActivitySponsorInfoException, LuckySponsorAdException {
        luckyActivitySponsorInfoManager.addSponsorInfo(sponsorInfo);
        return sponsorInfo.getId();
    }
service-lucky/src/main/java/com/ks/lucky/service/impl/remote/LuckySponsorAdServiceImpl.java
@@ -81,7 +81,7 @@
    @Validated
    @Override
    public void addSponsorAd(LuckySponsorAd ad) throws ParamsException,LuckySponsorAdException {
    public String addSponsorAd(LuckySponsorAd ad) throws ParamsException, LuckySponsorAdException {
        ad.setId(ad.getSponsorId() + "-" + System.currentTimeMillis());
        if (ad.getCreateTime() == null) {
@@ -90,6 +90,7 @@
        ad.setState(LuckySponsorAd.STATE_WAIT_VERIFY);
        ad.setStateDesc("待审核");
        luckySponsorAdDao.save(ad);
        return ad.getId();
    }
    @Override
service-lucky/src/test/java/com/ks/lucky/ActivityTest.java
@@ -128,6 +128,8 @@
            e.printStackTrace();
        } catch (LuckyActivitySponsorInfoException e) {
            e.printStackTrace();
        } catch (LuckySponsorAdException e) {
            e.printStackTrace();
        }
    }
@@ -202,6 +204,8 @@
            e.printStackTrace();
        } catch (LuckyActivityAwardException e) {
            e.printStackTrace();
        } catch (LuckyActivityAwardMaterialException e) {
            e.printStackTrace();
        }
    }