def update_jielong_by_id(jielong_id, param_dict): jielong_id = param_dict.get("operation").get("id") title = param_dict.get("operation").get("title") description = param_dict.get("operation").get("info") images = param_dict.get("operation").get("images") small_image = " ".join(images) begin_time = UtilDateTime.timestr_to_datetime( param_dict.get("others").get("start_time")) end_time = UtilDateTime.timestr_to_datetime( param_dict.get("others").get("end_time")) small_images = small_image commission_rate = param_dict.get("others").get("commission") wechat_no = param_dict.get("others").get("wechat_id") is_logistics = param_dict.get("others").get("logistics") jielong_dict = { "title": title, "description": description, "small_images": small_images, "begin_time": begin_time, "end_time": end_time, "commission_rate": commission_rate, "wechat_no": wechat_no, "is_logistics": is_logistics } jielong = JieLong.objects.update_or_create(id=jielong_id, defaults=jielong_dict) return True
def add_jielong(request, **kwargs): user_id = kwargs.get("userid") # user_id = 1 param_dict = json.loads(request.body) images = param_dict.get("operation").get("images") small_image = " ".join(images) jielong_id = param_dict.get("operation").get("id") try: if not jielong_id or jielong_id == "": jielong = JieLong() jielong.passport_user_id = user_id jielong.title = param_dict.get("operation").get("title") jielong.description = param_dict.get("operation").get("info") jielong.begin_time = UtilDateTime.timestr_to_datetime( param_dict.get("others").get("start_time")) jielong.end_time = UtilDateTime.timestr_to_datetime( param_dict.get("others").get("end_time")) jielong.small_images = small_image jielong.commission_rate = param_dict.get("others").get( "commission") jielong.wechat_no = param_dict.get("others").get("wechat_id") jielong.is_logistics = param_dict.get("others").get("logistics") jielong.save() jielong_service.edit_jielong_product(param_dict, jielong.id) jielong_id = jielong.id logger.info( "add_jielong result add-opt:user_id :%s;jielong_id %s" % (user_id, jielong_id)) else: jielong_service.update_jielong_by_id(jielong_id, param_dict) jielong_service.edit_jielong_product(param_dict, jielong_id) logger.info( "add_jielong result update-opt:user_id :%s;jielong_id %s" % (user_id, jielong_id)) result = { "meta": { "msg": "", "code": 0 }, "results": { "jielong_id": jielong_id } } return JsonResponse(result, encoder=DjangoJSONEncoder) except Exception as e: logger.info( "add_jielong exception:error_code:30002;error_msg:%s;param %s" % (e, param_dict)) result = {"meta": {"msg": e, "code": 30002}, "results": {}} return JsonResponse(result, encoder=DjangoJSONEncoder)
def get_jielong_list_by_spread_user(user_id, start, end): ''' 根据发起人id获取接龙列表 :param user_id: :return: ''' jielongs = JieLong.objects.filter(passport_user_id=user_id).order_by( "-create_time", "status") count = jielongs.count() jielongs = jielongs[start:end] if count > end: has_next = True else: has_next = False jielong = [] if jielongs: for j in jielongs: browse_num = j.browse_num orderlist, count = OrderService.order_list(jielong_id=j.id) total_price = OrderService.total_order_price(jielong_id=j.id) # order_total_price = total_price["order_num"] order_total_price = total_price if not order_total_price: order_total_price = "0.00" item = { "id": j.id, "title": j.title, "status": get_jielong_status(j.id), "create_time": get_time_span(UtilDateTime.utc2local(j.create_time)), "nick": get_covert_user_nickname(j.id, j.passport_user.wechatuser.nickname), "avatar_url": covert_avatar_url(j.passport_user.wechatuser.avatar_url), "info": "%s人浏览 , %s人参加,总收入%s元" % (browse_num, count, order_total_price) } jielong.append(item) result = { "meta": { "msg": "", "code": 0 }, "results": { "has_next": has_next, "items": jielong } } return result
def get_jielong_status(jielong_id): current_date = datetime.now() try: jielong = JieLong.objects.get(id=jielong_id) jielong_begin_time = UtilDateTime.utc2local(jielong.begin_time) jielong_begin_time = UtilDateTime.timestr_to_datetime( jielong_begin_time) jielong_end_time = UtilDateTime.utc2local(jielong.end_time) jielong_end_time = UtilDateTime.timestr_to_datetime(jielong_end_time) if jielong.status != 1: if jielong_begin_time > current_date: return 2 elif jielong_end_time < current_date: return 1 else: return jielong.status else: return jielong.status except JieLong.DoesNotExist: return 1 except Exception as e: print(e)
def query_jielong(request): activity_id = request.GET.get("jielong_id", None) if not activity_id: result = {"meta": {"msg": "API请求参数错误", "code": 90001}, "results": {}} return JsonResponse(result, encoder=DjangoJSONEncoder) jielongs = JieLong.objects.filter(id=activity_id) if jielongs: jielong = jielongs[0] result = { "meta": { "msg": "", "code": 0 }, "results": { "operation": { "id": jielong.id, "title": jielong.title, "info": jielong.description, "images": [sm for sm in jielong.small_images.split(" ")] }, "goods": jielong_service.get_product_list_by_jielong(jielong.id), "others": { "end_time": UtilDateTime.utc2local(jielong.end_time), "start_time": UtilDateTime.utc2local(jielong.begin_time), "logistics": jielong.is_logistics, "wechat_id": jielong.wechat_no, "commission": int(jielong.commission_rate) } } } return JsonResponse(result, encoder=DjangoJSONEncoder) else: result = {"meta": {"msg": "团购活动未找到", "code": 30001}, "results": {}} return JsonResponse(result, encoder=DjangoJSONEncoder)
def get_share_browse_user_list(request, **kwargs): """ 我的分享:浏览的人 :param request: :return: """ user_id = kwargs.get("userid") jielong_id = request.GET.get("jielong_id", None) pagination = Pagination(request) start = pagination.start end = pagination.end results, items, has_next = {}, [], False if not jielong_id: code, msg = 90001, "缺少参数" logger.info("share_browser_list, user_id: %s, code:%s; msg: %s" % (user_id, code, msg)) result = {"meta": {"msg": msg, "code": code}, "results": results} return JsonResponse(result, encoder=DjangoJSONEncoder) jielong_id = int(jielong_id) share_user_relations = ShareUserRelation.objects.filter( share_user_id=user_id, jielong_id=jielong_id) count = share_user_relations.count() logger.info("share_browser, jielong_id:%s; count:%s, user_id: %s" % (jielong_id, count, user_id)) if count > 0: share_user_relations = share_user_relations.order_by( "-update_time")[start:end] if count > end: has_next = True for share_user_relation in share_user_relations: items_dict = {} browse_user = share_user_relation.browse_user items_dict["avatar_url"] = jielong_service.covert_avatar_url( browse_user.wechatuser.avatar_url) items_dict["nick"] = jielong_service.get_covert_user_nickname( browse_user.id, browse_user.wechatuser.nickname) items_dict["create_time"] = get_time_span( UtilDateTime.utc2local(share_user_relation.update_time)) items.append(items_dict) results["has_next"] = has_next results["items"] = items results["subTitle"] = "%s人浏览" % count code, msg = 0, "success" result = {"meta": {"msg": msg, "code": code}, "results": results} return JsonResponse(result, encoder=DjangoJSONEncoder)
def get_time_span(local_time): current_time = datetime.now() local_time = UtilDateTime.timestr_to_datetime(local_time) days = (current_time - local_time).days seconds = ((current_time - local_time).seconds) if days > 0: time_tip = "%s天前" % days elif seconds < 300: time_tip = "刚刚" elif seconds < 3600: second = seconds / 60 time_tip = "%s分钟前" % int(second) else: hour = seconds / 3600 time_tip = "%s小时前" % int(hour) return time_tip
def get_my_join_jielong_detail(request): order_id = request.GET.get("order_id", "") results = OrderService.order_detail(order_id) if results: jielong_id = results["activity_id"] jielong = JieLong.objects.get(id=jielong_id) p_nickname = jielong.passport_user.wechatuser.nickname p_avatar_url = jielong.passport_user.wechatuser.avatar_url wechat_no = jielong.wechat_no results["nickname"] = p_nickname results["avatar_url"] = p_avatar_url results["wechat_no"] = wechat_no results["time_info"] = "%s发起" % (get_time_span( UtilDateTime.utc2local(jielong.create_time))) results["title"] = jielong.title results["order_time"] = results["order_time"].strftime( "%Y-%m-%d %H:%M:%S") results["activity_status"] = jielong_service.get_jielong_status( jielong_id) result = {"meta": {"msg": "", "code": 0}, "results": results} return JsonResponse(result, encoder=DjangoJSONEncoder)
def get_spread_apply_user_list(request, **kwargs): """ 我的推广者--申请者列表 :param request: :return: """ user_id = kwargs.get("userid") pagination = Pagination(request) start = pagination.start end = pagination.end results, items, has_next = {}, [], False user_relations = JieLongSpreadUserRelation.objects.filter( invite_sponsor_id=user_id, status=0) count = user_relations.count() logger.info("applying_users, user_id: %s; count: %s" % (user_id, count)) if count > 0: user_relations = user_relations.order_by("-update_time")[start:end] if count > end: has_next = True for user_relation in user_relations: items_dict = {} items_dict["id"] = user_relation.passport_user.id items_dict[ "nick"] = user_relation.passport_user.wechatuser.nickname items_dict[ "avatar_url"] = user_relation.passport_user.wechatuser.avatar_url items_dict["wechat_info"] = "微信 : %s" % user_relation.wechat_no items_dict["content"] = user_relation.apply_reason items_dict["create_time"] = "申请时间 %s" % UtilDateTime.utc2local( user_relation.update_time) items.append(items_dict) results["count"] = count results["has_next"] = has_next results["items"] = items code, msg = 0, "success" result = {"meta": {"msg": msg, "code": code}, "results": results} return JsonResponse(result, encoder=DjangoJSONEncoder)
def get_jielong_list(request, **kwargs): pagination = Pagination(request) start = pagination.start end = pagination.end user_id = kwargs.get("userid", None) ############################## c_ids, p_ids, m_ids = jielong_service.get_jielong_ids(user_id) jielongs = JieLong.objects.filter(id__in=m_ids).order_by( "-display_order", "-create_time")[start:end] # count = jielongs.count() count = len(m_ids) ############################## # jielongs = jielongs[start:end] if count > end: has_next = True else: has_next = False jielong = [] if jielongs: for j in jielongs: order_list, count = OrderService.order_list(page_no=1, page_size=5, jielong_id=j.id) jielong_detail = { "id": j.id, "avatar_url": jielong_service.covert_avatar_url( j.passport_user.wechatuser.avatar_url), "nickname": jielong_service.get_covert_user_nickname( j.passport_user.id, j.passport_user.wechatuser.nickname), "time_info": "%s发起 , %s人看过 , %s人参与" % (get_time_span(UtilDateTime.utc2local( j.create_time)), j.browse_num, count), "title": j.title, "thumb_images": [sm for sm in j.small_images.split(" ")] if j.small_images else [], "status": jielong_service.get_jielong_status(j.id), "details": jielong_service.format_index_jielong_order(order_list), "label": jielong_service.get_jielong_label(j.id, c_ids, p_ids) } jielong.append(jielong_detail) result = { "meta": { "msg": "", "code": 0 }, "results": { "has_next": has_next, "items": jielong } } return JsonResponse(result, encoder=DjangoJSONEncoder)
def get_jielong_detail(activity_id, user_id): try: jielong = JieLong.objects.get(id=activity_id) create_time = "%s发起" % get_time_span( UtilDateTime.utc2local(jielong.create_time)) end_time = "截止时间:%s" % (UtilDateTime.utc2local(jielong.end_time)) opt_start = UtilDateTime.utc2local2m(jielong.create_time) opt_end = UtilDateTime.utc2local2m(jielong.end_time) opt_time = "活动时间:%s 至 %s" % (opt_start, opt_end) browse_num = "%s人看过" % (jielong.browse_num) title = jielong.title desc = jielong.description sm = [sm for sm in jielong.small_images.split(" ")] products = JielongProductRelation.objects.filter( jielong_id=activity_id, is_valid=0) product = [] share_browse_num = get_browse_nums_by_spreaduser(activity_id, user_id) if products: for p in products: if p.product.small_images: p_sm = [p_sm for p_sm in p.product.small_images.split(" ")] small_image = p.product.small_images.split(" ")[0] else: small_image = "https://i1.hemaweidian.com/hsupload/67c7319bfa9323111576a20ee2a4b2f6f1f3dd98d1efa63ee62088ae85be0d08.jpg" p_sm = [ "https://i1.hemaweidian.com/hsupload/67c7319bfa9323111576a20ee2a4b2f6f1f3dd98d1efa63ee62088ae85be0d08.jpg" ] item = { "goods_id": p.product.id, "pic_url": small_image, "pics_url": p_sm, "title": p.product.title, "specifications_info": p.product.sku_desc, "detail_info": p.product.description, "order_info": "已团%s" % (p.product.volume), "price": p.product.zk_final_price, "sku_num": p.product.sku_num, "sku_default_num": "0" } product.append(item) except JieLong.DoesNotExist: result = {"meta": {"msg": "活动不存在", "code": 30001}, "results": {}} return result spread_user = JieLongSpreadUserRelation.objects.filter( passport_user_id=user_id, invite_sponsor_id=jielong.passport_user_id, status=1) if spread_user: share_content = "分享团购产生成交,您就能获得交易额%s%s的奖励" % (jielong.commission_rate, "%") else: share_content = "" order_list, count = OrderService.order_list(spread_user_id=user_id, jielong_id=activity_id) result = { "meta": { "msg": "", "code": 0 }, "results": { "seller_id": jielong.passport_user.id, "avatar_url": covert_avatar_url(jielong.passport_user.wechatuser.avatar_url), "nickname": get_covert_user_nickname( jielong.passport_user.id, jielong.passport_user.wechatuser.nickname), # "share_image":"http://image.hemazou.com/adminupload/bad9109096bdb7e6cb729cc91d66f7e8e8c141d8d24af7c52054e300e8d45bf6.jpg", "share_content": share_content, "openid": jielong.passport_user.wechatuser.openid, "status": get_jielong_status(jielong.id), "create_time": create_time, "end_time": end_time, "opt_time": opt_time, "view_history": browse_num, "title": title, "detail_info": desc, "pic_url": sm, "goods": product, "invite_info": { "title": "我已邀请%s人浏览 , %s人下单" % (share_browse_num, count) } } } return result