diff --git a/coupon/src/main/java/com/yoho/ufo/coupon/controller/CouponController.java b/coupon/src/main/java/com/yoho/ufo/coupon/controller/CouponController.java index c5f4d8c..3a99ec1 100644 --- a/coupon/src/main/java/com/yoho/ufo/coupon/controller/CouponController.java +++ b/coupon/src/main/java/com/yoho/ufo/coupon/controller/CouponController.java @@ -1,5 +1,6 @@ package com.yoho.ufo.coupon.controller; +import com.google.common.collect.Lists; import com.yoho.ufo.coupon.service.ICouponService; import com.yoho.ufo.exception.PlatformException; import com.yoho.ufo.service.impl.BatchService; @@ -118,4 +119,19 @@ public class CouponController { } } + + /** + * 发放记录查询 + * @param req + * @return + */ + @RequestMapping(value = "/queryUserCouponList") + public com.yohobuy.ufo.model.common.ApiResponse queryUserCouponList(UserCouponQueryReq req) { + LOGGER.info("enter queryCoupons,param is {}",req); + if(req.getUid() == null){ + return new com.yohobuy.ufo.model.common.ApiResponse<>(Lists.newArrayList()); + } + return new com.yohobuy.ufo.model.common.ApiResponse<>(couponService.queryUserCouponList(req)); + } + } diff --git a/coupon/src/main/java/com/yoho/ufo/coupon/service/ICouponService.java b/coupon/src/main/java/com/yoho/ufo/coupon/service/ICouponService.java index 3f2caf6..04196b1 100644 --- a/coupon/src/main/java/com/yoho/ufo/coupon/service/ICouponService.java +++ b/coupon/src/main/java/com/yoho/ufo/coupon/service/ICouponService.java @@ -1,10 +1,13 @@ package com.yoho.ufo.coupon.service; +import com.yoho.ufo.model.coupon.resp.UidCouponQueryResp; +import com.yoho.ufo.model.coupon.resp.UserCouponQueryResp; import com.yoho.ufo.service.model.ApiResponse; import com.yohobuy.ufo.coupon.req.CouponQueryReq; import com.yohobuy.ufo.coupon.req.CouponSaveUpdateReq; import com.yohobuy.ufo.coupon.req.CouponSendReq; import com.yohobuy.ufo.coupon.req.UserCouponQueryReq; +import com.yohobuy.ufo.model.common.PageResponseBO; import org.springframework.web.multipart.MultipartFile; import java.util.Set; @@ -24,4 +27,6 @@ public interface ICouponService { ApiResponse sendCoupon(CouponSendReq req); ApiResponse sendCouponByImport(MultipartFile file, String couponToken) throws Exception; + + PageResponseBO<UidCouponQueryResp> queryUserCouponList(UserCouponQueryReq req); } diff --git a/coupon/src/main/java/com/yoho/ufo/coupon/service/impl/CouponServiceImpl.java b/coupon/src/main/java/com/yoho/ufo/coupon/service/impl/CouponServiceImpl.java index e1eecf3..2974b06 100644 --- a/coupon/src/main/java/com/yoho/ufo/coupon/service/impl/CouponServiceImpl.java +++ b/coupon/src/main/java/com/yoho/ufo/coupon/service/impl/CouponServiceImpl.java @@ -17,6 +17,7 @@ import com.yoho.ufo.model.coupon.Coupon; import com.yoho.ufo.model.coupon.CouponProductLimit; import com.yoho.ufo.model.coupon.UserCoupon; import com.yoho.ufo.model.coupon.resp.CouponQueryResp; +import com.yoho.ufo.model.coupon.resp.UidCouponQueryResp; import com.yoho.ufo.model.coupon.resp.UserCouponQueryResp; import com.yoho.ufo.service.IBusinessExportService; import com.yoho.ufo.service.impl.BatchService; @@ -26,6 +27,7 @@ import com.yohobuy.ufo.coupon.req.CouponQueryReq; import com.yohobuy.ufo.coupon.req.CouponSaveUpdateReq; import com.yohobuy.ufo.coupon.req.CouponSendReq; import com.yohobuy.ufo.coupon.req.UserCouponQueryReq; +import com.yohobuy.ufo.model.common.PageResponseBO; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.math.NumberUtils; import org.apache.commons.lang3.StringUtils; @@ -280,6 +282,52 @@ public class CouponServiceImpl implements ICouponService,IBusinessExportService{ return sendCouponByMQ(couponToken, uidList); } + public PageResponseBO<UidCouponQueryResp> queryUserCouponList(UserCouponQueryReq req) { + LOGGER.info("enter queryUserCouponList, req is {}",req); + int total = userCouponMapper.selectTotalByCondition(req); + if(0==total){ + new PageResponseBO<>(total, Lists.newArrayList(), req.getRows(), req.getPage());; + } + List<UserCoupon> userCoupons = userCouponMapper.selectByCondition(req); + List<UidCouponQueryResp> result = complateCouponInfo(userCoupons); + + + + return new PageResponseBO<>(total, result, req.getRows(), req.getPage()); + } + + private List<UidCouponQueryResp> complateCouponInfo(List<UserCoupon> userCoupons) { + if (CollectionUtils.isEmpty(userCoupons)) { + return Lists.newArrayList(); + } + + List<Integer> couponLists = userCoupons.stream().map(UserCoupon::getCouponId).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(couponLists)) { + return Lists.newArrayList(); + } + + List<Coupon> coupons = couponMapper.selectByIds(couponLists); + Map<Integer, Coupon> couponMap = coupons.stream().collect(Collectors.toMap(Coupon::getId, item -> item, (a, b) -> a)); + + + List<UidCouponQueryResp> result = new ArrayList<>(); + + for(UserCoupon userCoupon : userCoupons){ + Coupon coupon = couponMap.get(userCoupon.getCouponId()); + result.add(UidCouponQueryResp.builder().couponAmount(null != coupon ? coupon.getCouponAmount() : null) + .couponName(null != coupon ? coupon.getCouponName() : null) + .couponId(userCoupon.getCouponId()) + .couponCode(userCoupon.getCouponCode()) + .createTime(com.yoho.ufo.util.DateUtil.int2DateStr(userCoupon.getCreateTime(), "yyyy-MM-dd HH:mm:ss")) + .status(UserCoupon.UserCouponStatusEnum.getKey(userCoupon.getStatus())) + .statusValue(userCoupon.getStatus()) + .uid(userCoupon.getUid()) + .useTime(null == userCoupon.getUseTime() || 0 == userCoupon.getUseTime() ? null : com.yoho.ufo.util.DateUtil.int2DateStr(userCoupon.getUseTime(), "yyyy-MM-dd HH:mm:ss")) + .build()); + } + return result; + } + private ApiResponse sendCouponByMQ(String couponToken, List<Integer> uidList){ UserHelper operator = new UserHelper(); LOGGER.info("sendCoupon with couponToken is {}, uidList is {}, operateUserId is {}, operateUserName is {}", couponToken, uidList, operator.getUserId(), operator.getUserName()); diff --git a/dal/src/main/java/com/yoho/ufo/dal/CouponMapper.java b/dal/src/main/java/com/yoho/ufo/dal/CouponMapper.java index 1a5bfaa..947c117 100644 --- a/dal/src/main/java/com/yoho/ufo/dal/CouponMapper.java +++ b/dal/src/main/java/com/yoho/ufo/dal/CouponMapper.java @@ -24,4 +24,6 @@ public interface CouponMapper { void insertByCouponSaveUpdateReq(@Param("param") CouponSaveUpdateReq param); void updateByCouponSaveUpdateReq(@Param("param") CouponSaveUpdateReq param); + + List<Coupon> selectByIds(@Param("ids") List<Integer> id); } diff --git a/dal/src/main/java/com/yoho/ufo/model/coupon/resp/UidCouponQueryResp.java b/dal/src/main/java/com/yoho/ufo/model/coupon/resp/UidCouponQueryResp.java new file mode 100644 index 0000000..802d82d --- /dev/null +++ b/dal/src/main/java/com/yoho/ufo/model/coupon/resp/UidCouponQueryResp.java @@ -0,0 +1,24 @@ +package com.yoho.ufo.model.coupon.resp; + +import com.yoho.ufo.annotation.BatchExportField; +import lombok.Data; +import lombok.ToString; +import lombok.experimental.Builder; + +/** + * Created by li.ma on 2019/5/21. + */ +@Data +@ToString +@Builder +public class UidCouponQueryResp { + private Integer couponId; + private String couponName; + private Float couponAmount; + private String couponCode; + private Integer uid; + private String createTime; + private String status; + private Integer statusValue; + private String useTime; +} diff --git a/dal/src/main/resources/META-INF/mybatis/CouponMapper.xml b/dal/src/main/resources/META-INF/mybatis/CouponMapper.xml index b882da3..65d8a1c 100644 --- a/dal/src/main/resources/META-INF/mybatis/CouponMapper.xml +++ b/dal/src/main/resources/META-INF/mybatis/CouponMapper.xml @@ -226,4 +226,11 @@ select <include refid="Base_Column_List" /> from coupon where coupon_token =#{token} and status = 1 limit 1; </select> + + <select id="selectByIds" resultType="com.yoho.ufo.model.coupon.Coupon"> + select <include refid="Base_Column_List" /> from coupon where id in + <foreach collection="ids" close=")" open="(" separator="," item="item"> + #{item} + </foreach> + </select> </mapper> \ No newline at end of file diff --git a/web/src/main/webapp/html/coupon/userCoupon.html b/web/src/main/webapp/html/coupon/userCoupon.html new file mode 100644 index 0000000..5a3ed56 --- /dev/null +++ b/web/src/main/webapp/html/coupon/userCoupon.html @@ -0,0 +1,135 @@ +<!DOCTYPE html> +<html> +<head> + <meta charset="UTF-8"/> + <title>Yoho!Buy运营平台</title> + <script src="/ufoPlatform/js/include.js"></script> + <script src="/ufoPlatform/js/ajaxfileupload.js"></script> +</head> +<body class="easyui-layout" fit="true"> +<div region="north" style="height: 230px"> + <script> + document.write(addHead('用户优惠券', '')); + </script> + <style> + .div_search input { + margin-top: 20px; + } + + .div_search .textbox { + margin-top: 20px; + } + + .div_search .easyui-linkbutton { + margin-top: 20px; + } + </style> + <div style="margin-left: 30px;" class="div_search"> + <input id="uid" type="text"> + <a id="searchLinkButton" class="easyui-linkbutton btn-info" data-options="iconCls:'icon-search'">筛选</a> + </div> +</div> +<div region="center"> + <div style="margin-left: 30px;margin-top: 20px;height: 660px"> + <table id="couponTable"></table> + </div> +</div> + +<script type="text/javascript"> + $(function () { + $("#uid").textbox({ + prompt: "UID" + }); + + $("#couponTable").myDatagrid({ + fit: true, + fitColumns: true, + nowrap: false, + url: contextPath + "/coupon/queryUserCouponList", + method: 'POST', + loadFilter: function (data) { + var temp = defaultLoadFilter(data); + temp.rows = temp.list; + return temp; //couponAmount + }, + columns: [[{ + title: "券ID", + field: "couponId", + width: 40, + align: "center" + },{ + title: "券名称", + field: "couponName", + width: 40, + align: "center" + },{ + title: "券金额", + field: "couponAmount", + width: 40, + align: "center" + },{ + title: "UID", + field: "uid", + width: 40, + align: "center" + }, { + title: "单券号", + field: "couponCode", + width: 100, + align: "center" + }, { + title: "发放时间", + field: "createTime", + width: 80, + align: "center" + }, { + title: "使用时间", + field: "useTime", + width: 80, + align: "center" + }, { + title: "状态", + field: "statusValue", + width: 50, + align: "center", + formatter: function (value, rowData) { + return value == 1 ? '已使用' : '未使用'; + } + }]], + cache: false, + pagination: true, + pageSize: 10, + pageList: [10], + idField: "id", + singleSelect: false, + checkOnSelect: false, + onLoadSuccess: function () {} + }); + + + // 搜索 + $("#searchLinkButton").linkbutton({ + onClick: function () { + var param = getParams(); + $("#couponTable").myDatagrid("load", param); + } + }); + + /** + * 提取出搜索参数 + */ + function getParams() { + var uid = $('#uid').textbox('getText'); + var param = {}; + if (undefined !== uid && null !== uid && "" !== uid) { + param.uid = uid; + } + return param; + } + }); + + +</script> + +</body> +</html> \ No newline at end of file