admin
2019-03-08 f5ad4a8171b20ab75eaac90c9717fe7fd801d6cd
Merge remote-tracking branch 'origin/master'
5个文件已修改
2个文件已添加
516 ■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/aspect/ActiveUserAspect.java 102 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/admin/SystemCouponAdminController.java 344 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/push/PushCouponRecordMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/mapping/push/PushCouponRecordMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/push/PushCouponServiceImpl.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserSystemCouponServiceImpl.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/test/java/org/fanli/config/SystemCouponServiceTest.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/aspect/ActiveUserAspect.java
@@ -1,7 +1,5 @@
package com.yeshi.fanli.aspect;
import java.io.IOException;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
@@ -9,16 +7,13 @@
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.entity.accept.AcceptData;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.user.UserSystemCouponService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.RedisManager;
import com.yeshi.fanli.util.ThreadUtil;
/**
 * 活跃用户处理
@@ -30,6 +25,9 @@
//@Aspect
//@Order(6)
public class ActiveUserAspect {
    @Resource(name = "taskExecutor")
    private TaskExecutor executor;
    @Resource
    private RedisManager redisManager;
@@ -37,65 +35,57 @@
    @Resource
    private UserSystemCouponService userSystemCouponService;
    public static final String EDP = "execution(* com.yeshi.fanli.controller.client.*.*(..))";
    @Around(EDP)
//    @Around(EDP)
    public Object activeAround(ProceedingJoinPoint joinPoint) throws Throwable {
        Object[] args = joinPoint.getArgs();
        if (!Constant.IS_OUTNET) {
            return joinPoint.proceed(args); // 外网环境
        Long uid = null;
        ServletRequestAttributes servletContainer = (ServletRequestAttributes) RequestContextHolder
                .getRequestAttributes();
        HttpServletRequest request = servletContainer.getRequest();
        String str_uid = request.getParameter("uid");
        if (str_uid != null && str_uid.trim().length() > 0) {
            uid = Long.parseLong(str_uid);
        }
        final Long uuid = uid;
        executor.execute(new Runnable() {
            @Override
            public void run() {
                if (uuid == null) {
                    return;
                }
                // 缓存uid的Key
                String key = "activeUid_" + uuid;
                // 缓存中是否存在uid
                String cacheValue = redisManager.getCommonString(key);
                if (cacheValue != null && cacheValue.trim().length() > 0) {
                    return;
                }
        try {
            System.out.println("----------活跃验证---------------");
            ServletRequestAttributes servletContainer = (ServletRequestAttributes) RequestContextHolder
                    .getRequestAttributes();
            HttpServletRequest request = servletContainer.getRequest();
            String strUid = request.getParameter("uid");
            if (strUid == null || strUid.trim().length() == 0) {
                return joinPoint.proceed(args);
            }
            Long uid = Long.parseLong(strUid);
            String key = "activeUid_" + uid;
            String cacheValue = redisManager.getCommonString(key);
            if (cacheValue != null && cacheValue.trim().length() > 0) {
                return joinPoint.proceed(args);
            }
            // 加入缓存
            redisManager.cacheCommonString("activeUid_" + uid, strUid, 60);
            AcceptData acceptData = null;
            for (Object argsobj : args) {
                if (argsobj instanceof AcceptData) {
                    acceptData = (AcceptData) argsobj;
                // 加入缓存 20分钟
                redisManager.cacheCommonString("activeUid_" + uuid, uuid.toString(), 60 * 20);
                // 接收券
                try {
                    userSystemCouponService.receivedCoupon(uuid);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if (acceptData == null) {
                return joinPoint.proceed(args);
            }
            int platformType = 0;
            String platform = acceptData.getPlatform();
            if ("android".equals(platform)) {
                platformType = 1;
            } else if ("ios".equals(platform)) {
                platformType = 2;
            }
            userSystemCouponService.copyLotteryPrize(uid, platformType, acceptData.getDevice());
        } catch (Exception e) {
            e.printStackTrace();
        }
        });
        
        Object[] args = joinPoint.getArgs();
        return joinPoint.proceed(args);
    }
fanli/src/main/java/com/yeshi/fanli/controller/admin/SystemCouponAdminController.java
New file
@@ -0,0 +1,344 @@
package com.yeshi.fanli.controller.admin;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import org.yeshi.utils.JsonUtil;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import com.yeshi.fanli.entity.bus.homemodule.HomeNavbar;
import com.yeshi.fanli.entity.bus.homemodule.SuperHomeNavbar;
import com.yeshi.fanli.entity.system.System;
import com.yeshi.fanli.service.inter.homemodule.HomeNavbarService;
import com.yeshi.fanli.service.inter.homemodule.SuperHomeNavbarService;
import com.yeshi.fanli.tag.PageEntity;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.StringUtil;
import net.sf.json.JSONObject;
@Controller
@RequestMapping("admin/new/api/v1/coupon")
public class SystemCouponAdminController {
    @Resource
    private HomeNavbarService homeNavbarService;
    @Resource
    private SuperHomeNavbarService superHomeNavbarService;
    /**
     * 新增
     * @param callback
     * @param special
     * @param out
     */
    @RequestMapping(value = "saveAdd")
    public void saveAdd(String callback, HomeNavbar homeNavbar, PrintWriter out) {
        try {
            String name = homeNavbar.getName();
            if (StringUtil.isNullOrEmpty(name)) {
                JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("导航名称不能为空"));
                return;
            }
            homeNavbar.setCreatetime(new Date());
            homeNavbar.setUpdatetime(new Date());
            int maxOrder = homeNavbarService.getMaxOrder();
            homeNavbar.setOrderby(maxOrder + 1);
            homeNavbarService.insert(homeNavbar);
            JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("添加成功"));
        } catch (Exception e) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
            e.printStackTrace();
        }
    }
    /**
     * 修改
     * @param callback
     * @param special
     * @param out
     */
    @RequestMapping(value = "saveModify")
    public void saveModify(String callback, HomeNavbar homeNavbar, PrintWriter out) {
        try {
            Long id = homeNavbar.getId();
            if (id == null) {
                JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("ID不能为空"));
                return;
            }
            String name = homeNavbar.getName();
            if (StringUtil.isNullOrEmpty(name)) {
                JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("导航名称不能为空"));
                return;
            }
            HomeNavbar resultObj = homeNavbarService.selectByPrimaryKey(id);
            if (resultObj == null) {
                JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作数据已不存在"));
                return;
            }
            homeNavbar.setUpdatetime(new Date());
            homeNavbarService.updateByPrimaryKeySelective(homeNavbar);
            JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("修改成功"));
        } catch (Exception e) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
            e.printStackTrace();
        }
    }
    /**
     * 修改系统状态
     * @param callback
     * @param type
     * @param cardId
     * @param systemId
     * @param out
     */
    @RequestMapping(value = "saveSystemState")
    public void saveSystemState(String callback, Long id, Long systemId, PrintWriter out) {
        if (id == null || systemId == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("传递参数不能为空"));
            return;
        }
        try {
            List<SuperHomeNavbar> list = superHomeNavbarService.querybyNavbarId(id, systemId);
            if (list != null && list.size() > 0) {
                superHomeNavbarService.deletebyNavbarId(id, systemId);
                JSONObject data = new JSONObject();
                data.put("check", 0);
                JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
            } else {
                HomeNavbar homeNavbar = new HomeNavbar();
                homeNavbar.setId(id);
                System system = new System();
                system.setId(systemId);
                SuperHomeNavbar superNavbar = new  SuperHomeNavbar();
                superNavbar.setHomeNavbar(homeNavbar);
                superNavbar.setSystem(system);
                superHomeNavbarService.insertSelective(superNavbar);
                JSONObject data = new JSONObject();
                data.put("check", 1);
                JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
            }
        } catch (Exception e1) {
            e1.printStackTrace();
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("修改失败"));
        }
    }
    /**
     * 修改排序
     *
     * @param callback
     * @param goodsClass
     * @param out
     */
    @RequestMapping(value = "saveOrder")
    public void saveOrder(String callback, Long id, Integer moveType, PrintWriter out) {
        if (moveType == null || (!moveType.equals(1) && !moveType.equals(-1))) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("传递的类型不正确"));
            return;
        }
        if (id == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("ID不能为空"));
            return;
        }
        try {
            HomeNavbar resultObj = homeNavbarService.selectByPrimaryKey(id);
            if (resultObj == null) {
                JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作数据已不存在"));
                return;
            }
            Integer oldOrder = resultObj.getOrderby();
            List<HomeNavbar> list = homeNavbarService.getChangeOrder(moveType, oldOrder);
            if (list != null && list.size() > 0) {
                HomeNavbar changeObj = list.get(0);
                // 交换排序序号
                resultObj.setOrderby(changeObj.getOrderby());
                changeObj.setOrderby(oldOrder);
                homeNavbarService.updateByPrimaryKeySelective(changeObj);
            }
            homeNavbarService.updateByPrimaryKeySelective(resultObj);
            JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("操作成功"));
        } catch (Exception e) {
            e.printStackTrace();
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
        }
    }
    /**
     * 查询
     * @param callback
     * @param pageIndex
     * @param pageSize
     * @param key  模糊查询:说明、标识
     * @param out
     */
    @RequestMapping(value = "query")
    public void query(String callback, Integer pageIndex, Integer pageSize, String key,
            Integer sort, PrintWriter out) {
        if (pageIndex == null || pageIndex < 1) {
            pageIndex = 1;
        }
        if (pageSize == null || pageSize < 1) {
            pageSize = Constant.PAGE_SIZE;
        }
        try {
            List<HomeNavbar> list = homeNavbarService.listQuery((pageIndex - 1) * pageSize, pageSize, key);
            if (list == null || list.size() == 0) {
                JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无数据"));
                return;
            }
            long count = homeNavbarService.countlistQuery(key);
            int totalPage = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1);
            PageEntity pe = new PageEntity(pageIndex, pageSize, count, totalPage);
            GsonBuilder gsonBuilder = new GsonBuilder();
            gsonBuilder.serializeNulls();
            Gson gson = gsonBuilder.setDateFormat("yyyy/MM/dd HH:mm:ss").create();
            JSONObject data = new JSONObject();
            data.put("pe", pe);
            data.put("result_list", gson.toJson(list));
            JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
        } catch (Exception e) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
            e.printStackTrace();
        }
    }
    /**
     * 删除
     * @param callback
     * @param idArray
     * @param out
     */
    @RequestMapping(value = "delete")
    public void delete(String callback, String idArray, PrintWriter out) {
        try {
            if (StringUtil.isNullOrEmpty(idArray)) {
                JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请选择操作的数据"));
                return;
            }
            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;
            }
            int count = homeNavbarService.deleteBatchByPrimaryKey(list);
            JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("成功删除["+ count +"]条数据"));
        } catch (Exception e) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("删除失败"));
            e.printStackTrace();
        }
    }
    /**
     * 专题图片上传
     * @param file
     * @param uid
     * @param id
     * @param request
     * @param response
     * @param out
     */
    @RequestMapping(value = "uploadPic")
    public void uploadPic(@RequestParam("file") CommonsMultipartFile file, Long id, PrintWriter out) {
        if (file == null) {
            out.print(JsonUtil.loadFalseResult("上传文件为空"));
            return;
        }
        if (id == null) {
            out.print(JsonUtil.loadFalseResult("ID不能为空"));
            return;
        }
        try {
            HomeNavbar resultObj = homeNavbarService.selectByPrimaryKey(id);
            if (resultObj == null) {
                out.print(JsonUtil.loadFalseResult("操作数据已不存在"));
                return;
            }
            homeNavbarService.uploadPicture(file, resultObj);
            out.print(JsonUtil.loadTrueResult("上传成功"));
        } catch (Exception e) {
            out.print(JsonUtil.loadFalseResult("操作失败"));
            e.printStackTrace();
        }
    }
}
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/push/PushCouponRecordMapper.java
@@ -22,6 +22,6 @@
     * @param uid
     * @return
     */
    List<PushCouponRecord> listByUid( @Param("uid") Long uid);
    List<PushCouponRecord> listByUid(@Param("uid") Long uid);
    
}
fanli/src/main/java/com/yeshi/fanli/mapping/push/PushCouponRecordMapper.xml
@@ -47,7 +47,7 @@
  </update>
  
   <select id="listByUid" resultMap="BaseResultMap">
        SELECT <include refid="Base_Column_List" />  FROM yeshi_ec_push_coupon_record
        SELECT * FROM yeshi_ec_push_coupon_record
        WHERE pcd_uid = #{uid}
   </select>
   
