فهرست منبع

增加优惠券,增加下载订单

wangxiaoming 7 سال پیش
والد
کامیت
b82d215348

+ 11 - 1
tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/order/OrderItem.java

@@ -45,7 +45,9 @@ public class OrderItem implements Serializable {
 	private String produectRemark;		//产品备注,存放百胜商品69码的
 
 	private String colorPolyCode;		//菠萝派对应的商品编号
-	
+
+	private String productTypeName;		//对应类型名称
+
 
 	public Integer getItemColorId() {
 		return itemColorId;
@@ -179,4 +181,12 @@ public class OrderItem implements Serializable {
 	public void setColorPolyCode(String colorPolyCode) {
 		this.colorPolyCode = colorPolyCode;
 	}
+
+	public String getProductTypeName() {
+		return productTypeName;
+	}
+
+	public void setProductTypeName(String productTypeName) {
+		this.productTypeName = productTypeName;
+	}
 }

+ 6 - 0
tooth-wechat-interface/src/main/java/com/iamberry/wechat/face/order/AdminOrderService.java

@@ -227,4 +227,10 @@ public interface AdminOrderService {
 	 * @return
 	 */
 	NumberBacklogDto selectNumberBacklog();
+
+	/**
+	 * 获取订单列表-Excel
+	 * @return
+	 */
+	List<Order> getOrderListToExcel(Order order);
 }

+ 6 - 0
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/AdminOrderMapper.java

@@ -217,4 +217,10 @@ public interface AdminOrderMapper {
 	 * @return
 	 */
 	NumberBacklogDto selectNumberBacklog();
+
+	/**
+	 * 获取订单列表-Excel
+	 * @return
+	 */
+	List<Order> getOrderListToExcel(Order order);
 }

+ 104 - 0
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/adminOrderMapper.xml

@@ -890,4 +890,108 @@
 		) AS d
 		)
 	</select>
