admin
2019-03-15 a8e45a802600ca1cde28fe8522a26635328bbd99
Merge remote-tracking branch 'origin/master'
12个文件已修改
269 ■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/aspect/ActiveUserAspect.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/admin/PushCouponController.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/admin/PushGoodsController.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/UserMsgController.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/goods/RecommendUserGoodsMapper.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/entity/bus/user/UserSystemCoupon.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/entity/goods/RecommendUserGoods.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/mapping/goods/RecommendUserGoodsMapper.xml 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/mapping/push/PushCouponMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/goods/RecommendUserGoodsServiceImpl.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/push/PushCouponServiceImpl.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/goods/RecommendUserGoodsService.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/aspect/ActiveUserAspect.java
@@ -5,14 +5,12 @@
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.core.annotation.Order;
import org.springframework.core.task.TaskExecutor;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import com.yeshi.fanli.service.inter.user.UserSystemCouponService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.RedisManager;
/**
@@ -63,18 +61,16 @@
                    return;
                }
                
//                // 缓存uid的Key
//                String key = "activeUid_" + uuid;
//
//                // 缓存中是否存在uid
//                String cacheValue = redisManager.getCommonString(key);
//                if (cacheValue != null && cacheValue.trim().length() > 0) {
//                    return;
//                }
//
//                // 加入缓存 20分钟
//                redisManager.cacheCommonString("activeUid_" + uuid, uuid.toString(), 60 * 20);
//
                if (Constant.IS_OUTNET) {
                    String key = "activeUid_" + uuid;
                    // 缓存中是否存在uid
                    String cacheValue = redisManager.getCommonString(key);
                    if (cacheValue != null && cacheValue.trim().length() > 0) {
                        return;
                    }
                    // 加入缓存 20分钟
                    redisManager.cacheCommonString("activeUid_" + uuid, uuid.toString(), 60 * 20);
                }
                
                // 接收券
                try {
@@ -85,8 +81,7 @@
            }
        });
        
        Object[] args = joinPoint.getArgs();
        return joinPoint.proceed(args);
        return joinPoint.proceed(joinPoint.getArgs());
    }
}
fanli/src/main/java/com/yeshi/fanli/controller/admin/PushCouponController.java
@@ -179,7 +179,7 @@
            GsonBuilder gsonBuilder = new GsonBuilder();
            gsonBuilder.serializeNulls();
            Gson gson = gsonBuilder.setDateFormat("yyyy/MM/dd HH:mm:ss").create();
            Gson gson = gsonBuilder.setDateFormat("yyyy-MM-dd").create();
            JSONObject data = new JSONObject();
            data.put("pe", pe);
@@ -201,15 +201,25 @@
     * @throws Exception
     */
    @RequestMapping(value = "push")
    public void push(String callback, Long id, PrintWriter out) throws Exception {
    public void push(String callback, String idArray, PrintWriter out) throws Exception {
        if (id == null) {
        if (idArray == null || idArray.trim().length() == 0) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("传递参数不能为空"));
            return;
        }
        try {
            
        try {
            Gson gson = new Gson();
            List<Long> list = gson.fromJson(idArray, new TypeToken<ArrayList<Long>>() {}.getType());
            if (list == null || list.size() == 0) {
                JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("传递参数不能为空"));
                return;
            }
            for (Long id: list) {
            pushCouponService.executePush(id);
            }
            
            JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("推送成功"));
            
fanli/src/main/java/com/yeshi/fanli/controller/admin/PushGoodsController.java
@@ -226,22 +226,33 @@
    
    
    /**
     * 网页推送
     *   商品推送
     * 
     * @param id 推送id
     * @param out
     * @throws Exception
     */
    @RequestMapping(value = "push")
    public void push(String callback, Long id, PrintWriter out) throws Exception {
    public void push(String callback, String idArray, PrintWriter out) throws Exception {
        if (id == null) {
        if (idArray == null || idArray.trim().length() == 0) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("传递参数不能为空"));
            return;
        }
        
        try {
            Gson gson = new Gson();
            List<Long> list = gson.fromJson(idArray, new TypeToken<ArrayList<Long>>() {}.getType());
            if (list == null || list.size() == 0) {
                JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("传递参数不能为空"));
                return;
            }
            for (Long id: list) {
            pushGoodsService.executePush(id);
            }
            
            JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("推送成功"));
            
fanli/src/main/java/com/yeshi/fanli/controller/client/UserMsgController.java
@@ -295,7 +295,7 @@
        return builder;
    }
    private void addRecommendGoods(Long uid, String imei, String idfa) {
    private void addRecommendGoods(Long uid, String device, String imei, String idfa) {
        TaoBaoSearchResult result = TaoKeApiUtil.guessDeviceLike(1, 50, imei, idfa);
        if (result != null && result.getTaoBaoGoodsBriefs() != null) {
            for (int i = 0; i < result.getTaoBaoGoodsBriefs().size(); i++) {
@@ -326,7 +326,7 @@
                    }
                }
                try {
                    recommendUserGoodsService.addRecommend(uid, "", goodsList);
                    recommendUserGoodsService.addRecommend(uid, device, "", goodsList);
                } catch (RecommendUserGoodsException e) {
                    e.printStackTrace();
                }
@@ -334,7 +334,7 @@
        }
    }
    private void addRecommendGoods(Long uid) {
    private void addRecommendGoods(Long uid, String device) {
        List<QualityFactory> qfList = qualityFactoryService.listByMinSalesCountOrderByCreateTimeDesc(10000, 1, 20);
        if (qfList != null && qfList != null) {
            for (int i = 0; i < qfList.size(); i++) {
@@ -365,7 +365,7 @@
                    }
                }
                try {
                    recommendUserGoodsService.addRecommend(uid, "", goodsList);
                    recommendUserGoodsService.addRecommend(uid, device, "", goodsList);
                } catch (RecommendUserGoodsException e) {
                    e.printStackTrace();
                }
@@ -383,15 +383,18 @@
     */
    @RequestMapping(value = "getHomeMsgList", method = RequestMethod.POST)
    public void getHomeMsgList(AcceptData acceptData, Long uid, int page, HttpSession session, PrintWriter out) {
        if (uid == null) {
            out.print(JsonUtil.loadFalseResult(1, "用户未登录"));
        String device = acceptData.getDevice();
        if (device == null || device.trim().length() == 0) {
            out.print(JsonUtil.loadFalseResult("设备号不能为空"));
            return;
        }
        if (page == 1) {
            boolean canAdd = false;
            int hour = Calendar.getInstance().get(Calendar.HOUR);
            RecommendUserGoods goods = recommendUserGoodsService.getLatestRecommendUserGoods(uid);
            RecommendUserGoods goods = recommendUserGoodsService.getLatestRecommendUserGoodsByDevice(device);
            if (goods == null) {
                canAdd = true;
            } else {
@@ -401,30 +404,32 @@
                }
            }
            String key = "recommend-goods-user-" + uid;
            //String key = "recommend-goods-user-" + uid;
            String key = "recommend-goods-user-" + device;
            if (Constant.IS_OUTNET) {
                if (canAdd && StringUtil.isNullOrEmpty(redisManager.getCommonString(key))) {
                    if (Constant.IS_OUTNET)
                        redisManager.cacheCommonString(key, "1", 20);
                    if (hour < 12)
                        addRecommendGoods(uid);
                        addRecommendGoods(uid, device);
                    else
                        addRecommendGoods(uid, acceptData.getImei(), acceptData.getIdfa());
                        addRecommendGoods(uid, device, acceptData.getImei(), acceptData.getIdfa());
                    session.removeAttribute("recommendgoods");
                }
            } else {
                if (canAdd) {
                    if (hour < 12)
                        addRecommendGoods(uid);
                        addRecommendGoods(uid, device);
                    else
                        addRecommendGoods(uid, acceptData.getImei(), acceptData.getIdfa());
                        addRecommendGoods(uid, device, acceptData.getImei(), acceptData.getIdfa());
                }
            }
        }
        List<UserHomeMsgVO> volist = new ArrayList<>();
        List<RecommendUserGoods> list = recommendUserGoodsService.listRecommend(uid, page, Constant.PAGE_SIZE);
        long count = recommendUserGoodsService.countRecommend(uid);//
        List<RecommendUserGoods> list = recommendUserGoodsService.listRecommendGoodsByDevice(device, page, Constant.PAGE_SIZE);
        long count = recommendUserGoodsService.countRecommendGoodsByDevice(device);
        Date now = new Date();
        for (RecommendUserGoods goods : list) {
@@ -486,7 +491,7 @@
        JSONObject root = new JSONObject();
        root.put("msgList", new Gson().toJson(volist));
        if (page == 1) {
        if (page == 1 && uid != null) {
            UserMsgUnReadNum num = userMsgReadStateService.getReadStateByUid(uid);
            UserSystemMsg usm = userSystemMsgService.getLatestUserSystemMsg(uid);
            if (usm != null)
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/goods/RecommendUserGoodsMapper.java
@@ -35,4 +35,35 @@
     * @return
     */
    RecommendUserGoods getLatestRecommendUserGoods(Long uid);
    /**
     *   根据设备号获取最近的推荐
     *
     * @param uid
     * @return
     */
    RecommendUserGoods getLatestRecommendUserGoodsByDevice(String device);
    /**
     *  根据设备号获取用户的推荐列表
     *
     * @param uid
     * @param start
     * @param size
     * @return
     */
    List<RecommendUserGoods> listRecommendGoodsByDevice(@Param("device")String device, @Param("start") long start,
            @Param("count") int count);
    /**
     * 用户推荐的数量
     *
     * @param uid
     * @return
     */
    Long countRecommendGoodsByDevice(@Param("device")String device);
}
fanli/src/main/java/com/yeshi/fanli/entity/bus/user/UserSystemCoupon.java
@@ -26,7 +26,7 @@
    // 来源: 新人抽奖、邀请奖励
    public final static String SOURCE_CHOUJIANG = "新人抽奖";
    public final static String SOURCE_YAOQING = "邀请奖励";
    public final static String SOURCE_SYSTEM_PUSH = "系统推送";
    public final static String SOURCE_SYSTEM_PUSH = "系统赠送";
    
    @Expose
    @Column(name = "usc_id")
fanli/src/main/java/com/yeshi/fanli/entity/goods/RecommendUserGoods.java
@@ -15,14 +15,23 @@
public class RecommendUserGoods {
    @Column(name = "rug_id")
    private Long id;
    @Column(name = "rug_uid")
    private UserInfo user;
    @Column(name = "rug_device")
    private String device;
    @Column(name = "rug_recommend_desc")
    private String recommendDesc;
    @Column(name = "rug_create_time")
    private Date createTime;
    @Column(name = "rug_update_time")
    private Date updateTime;
    private List<CommonGoods> goodsList;
    public Long getId() {
@@ -72,4 +81,12 @@
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }
    public String getDevice() {
        return device;
    }
    public void setDevice(String device) {
        this.device = device;
    }
}
fanli/src/main/java/com/yeshi/fanli/mapping/goods/RecommendUserGoodsMapper.xml
@@ -5,21 +5,19 @@
    <resultMap id="BaseResultMap"
        type="com.yeshi.fanli.entity.goods.RecommendUserGoods">
        <id column="rug_id" property="id" jdbcType="BIGINT" />
        <result column="rug_recommend_desc" property="recommendDesc"
            jdbcType="VARCHAR" />
        <result column="rug_create_time" property="createTime"
            jdbcType="TIMESTAMP" />
        <result column="rug_update_time" property="updateTime"
            jdbcType="TIMESTAMP" />
        <association property="user"
            javaType="com.yeshi.fanli.entity.bus.user.UserInfo">
        <result column="rug_device" property="device" jdbcType="VARCHAR"/>
        <result column="rug_recommend_desc" property="recommendDesc" jdbcType="VARCHAR" />
        <result column="rug_create_time" property="createTime" jdbcType="TIMESTAMP" />
        <result column="rug_update_time" property="updateTime" jdbcType="TIMESTAMP" />
        <association property="user" javaType="com.yeshi.fanli.entity.bus.user.UserInfo">
            <id column="rug_uid" property="id" jdbcType="BIGINT" />
        </association>
        <association property="goodsList" column="rug_id"
            select="com.yeshi.fanli.dao.mybatis.goods.RecommendUserGoodsMapMapper.selectGoodsByRecommendId">
        </association>
    </resultMap>
    <sql id="Base_Column_List">rug_id,rug_uid,rug_recommend_desc,rug_create_time,rug_update_time
    <sql id="Base_Column_List">rug_id,rug_uid,rug_device,rug_recommend_desc,rug_create_time,rug_update_time
    </sql>
    <select id="selectByPrimaryKey" resultMap="BaseResultMap"
        parameterType="java.lang.Long">
@@ -58,6 +56,24 @@
    </select>
    <select id="getLatestRecommendUserGoodsByDevice" resultMap="BaseResultMap" parameterType="java.lang.String">
        select    * from yeshi_ec_recommend_user_goods
        where rug_device =    #{0}
        order by rug_create_time desc
        limit 1
    </select>
    <select id="listRecommendGoodsByDevice" resultMap="BaseResultMap">
        select     <include refid="Base_Column_List" /> from yeshi_ec_recommend_user_goods
        where rug_device =    #{device,jdbcType=VARCHAR}
        order by rug_create_time desc
        limit #{start},#{count}
    </select>
    <select id="countRecommendGoodsByDevice" resultType="java.lang.Long" parameterType="java.lang.String">
        select count(rug_id) from yeshi_ec_recommend_user_goods
        where  rug_device =    #{device,jdbcType=VARCHAR}
    </select>
@@ -67,9 +83,9 @@
    <insert id="insert" parameterType="com.yeshi.fanli.entity.goods.RecommendUserGoods"
        useGeneratedKeys="true" keyProperty="id">insert into
        yeshi_ec_recommend_user_goods
        (rug_id,rug_uid,rug_recommend_desc,rug_create_time,rug_update_time)
        (rug_id,rug_uid,rug_device,rug_recommend_desc,rug_create_time,rug_update_time)
        values
        (#{id,jdbcType=BIGINT},#{user.id,jdbcType=BIGINT},#{recommendDesc,jdbcType=VARCHAR},#{createTime,jdbcType=TIMESTAMP},#{updateTime,jdbcType=TIMESTAMP})
        (#{id,jdbcType=BIGINT},#{user.id,jdbcType=BIGINT},#{device,jdbcType=VARCHAR},#{recommendDesc,jdbcType=VARCHAR},#{createTime,jdbcType=TIMESTAMP},#{updateTime,jdbcType=TIMESTAMP})
    </insert>
    <insert id="insertSelective" parameterType="com.yeshi.fanli.entity.goods.RecommendUserGoods"
        useGeneratedKeys="true" keyProperty="id">
@@ -77,6 +93,7 @@
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="id != null">rug_id,</if>
            <if test="user != null">rug_uid,</if>
            <if test="device != null">rug_device,</if>
            <if test="recommendDesc != null">rug_recommend_desc,</if>
            <if test="createTime != null">rug_create_time,</if>
            <if test="updateTime != null">rug_update_time,</if>
@@ -85,24 +102,27 @@
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="id != null">#{id,jdbcType=BIGINT},</if>
            <if test="user != null">#{user.id,jdbcType=BIGINT},</if>
            <if test="device != null">#{device,jdbcType=VARCHAR},</if>
            <if test="recommendDesc != null">#{recommendDesc,jdbcType=VARCHAR},</if>
            <if test="createTime != null">#{createTime,jdbcType=TIMESTAMP},</if>
            <if test="updateTime != null">#{updateTime,jdbcType=TIMESTAMP},</if>
        </trim>
    </insert>
    <update id="updateByPrimaryKey" parameterType="com.yeshi.fanli.entity.goods.RecommendUserGoods">update
        yeshi_ec_recommend_user_goods set rug_uid =
        #{user.id,jdbcType=BIGINT},rug_recommend_desc =
        #{recommendDesc,jdbcType=VARCHAR},rug_create_time =
        #{createTime,jdbcType=TIMESTAMP},rug_update_time =
        #{updateTime,jdbcType=TIMESTAMP} where rug_id = #{id,jdbcType=BIGINT}
        yeshi_ec_recommend_user_goods set
        rug_uid = #{user.id,jdbcType=BIGINT},
        rug_device = #{device,jdbcType=VARCHAR},
        rug_recommend_desc = #{recommendDesc,jdbcType=VARCHAR},
        rug_create_time = #{createTime,jdbcType=TIMESTAMP},
        rug_update_time = #{updateTime,jdbcType=TIMESTAMP}
        where rug_id = #{id,jdbcType=BIGINT}
    </update>
    <update id="updateByPrimaryKeySelective" parameterType="com.yeshi.fanli.entity.goods.RecommendUserGoods">
        update yeshi_ec_recommend_user_goods
        <set>
            <if test="user != null">rug_uid=#{user.id,jdbcType=BIGINT},</if>
            <if test="recommendDesc != null">rug_recommend_desc=#{recommendDesc,jdbcType=VARCHAR},
            </if>
            <if test="device != null">rug_device=#{device,jdbcType=VARCHAR},</if>
            <if test="recommendDesc != null">rug_recommend_desc=#{recommendDesc,jdbcType=VARCHAR},</if>
            <if test="createTime != null">rug_create_time=#{createTime,jdbcType=TIMESTAMP},</if>
            <if test="updateTime != null">rug_update_time=#{updateTime,jdbcType=TIMESTAMP},</if>
        </set>
fanli/src/main/java/com/yeshi/fanli/mapping/push/PushCouponMapper.xml
@@ -83,7 +83,7 @@
                  AND (pc_title like '%${key}%' or pc_content like '%${key}%') 
           </if>
           <if test='state != null'>
                  AND pg_is_push = #{state}
                  AND pc_pushed = #{state}
           </if>
           ORDER BY pc_create_time desc 
        LIMIT ${start},${count}
fanli/src/main/java/com/yeshi/fanli/service/impl/goods/RecommendUserGoodsServiceImpl.java
@@ -31,7 +31,7 @@
    @Transactional
    @Override
    public void addRecommend(Long uid, String recommendDesc, List<CommonGoods> goodsList)
    public void addRecommend(Long uid, String device, String recommendDesc, List<CommonGoods> goodsList)
            throws RecommendUserGoodsException {
        if (goodsList == null || goodsList.size() == 0)
            throw new RecommendUserGoodsException(1, "无推荐商品");
@@ -40,6 +40,7 @@
        goods.setCreateTime(new Date());
        goods.setRecommendDesc(recommendDesc);
        goods.setUser(new UserInfo(uid));
        goods.setDevice(device);
        recommendUserGoodsMapper.insertSelective(goods);
        for (CommonGoods commonGoods : goodsList)
            try {
@@ -75,4 +76,19 @@
        return recommendUserGoodsMapper.getLatestRecommendUserGoods(uid);
    }
    @Override
    public RecommendUserGoods getLatestRecommendUserGoodsByDevice(String device) {
        return recommendUserGoodsMapper.getLatestRecommendUserGoodsByDevice(device);
    }
    @Override
    public List<RecommendUserGoods> listRecommendGoodsByDevice(String device, int page, int pageSize) {
        return recommendUserGoodsMapper.listRecommendGoodsByDevice(device, (page - 1) * pageSize, pageSize);
    }
    @Override
    public long countRecommendGoodsByDevice(String device) {
        return recommendUserGoodsMapper.countRecommendGoodsByDevice(device);
    }
}
fanli/src/main/java/com/yeshi/fanli/service/impl/push/PushCouponServiceImpl.java
@@ -1,5 +1,6 @@
package com.yeshi.fanli.service.impl.push;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
@@ -94,9 +95,18 @@
        }
        Integer amount = record.getAmount();
        if (amount == null || amount < 1) {
            throw new PushCouponException(1, "券数量不能小于1");
        if (amount == null) {
            throw new PushCouponException(1, "券数量不能为空");
        } else if (amount < 1 || amount > 5) {
            throw new PushCouponException(1, "券数量范围是 1~5");
        }
        BigDecimal percent = record.getPercent();
        if (percent != null && (percent.compareTo(new BigDecimal(60)) > 0
                || percent.compareTo(new BigDecimal(1)) < 0)) {
            throw new PushCouponException(1, "券比例范围是1~60 的正整数");
        }
        Long id = record.getId();
        if (id == null) {
@@ -112,6 +122,10 @@
            PushCoupon current = selectByPrimaryKey(id);
            if (current == null) {
                throw new PushCouponException(1, "该记录已不存在");
            }
            if(current.isPushed()) {
                throw new PushCouponException(1, "已推送的信息不能修改");
            }
            current.setTitle(title);
@@ -199,6 +213,7 @@
        
        for (Long id: list) {
            long receivedCount = pushCouponRecordService.countByPushId(id);
            // 领取数量
            if (receivedCount > 0) {
                continue;
            }
fanli/src/main/java/com/yeshi/fanli/service/inter/goods/RecommendUserGoodsService.java
@@ -17,7 +17,7 @@
     *            推荐语
     * @param goodsList
     */
    public void addRecommend(Long uid, String recommendDesc, List<CommonGoods> goodsList)
    public void addRecommend(Long uid, String device, String recommendDesc, List<CommonGoods> goodsList)
            throws RecommendUserGoodsException;
    
    /**
@@ -57,4 +57,27 @@
    
    public RecommendUserGoods getLatestRecommendUserGoods(Long uid);
    /**
     *  根据设备获取最近的推荐
     * @param device
     * @return
     */
    public RecommendUserGoods getLatestRecommendUserGoodsByDevice(String device);
    /**
     * 根据设备号查询
     * @param device
     * @param page
     * @param pageSize
     * @return
     */
    public List<RecommendUserGoods> listRecommendGoodsByDevice(String device, int page, int pageSize);
    /**
     * 根据设备号统计
     * @param device
     * @return
     */
    public long countRecommendGoodsByDevice(String device);
}