fanli/src/main/java/com/yeshi/fanli/service/impl/push/PushCouponServiceImpl.java
@@ -124,7 +124,6 @@
            // 更新数据
            updateByPrimaryKey(current);
        }
    }
    @Override
@@ -143,13 +142,10 @@
        }
        
        
        // TODO 推送跳转
        String uids = pushCoupon.getUids();
        if (uids == null || uids.trim().length() == 0) {
            // 全推
            //pushService.pushZNX(null, title, content);
            pushService.pushWelfareCenter(null, title, content);
            
        } else {
            // 指定用户推送
@@ -159,7 +155,7 @@
                for (int i = 0; i < uidArray.length; i++) {
                    String str_uid = uidArray[i];
                    if (str_uid != null && str_uid.trim().length() > 0) {
                        //pushService.pushZNX(Long.parseLong(str_uid), title, content);
                        pushService.pushWelfareCenter(Long.parseLong(str_uid), title, content);
                    }
                }
            }
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserSystemCouponServiceImpl.java
@@ -181,7 +181,15 @@
            throw new UserSystemCouponException(1, "参数不正确");
        }
        SystemCoupon coupon = systemCouponService.getCouponByType(couponType);
        SystemCoupon coupon = null;
        if (couponType.equals(CouponTypeEnum.welfareFreeCoupon.name())) {
            // 福利免单券
            coupon = systemCouponService.getCouponByType(couponType);
        } else if (couponType.equals(CouponTypeEnum.rebatePercentCoupon.name())) {
            // 奖励券10%
            coupon = systemCouponService.getCouponByTypeAndPercent(couponType,new BigDecimal(10));
        }
        if (coupon == null) {
            throw new UserSystemCouponException(1, "券类型不正确");
        }