+
+	<resultMap  id="BaseResultMap" type="Order" >
+		<result    column="sales_orderid"    property="salesOrderid" />
+		<result    column="sales_openid"    property="salesOpenid" />
+		<result    column="sales_yet_amount"    property="salesYetAmount" />
+		<result    column="sales_amount"    property="salesAmount" />
+		<result    column="sales_reward_num"    property="salesRewardNum" />
+		<result    column="sales_integral_num"    property="salesIntegralNum" />
+		<result    column="sales_rate_amount"    property="salesRateAmount" />
+		<result    column="sales_create_date"    property="salesCreateDate" />
+		<result    column="sales_reward_integral_num"    property="salesRewardIntegralNum" />
+		<result    column="sales_post_num"    property="salesPostNum" />
+		<result    column="sales_post_firm"    property="salesPostFirm" />
+		<result    column="sales_status"    property="salesStatus" />
+		<result    column="sales_send_date"    property="salesSendDate" />
+		<result    column="sales_return_date"    property="salesReturnDate" />
+		<result    column="sales_address_info"    property="salesAddressInfo" />
+		<result    column="sales_address_postnum"    property="salesAddressPostnum" />
+		<result    column="sales_address_tel"    property="salesAddressTel" />
+		<result    column="sales_address_name"    property="salesAddressName" />
+		<result    column="sales_return_des"    property="salesReturnDes" />
+		<result    column="sales_admin_remark"    property="salesAdminRemark" />
+		<result    column="sales_user_remark"    property="salesUserRemark" />
+		<result    column="sales_transaction_id"    property="salesTransactionId" />
+		<result    column="sales_transaction_date"    property="salesTransactionDate" />
+		<result    column="sales_refund_no"    property="salesRefundNo" />
+		<result    column="sales_transaction_refund_id"    property="salesTransactionRefundId" />
+		<result    column="sales_color_type"    property="salesColorType" />
+		<result    column="sales_proxy_reward"    property="salesProxyReward" />
+		<result    column="sales_coupon_receive_id"    property="couponId" />
+		<result    column="sales_porderid"    property="salesPorderid" />
+		<result    column="sales_order_type"    property="salesOrderType" />
+		<result    column="sales_is_rfund"    property="salesIsRfund" />
+		<result    column="sales_audit_remark"    property="salesAuditRemark" />
+		<result    column="sales_is_customized"    property="salesIsCustomized" />
+		<collection property="orderItemList" column="sales_orderid" javaType="ArrayList" select="getOrderItemListToExcel"/>
+	</resultMap>
+	<select id="getOrderListToExcel" resultMap="BaseResultMap" parameterType="Order" >
+		select
+			t.sales_orderid,
+			t.sales_openid,
+			t.sales_yet_amount,
+			t.sales_amount,
+			t.sales_reward_num,
+			t.sales_integral_num,
+			t.sales_rate_amount,
+			t.sales_create_date,
+			t.sales_reward_integral_num,
+			t.sales_post_num,
+			t.sales_post_firm,
+			t.sales_status,
+			t.sales_send_date,
+			t.sales_return_date,
+			t.sales_address_info,
+			t.sales_address_postnum,
+			t.sales_address_tel,
+			t.sales_address_name,
+			t.sales_return_des,
+			t.sales_admin_remark,
+			t.sales_user_remark,
+			t.sales_transaction_id,
+			t.sales_transaction_date,
+			t.sales_refund_no,
+			t.sales_transaction_refund_id,
+			t.sales_color_type,
+			t.sales_proxy_reward,
+			t.sales_lock_type,
+			t.sales_coupon_receive_id,
+			t.sales_balance_amount,
+			t.sales_porderid,
+			t.sales_order_type,
+			t.sales_is_rfund,
+			t.sales_audit_remark,
+			t.sales_is_customized,
+			uuer.user_nickname
+		from tb_iamberry_shop_sales_order t
+		LEFT JOIN tb_iamberry_user_userinfo uuer ON t.sales_openid = uuer.user_openid
+		WHERE t.sales_status in (2,5,9,10,11,12)
+	</select>
+	<select id="getOrderItemListToExcel" resultType="OrderItem" parameterType="String" >
+		select
+		    t.item_id,
+			t.item_sales_orderid,
+			t.item_product_id,
+			t.item_color_id,
+			t.item_num,
+			t.item_total,
+			t.item_create_date,
+			t.item_product_name,
+			t.item_product_discount,
+			t.item_product_price,
+			t.item_product_pic,
+			t.item_product_type,
+			pt.type_name AS productTypeName,
+			pc.color_name AS productColor
+		from tb_iamberry_shop_order_item t
+		LEFT JOIN tb_iamberry_product_info pi ON t.item_product_id = pi.product_id
+		LEFT JOIN tb_iamberry_product_color pc ON t.item_color_id = pc.color_id
+		LEFT JOIN tb_iamberry_product_type pt ON pi.product_type = pt.type_id
+		WHERE t.item_sales_orderid = #{salesOrderid}
+	</select>
+
+
+
 </mapper>

+ 5 - 0
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/order/AdminOrderServiceImpl.java

@@ -784,4 +784,9 @@ public class AdminOrderServiceImpl implements AdminOrderService {
 	public NumberBacklogDto selectNumberBacklog() {
 		return adminOrderDao.selectNumberBacklog();
 	}
+
+	@Override
+	public List<Order> getOrderListToExcel(Order order) {
+		return adminOrderDao.getOrderListToExcel(order);
+	}
 }

+ 6 - 0
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/order/dao/AdminOrderDao.java

@@ -234,4 +234,10 @@ public interface AdminOrderDao {
 	 * @return
 	 */
 	NumberBacklogDto selectNumberBacklog();
+
+	/**
+	 * 获取订单列表-Excel
+	 * @return
+	 */
+	List<Order> getOrderListToExcel(Order order);
 }

+ 5 - 0
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/order/dao/impl/AdminOrderDaoImpl.java

