فهرست منبع

choujiang
积分商城

yueshen 7 سال پیش
والد
کامیت
5ac169e4d4

+ 2 - 2
tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/WechatUtils.java

@@ -75,9 +75,9 @@ public class WechatUtils {
 	 */
 	public static Member getUserBySession(HttpServletRequest request) {
 
-		Member m = new Member();
+ 		Member m = new Member();
 		m.setUserId(15752);
-		m.setUserOpenid("oZ9pv02WMRQgyDVRY1a_daYecwHI");
+ 		m.setUserOpenid("oZ9pv02WMRQgyDVRY1a_daYecwHI");
 		if(true){
 			return m;
 		}

+ 16 - 0
tooth-wechat-interface/src/main/java/com/iamberry/wechat/face/member/MemberService.java

@@ -166,7 +166,23 @@ public interface MemberService{
 
 	/**
 	 * 获取用户当前等级
+	 * 有等级返回等级id,没有等等级返回null
 	 * @return
 	 */
 	Integer getUserGrad(Integer userId);
+
+	/**
+	 * 获取当天生日的人。送生日福利
+	 * @param member
+	 * @return
+	 */
+	List<Member> getBirthday(Member member);
+
+	/**
+	 * 增加积分或者减少积分接口
+	 * @param type  1:增加积分  2:减少积分
+	 * @param integral
+	 * @return
+	 */
+	Integer updaterIntegral(Integer userId,Integer type,Integer integral);
 }

+ 49 - 24
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/integral/IntegralOrderServiceImpl.java

@@ -16,13 +16,14 @@ import com.iamberry.wechat.face.integral.IntegralProductService;
 import com.iamberry.wechat.face.member.MemberService;
 import com.iamberry.wechat.service.mapper.*;
 import com.iamberry.wechat.tools.OrderNOUtil;
+import com.iamberry.wechat.tools.StrUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import util.PageUtil;
 
-import java.beans.Transient;
 import java.util.*;
 
 /**
@@ -65,7 +66,7 @@ public class IntegralOrderServiceImpl  implements IntegralOrderService {
      * @return
      */
     @Override
-    @Transient
+    @Transactional
     public synchronized Map<String, Object> addOrder(String openId, List<IntegralCart> integralCartList) {
         /**
          * 查询商品是否有库存
@@ -81,11 +82,11 @@ public class IntegralOrderServiceImpl  implements IntegralOrderService {
         Member member = memberMapper.getMemberByUserOpenId(openId);
 
         /*获取用户当前等级*/
-        memberService.
+        Integer rankRuleId = memberService.getUserGrad(member.getUserId());
 
          /*创建订单*/
         IntegralOrder IntegralOrder = new IntegralOrder();
-        IntegralOrder.setIntegralOrderOpenId(member.getUserOpenid());
+         IntegralOrder.setIntegralOrderOpenId(member.getUserOpenid());
         IntegralOrder.setIntegralOrderId(OrderNOUtil.createOrderCode(member.getUserId()));
         IntegralOrder.setIntegralOrderUserRemark("");       //用户备注
 
@@ -103,20 +104,37 @@ public class IntegralOrderServiceImpl  implements IntegralOrderService {
             if(integralProduct == null ){
                 throw new RuntimeException("商品不存在,请重新添加");
             }
+
+            boolean isRank = false;
             IntegralProductGrade integralProductGrade = new IntegralProductGrade();
             integralProductGrade.setIntegralProductId(integralProduct.getIntegralProductId());
             List<IntegralProductGrade> integralProductGradeList = integralProductGradeMapper.getIntegralProductGradeList(integralProductGrade);
-            for (integralProductGradeList:) {
-
+            if(integralProductGradeList != null && integralProductGradeList.size() >0){
+                for (IntegralProductGrade ipg:integralProductGradeList) {
+                    if(rankRuleId == ipg.getRankId()){
+                        isRank = true;
+                    }
+                }
+            }else{
+                isRank = true;
+            }
+            if(!isRank){
+                throw new RuntimeException("对不起你的等级无法购买"+integralProduct.getIntegralProductName());
             }
 
             //商品总数量 - 商品已兑换数量
+            if(integralProduct.getIntegralProductNum() == null || integralProduct.getIntegralProductRemainingNum() == null){
+                throw new RuntimeException("数量不足");
+            }
             if(integralProduct.getIntegralProductNum() - integralProduct.getIntegralProductRemainingNum() < 0){
-                throw new RuntimeException(integralProduct.getIntegralProductName() + "商品数量为空");
+                throw new RuntimeException(integralProduct.getIntegralProductName() + "商品已售空");
             }
 
             /*获取商品兑换信息*/
             IntegralProductConvert ipc = integralProductConvertMapper.getIntegralProductConvertByProductId(integralProduct.getIntegralProductId());
+            if(ipc == null ){
+                throw new RuntimeException("该商品不能兑换");
+            }
             if(ipc.getConvertIsPay() == 1){     //需要支付, //1:需要支付 2:不需要支付
                 /*此处写支付*/
                 Integer monTol = ipc.getConvertPrice() * integralCart.getNum();
@@ -151,12 +169,14 @@ public class IntegralOrderServiceImpl  implements IntegralOrderService {
             IntegralProduct ip = new IntegralProduct();
             ip.setIntegralProductId(integralProduct.getIntegralProductId());
             ip.setIntegralProductRemainingNum(integralProduct.getIntegralProductRemainingNum()+integralCart.getNum());
-            flag =  integralProductMapper.update(ip);
+            try{
+                flag =  integralProductMapper.update(ip);
+            }catch (Exception e){
+                throw new RuntimeException("商品减去库存失败");
+            }
             if(flag < 1){
                 throw new RuntimeException("商品减去库存失败");
             }
-
-
         }
 
         if(member.getUserSurplusIntegral() < dfbiTotal){     //剩余积分-朵粉币   <  所需朵粉币数量
@@ -173,19 +193,6 @@ public class IntegralOrderServiceImpl  implements IntegralOrderService {
             IntegralOrder.setIntegralOrderStatus(2);     //直接用朵粉币兑换,状态直接为已兑换
         }
         IntegralOrder.setIntegralOrderDfbi(dfbiTotal);
-        flag = integralOrderMapper.save(IntegralOrder);    //添加订单
-        if(flag < 1){
-            throw new RuntimeException("添加订单失败");
-        }
-
-        for (IntegralItem ii: integralItemList) {
-            ii.setIntegralItemOrderId(IntegralOrder.getIntegralOrderId());
-        }
-
-        flag = integralItemMapper.saveList(integralItemList);
-        if(flag < 1){
-            throw new RuntimeException("添加订单项失败");
-        }
 
         /*判断是否用积分兑换,支付为0,直接操作*/
         if(isPay != 1 || monTotal == 0){
@@ -194,10 +201,13 @@ public class IntegralOrderServiceImpl  implements IntegralOrderService {
                     Integer couponTypeId = ii.getIntegralItemCouponId();
                     CouponType couponType = couponTypeMapper.getCouponTypeById(couponTypeId);
                     CouponItem couponItem = new CouponItem();
+                    String uuidStr = StrUtils.getUUID();
+                    couponItem.setCouponItemId(uuidStr);
+                    ii.setIntegralItemCouponItemId(uuidStr);
                     couponItem.setCouponId(couponTypeId);
 
                     Calendar calendar = Calendar.getInstance();
-                    calendar.add(Calendar.DATE,couponType.getCouponGetDays());  //领取后有效天数
+                     calendar.add(Calendar.DATE,couponType.getCouponGetDays());  //领取后有效天数
 
                     couponItem.setCouponUseEndDate(calendar.getTime());
                     couponItem.setCouponReceiveDate(new Date());
@@ -221,6 +231,21 @@ public class IntegralOrderServiceImpl  implements IntegralOrderService {
                 ii.setIntegralItemOrderId(IntegralOrder.getIntegralOrderId());
             }
         }
+
+        flag = integralOrderMapper.save(IntegralOrder);    //添加订单
+        if(flag < 1){
+            throw new RuntimeException("添加订单失败");
+        }
+
+        for (IntegralItem ii: integralItemList) {
+            ii.setIntegralItemOrderId(IntegralOrder.getIntegralOrderId());
+        }
+
+        flag = integralItemMapper.saveList(integralItemList);
+        if(flag < 1){
+            throw new RuntimeException("添加订单项失败");
+        }
+
         //变动前可用积分总额
         Integer integralBeforeNumber = member.getUserSurplusIntegral();
         //变动后可用积分总额

+ 9 - 0
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/MemberMapper.java

@@ -157,4 +157,13 @@ public interface MemberMapper {
 	 * @return
 	 */
 	Integer getRegisteredNumber();
+
+
+	/**
+	 * 获取当天生日的人。送生日福利
+	 * @param member
+	 * @return
+	 */
+	List<Member> getBirthday(Member member);
+
 }

+ 12 - 0
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/memberMapper.xml

@@ -382,4 +382,16 @@
 			TB_IAMBERRY_USER_USERINFO
 		WHERE user_identity = 1;
 	</select>
+
+	<!-- 获取个人信息-->
+	<select id="getBirthday" resultType="Member" parameterType="Member" >
+		select
+		<include refid="allField"/>
+		from TB_IAMBERRY_USER_USERINFO
+		where
+			date_format(user_create_date,'%Y-%m-%d') = date_format(#{userCreateDate},'%Y-%m-%d')
+		AND
+			user_identity = 1
+	</select>
+
 </mapper>

+ 71 - 1
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/member/MemberServiceImpl.java

@@ -4,6 +4,7 @@ import com.iamberry.app.tool.log.RatFWLogger;
 import com.iamberry.wechat.core.entity.Page;
 import com.iamberry.wechat.core.entity.drp.PlaceInfo;
 import com.iamberry.wechat.core.entity.integral.RankRule;
+import com.iamberry.wechat.core.entity.integral.UseIntegral;
 import com.iamberry.wechat.core.entity.member.Member;
 import com.iamberry.wechat.face.member.MemberService;
 import com.iamberry.wechat.service.ShopUtil;
@@ -18,6 +19,7 @@ import org.apache.commons.lang.StringUtils;
 import org.omg.CORBA.PUBLIC_MEMBER;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Arrays;
 import java.util.HashMap;
@@ -46,6 +48,8 @@ public class MemberServiceImpl implements MemberService {
 	@Autowired
 	private UseIntegralMapper useIntegralMapper;
 	@Autowired
+	private  MemberService memberService;
+	@Autowired
 	private RatFWLogger log;
 	/**
 	 * 根据userid得到会员信息
@@ -351,10 +355,76 @@ public class MemberServiceImpl implements MemberService {
 		Member member = memberDao.getMemberByUserId(userId);
 		List<RankRule> rankRuleList = useIntegralMapper.listRankRule(new RankRule());
 
+		RankRule rr = null;
 		for (RankRule rankRule:rankRuleList) {
+			if(member.getUserIntegral() > rankRule.getRankRuleIntegral()){
+				if(rr == null ){
+					rr = rankRule;
+				}else if(rr.getRankRuleIntegral() <  rankRule.getRankRuleIntegral()){
+					rr = rankRule;
+				}
+			}
+		}
+		if(rr == null){
+			return null;
+		}else{
+			return rr.getRankRuleId();
+		}
+
+	}
+
+	@Override
+	public List<Member> getBirthday(Member member) {
+		return memberDao.getBirthday(member);
+	}
+
+	@Override
+	@Transactional
+	public Integer updaterIntegral(Integer userId,Integer type, Integer integral,String remake) {
+		//type  1:增加积分  2:减少积
+		Integer flag = 0;
+		Member member = this.getMemberByUserId(userId);
+		if(member == null ){
+			return flag;
+		}
+		if(type == 1){
+			if(integral > 0){
+				Member m = new Member();
+				m.setUserId(userId);
+				m.setUserSurplusIntegral(member.getUserSurplusIntegral() + integral);
+				m.setUserIntegral(member.getUserIntegral() + integral);
+				flag = memberService.updateMyMember(m);
+				if(flag < 1){
+					throw new RuntimeException("增加积分失败");
+				}
+
+				UseIntegral useIntegral = new UseIntegral();
+				useIntegral.setUserOpenId(member.getUserOpenid());
+				useIntegral.setIntegralType(1);
+				useIntegral.setIntegralNumber(integral);
+				useIntegral.setIntegralBeforeNumber(member.getUserSurplusIntegral());
+				useIntegral.setIntegralEndNumber(member.getUserSurplusIntegral() + integral);
+				useIntegral.setIntegralRemarks(remake);
+				flag = useIntegralMapper.addUseIntegral(useIntegral);
+				if(flag < 1){
+					throw new RuntimeException("添加积分使用记录失败");
+				}
+			}
+		}else if(type == 2){
+//			if(member.getUserSurplusIntegral() - integral > 0){
+//				Member m = new Member();
+//				m.setUserId(userId);
+//				m.setUserSurplusIntegral(member.getUserSurplusIntegral() - integral);
+//				m.set
+//			}
+//
+//
+//			private Integer userSurplusIntegral;	//剩余积分		朵粉币
+//			private Integer userIntegral;			//总积分 成长值
+//			private Integer userUseIntegral;		//已用积分
 
 		}
-		return 1;
+		return flag;
 	}
 
 }

+ 9 - 0
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/member/dao/MemberDao.java

@@ -141,4 +141,13 @@ public interface MemberDao {
 	 * @return
 	 */
 	Integer getRegisteredNumber();
+
+	/**
+	 * 获取当天生日的人。送生日福利
+	 * @param member
+	 * @return
+	 */
+	List<Member> getBirthday(Member member);
+
+
 }

+ 5 - 0
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/member/dao/imp/MemberDaoImpl.java

@@ -156,4 +156,9 @@ public class MemberDaoImpl  implements MemberDao {
 	public Integer getRegisteredNumber() {
 		return memberMapper.getRegisteredNumber();
 	}
+
+	@Override
+	public List<Member> getBirthday(Member member) {
+		return memberMapper.getBirthday(member);
+	}
 }

+ 7 - 6
tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/integral/IntegralOrderHandler.java

@@ -15,6 +15,8 @@ import com.iamberry.wechat.face.integral.IntegralProductService;
 import com.iamberry.wechat.face.member.MemberService;
 import com.iamberry.wechat.tools.NameUtils;
 import com.iamberry.wechat.tools.ResultInfo;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -30,6 +32,7 @@ import java.util.Map;
 @Controller
 @RequestMapping("/wechat/integral_order")
 public class IntegralOrderHandler {
+    private Logger logger = LoggerFactory.getLogger(IntegralOrderHandler.class);
 
     @Autowired
     private IntegralOrderService integralOrderService;
@@ -69,15 +72,13 @@ public class IntegralOrderHandler {
             }
             Map<String,Object> map = integralOrderService.addOrder(m.getUserOpenid(),integralCartList);
         }catch (Exception e){
-            return new ResultMsg(false,"500","未获取到积分商品,兑换失败",null);
+            e.printStackTrace();
+            logger.info(e.getMessage());
+            return new ResultMsg(false,"500","兑换失败,请重试!",null);
         }
-
-        Map<String,Object> map=new HashMap<String, Object>();
-
         rm.setStatus(true);
         rm.setResultCode(ResultInfo.SUCCESSCODE);
-        rm.setMessage(NameUtils.getConfig("SUCCESSINFO"));
-        rm.setData(map);
+        rm.setMessage(NameUtils.getConfig("兑换成功"));
         return rm;
     }
 

+ 19 - 0
tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/mq/MQTask.java

@@ -9,6 +9,7 @@ import java.util.concurrent.locks.ReentrantLock;
 
 import com.iamberry.wechat.core.entity.admin.ShopSystemRule;
 import com.iamberry.wechat.core.entity.coupon.CouponItem;
+import com.iamberry.wechat.core.entity.member.Member;
 import com.iamberry.wechat.core.entity.order.NumberBacklogDto;
 import com.iamberry.wechat.core.entity.report.Report;
 import com.iamberry.wechat.face.admin.SystemService;
@@ -496,4 +497,22 @@ public class MQTask implements InitializingBean {
 	}
 
 
+	/**
+	 * 生日福利
+	 * 每天0点为当天生日的人送积分
+	 */
+	@SuppressWarnings(value = {"unchecked", "rawtypes"})
+	//	@Scheduled(cron = "0 0/3 * * * ?")//每三分钟执行一次
+//			//每天1点触发
+	public void birthday() {
+		logger.info("生日福利");
+		Member memeber  = new Member();
+		memeber.setUserBirthDate(new Date());
+		/*查询当前生日的人*/
+		List<Member> memberList =  memberService.getBirthday(memeber);
+		for (Member m :memberList) {
+
+		}
+
+	}
 }