@@ -521,6 +529,7 @@
    @Transactional
    @Override
    public List<UserSystemCouponVO> getOrderCouponList(Long uid) throws UserSystemCouponException, Exception {
        if (uid == null) {
            throw new UserSystemCouponException(1, "用户未登录");
        }
@@ -1545,7 +1554,6 @@
            }
            
            if (receive) {
                // 插入记录
                PushCouponRecord pushCouponRecord = new PushCouponRecord();
                pushCouponRecord.setPushCoupon(pushCoupon);
fanli/src/test/java/org/fanli/config/SystemCouponServiceTest.java
New file
@@ -0,0 +1,46 @@
package org.fanli.config;
import java.math.BigDecimal;
import java.util.Date;
import org.junit.Test;
import com.yeshi.fanli.entity.system.SystemCoupon;
import com.yeshi.fanli.entity.system.SystemCoupon.CouponTypeEnum;
import com.yeshi.fanli.service.inter.config.SystemCouponService;
import com.yeshi.fanli.util.BeanUtil;
public class SystemCouponServiceTest {
    @Test
    public void test3() {
        SystemCouponService service = BeanUtil.getBean(SystemCouponService.class);
        for (int i = 1; i < 61 ;i ++) {
            if (i==10) {
                continue; // 10%奖励券已存在
            }
            SystemCoupon systemCoupon = new SystemCoupon();
            systemCoupon.setEffect("再返" + i + "%");
            systemCoupon.setName("返利奖励券");
            systemCoupon.setPercent(new BigDecimal(i));
            systemCoupon.setState(1);
            systemCoupon.setType(CouponTypeEnum.rebatePercentCoupon);
            systemCoupon.setExpiryDay(15);
            systemCoupon.setPicture("http://img.flqapp.com/resource/coupon/coupon_reward.png");
            systemCoupon.setPictureInvalid("http://img.flqapp.com/resource/coupon/coupon_reward.png_invalid");
            systemCoupon.setRule("仅支持返利订单为已到账状态时使用本券,可再返"+i+"%");
            systemCoupon.setCreateTime(new Date());
            systemCoupon.setUpdateTime(new Date());
            service.insertSelective(systemCoupon);
        }
    }
}