@@ -340,4 +340,9 @@ public class AdminOrderDaoImpl implements AdminOrderDao {
 	public NumberBacklogDto selectNumberBacklog() {
 		return adminOrderMapper.selectNumberBacklog();
 	}
+
+	@Override
+	public List<Order> getOrderListToExcel(Order order) {
+		return adminOrderMapper.getOrderListToExcel(order);
+	}
 }

+ 117 - 3
tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/admin/AdminOrderHandlers.java

@@ -23,6 +23,7 @@ import com.iamberry.wechat.face.relationship.DealerRelationService;
 import com.iamberry.wechat.face.relationship.WdRelationService;
 import com.iamberry.wechat.handles.mq.MQServiceProxy;
 import com.iamberry.wechat.tools.NameUtils;
+import com.iamberry.wechat.tools.ObjectExcelView;
 import com.iamberry.wechat.tools.ResultInfo;
 import com.iamberry.wechat.tools.SendMessageUtil;
 import org.apache.commons.collections.map.HashedMap;
@@ -41,9 +42,8 @@ import java.io.IOException;
 import java.net.URLDecoder;
 import java.text.DecimalFormat;
 import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+
 import static com.iamberry.wechat.service.ImberryConfig.INFORM_SHIPPING;
 //import cn.jpush.api.common.connection.IHttpClient.RequestMethod;
 
@@ -1064,4 +1064,118 @@ public class AdminOrderHandlers {
         msg.setData(numberBacklogDto);
         return msg;
     }
+
+    /**
+     * 下载导出订单
+     */
+    @ResponseBody
+    @RequestMapping(value = "/download_order")
+    public ModelAndView downloadOrder(HttpServletRequest request){
+        Order order = new Order();
+        List<Order> orderList = adminOrderService.getOrderListToExcel(order);
+
+        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+        // 准备model
+        Map<String, Object> model = new HashMap<String, Object>();
+        model.put("fileName", "上朵销售数据");	// 下载文件名称
+        // 标题
+        List<String> titles = new ArrayList<String>();
+        titles.add("时间");
+        titles.add("产品类型");
+        titles.add("产品名称");
+        titles.add("产品颜色");
+        titles.add("数量");
+        titles.add("订单金额");
+        titles.add("支付金额");
+        titles.add("订单状态");
+        titles.add("优惠券使用");
+        titles.add("订单编号");
+        titles.add("收货人");
+        titles.add("昵称");
+        titles.add("手机号码");
+        model.put("titles", titles);
+        List<List<Object>> countexts = new ArrayList<List<Object>>();
+        for (Order info : orderList) {
+            Integer num=0;
+            for (int i=0; i<info.getOrderItemList().size(); i++) {
+                num += info.getOrderItemList().get(i).getItemNum();
+            }
+            Integer offerAmount = info.getSalesAmount() - info.getSalesYetAmount();  //优惠金额
+            Integer oneOfferAmount = offerAmount/num;       //单个优惠金额
+            for (OrderItem item:info.getOrderItemList()) {
+                List<Object> row = new ArrayList<Object>();
+                row.add(info.getSalesCreateDate() == null ? "":formatter.format(info.getSalesCreateDate()));
+                row.add(item.getProductTypeName() == null ? "":item.getProductTypeName());
+                row.add(item.getItemProductName() == null ? "":item.getItemProductName());
+                row.add(item.getProductColor() == null ? "":item.getProductColor());
+                row.add(item.getItemNum() == null ? "":item.getItemNum());
+                row.add(item.getItemTotal() == null ? "":item.getItemTotal()/100);  //订单金额
+                if(info.getCouponId() != null){     //支付金额
+                    row.add((item.getItemTotal() - (oneOfferAmount*item.getItemNum()))/100);
+                }else{
+                    row.add(item.getItemTotal() == null ? "":item.getItemTotal()/100);
+                }
+                String statusString = "";
+                switch (info.getSalesStatus()){
+                    case 0:
+                        statusString = "取消订单";
+                        break;
+                    case 1:
+                        statusString = "待支付";
+                        break;
+                    case 2:
+                        statusString = "已支付、待发货";
+                        break;
+                    case 3:
+                        statusString = "退款申请中";
+                        break;
+                    case 4:
+                        statusString = "已退款";
+                        break;
+                    case 5:
+                        statusString = "已发货";
+                        break;
+                    case 6:
+                        statusString = "申请退货中";
+                        break;
+                    case 7:
+                        statusString = "退货中";
+                        break;
+                    case 8:
+                        statusString = "订单退货";
+                        break;
+                    case 9:
+                        statusString = "换货中";
+                        break;
+                    case 10:
+                        statusString = "换货完成";
+                        break;
+                    case 11:
+                        statusString = "申请换货中";
+                        break;
+                    case 12:
+                        statusString = "订单完成";
+                        break;
+                }
+                row.add(statusString);  //订单状态
+                if(info.getCouponId() != null){
+                    row.add("是");
+                }else{
+                    row.add("否");
+                }
+                row.add(info.getSalesOrderid() == null ? "":info.getSalesOrderid());
+                row.add(info.getSalesAddressName() == null ? "":info.getSalesAddressName());
+                row.add(info.getUserNickname() == null ? "":info.getUserNickname());
+                row.add(info.getSalesAddressTel() == null ? "":info.getSalesAddressTel());
+                countexts.add(row);
+            }
+        }
+        model.put("varList", countexts);
+
+        ObjectExcelView erv = new ObjectExcelView();
+        ModelAndView mv = new ModelAndView(erv, model);
+        return mv;
+    }
+
 }

+ 87 - 2
tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/coupon/CouponTypeHandler.java

@@ -806,7 +806,7 @@ public class CouponTypeHandler {
 		}
 
 		Calendar c = Calendar.getInstance();//获取一个日历实例
-		c.set(2018, 7-1, 4,23,59);//设定日历的日期
+		c.set(2018, 7-1, 8,23,59);//设定日历的日期
 		Date endDate = c.getTime();
 
 		if(endDate.before(new Date())){   //endDate < new Date()  当前时间大于结束时间了,活动过期了
@@ -834,7 +834,92 @@ public class CouponTypeHandler {
 			ci.setCouponId(couponType.getCouponId());
 
 			Calendar calendar = Calendar.getInstance();
-			calendar.set(2018, 7-1, 4,23,59);//设定日历的日期
+			calendar.set(2018, 7-1, 8,23,59);//设定日历的日期
+
+			ci.setCouponUseEndDate(calendar.getTime());
+			ci.setCouponReceiveDate(new Date());
+			ci.setCouponItemUseropenid(memberInfo.getUserOpenid());
+			ci.setCouponUseStatus(1);
+			ci.setCouponIsDonation(2);
+			ci.setCouponItemRemark(couponType.getCouponRemark());
+			if(couponItemService.insertCouponItem(ci) > 0){
+				resultMsg.setResultCode(ResultInfo.SUCCESSCODE);
+				resultMsg.setStatus(true);
+				try{
+					couponTypeService.updateCouponTypeForItem(couponId);
+				}catch (Exception e){
+					e.printStackTrace();
+				}
+			}else{
+				resultMsg.setResultCode(ResultInfo.ERRORCODE);
+				resultMsg.setStatus(false);
+			}
+		}else{
+			resultMsg.setResultCode(ResultInfo.ERRORCODE);
+			resultMsg.setStatus(false);
+			resultMsg.setMessage("每人限领"+  couponType.getCouponGetLimit() +"张");
+			return resultMsg;
+		}
+		return resultMsg;
+	}
+
+	/**
+	 *  领取优惠券
+	 * @param request
+	 * @param couponId
+	 * @return
+	 */
+	@ResponseBody
+	@RequestMapping("/re_two_coupon")
+	public ResultMsg reTwoCoupon(HttpServletRequest request,Integer couponId){
+		ResultMsg resultMsg = new ResultMsg();
+		Member memberInfo = WechatUtils.getUserBySession(request);
+		memberInfo = memberService.getMemberByUserOpenId(memberInfo.getUserOpenid());
+		if(couponId == null || "".equals(couponId)){
+			resultMsg.setResultCode("500");
+			resultMsg.setStatus(false);
+			resultMsg.setMessage("未查询到到优惠券");
+			return resultMsg;
+		}
+		/*获取优惠券类型*/
+		CouponType couponType = couponTypeService.getCouponTypeById(couponId);
+		if(couponType == null){
+			resultMsg.setResultCode("500");
+			resultMsg.setStatus(false);
+			resultMsg.setMessage("未查询到到优惠券");
+			return resultMsg;
+		}
+
+		if(memberInfo.getUserStatus() != 2){
+			resultMsg.setResultCode("501");
+			resultMsg.setStatus(false);
+			resultMsg.setMessage("本优惠券仅限关注之后使用,请搜索微信公众号“soodo上朵”并关注。");
+			return resultMsg;
+		}
+
+		CouponItem couponItem = new CouponItem();
+		couponItem.setCouponItemUseropenid(memberInfo.getUserOpenid());
+		couponItem.setCouponId(couponId);
+		Integer msg = couponItemService.isReceive(couponItem);
+
+		if(couponType.getCouponEndDate().before(new Date())){   //couponType.getCouponEndDate < new Date()
+			resultMsg.setResultCode("501");
+			resultMsg.setStatus(false);
+			resultMsg.setMessage("活动已过期!");
+			return resultMsg;
+		}
+
+		/* 比对每个人限领的张数 */
+		if(msg < couponType.getCouponGetLimit()){
+			CouponItem ci = new CouponItem();
+			ci.setCouponId(couponType.getCouponId());
+
+			Calendar calendar = Calendar.getInstance();
+			calendar.setTime(new Date());
+			calendar.add(Calendar.DAY_OF_MONTH, couponType.getCouponGetDays());	//couponGetDays
+			calendar.set(Calendar.HOUR_OF_DAY, 23);//时
+			calendar.set(Calendar.MINUTE, 59);//分
+			calendar.set(Calendar.SECOND, 59);
 
 			ci.setCouponUseEndDate(calendar.getTime());
 			ci.setCouponReceiveDate(new Date());

+ 7 - 1
tooth-wechat-web/src/main/webapp/WEB-INF/views/admin/order/orderList.jsp

@@ -204,9 +204,11 @@
 				日期范围:
 				<input type="text" readonly="readonly" placeholder="开始日期" onfocus="WdatePicker({maxDate:'#F{$dp.$D(\'endDate\')||\'2020-10-01\'}'})" id="beginDate" value="${beginDate }" name="beginDate" class="input-text Wdate" style="width: 120px;">
 				- <input type="text" readonly="readonly" placeholder="结束日期" onfocus="WdatePicker({minDate:'#F{$dp.$D(\'beginDate\')}',maxDate:'2020-10-01'})" id="endDate" value="${endDate }" name="endDate" class="input-text Wdate" style="width: 120px;">
-				 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<button name="" id="submitBtn" class="btn btn-danger" type="submit">
+				 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+				<button name="" id="submitBtn" class="btn btn-danger" type="submit">
 					<i class="Hui-iconfont">&#xe665;</i> 搜索
 				</button>
+				<button style="display: none" name="" id="" class="btn btn-danger" type="button" onclick="downloadExcel()">下载订单</button>
 			</form>
 		</div>
 		<div class="mt-20">
@@ -599,6 +601,10 @@
 						}
 					});
 				}
+
+				function downloadExcel(){
+                    window.location=" <%=request.getContextPath()%>/admin/order/download_order";
+				}
 				</script>
 </body>
 </html>